21 USE modd_dstmbl, ONLY : xflx_mss_fdg_fctm, ntex, nmode, ndp, nbin, xcst_slt, &
25 USE yomhook
,ONLY : lhook, dr_hook
26 USE parkind1
,ONLY : jprb
31 INTEGER,
INTENT(IN) :: ksize
32 REAL,
INTENT(IN),
DIMENSION(KSIZE) :: pustar
33 REAL,
INTENT(IN),
DIMENSION(KSIZE) :: prhoa
34 REAL,
INTENT(IN),
DIMENSION(KSIZE) :: pclay
35 REAL,
INTENT(IN),
DIMENSION(KSIZE) :: psand
36 REAL,
INTENT(IN),
DIMENSION(KSIZE) :: pdst_erod
37 REAL,
INTENT(IN),
DIMENSION(KSIZE) :: pwg
38 REAL,
INTENT(IN),
DIMENSION(KSIZE) :: pwsat
39 REAL,
INTENT(IN),
DIMENSION(KSIZE) :: pz0
40 REAL,
INTENT(IN),
DIMENSION(KSIZE) :: pwind10m
42 REAL,
INTENT(OUT),
DIMENSION(KSIZE) :: psfdst
54 LOGICAL,
DIMENSION(KSIZE) :: gflg_mbl
56 REAL,
DIMENSION(KSIZE) :: zwnd_rfr
57 REAL,
DIMENSION(KSIZE) :: zwnd_frc_thr_slt
58 REAL,
DIMENSION(KSIZE) :: zwnd_rfr_thr_slt
59 REAL,
DIMENSION(KSIZE) :: zgwc_sfc
60 REAL,
DIMENSION(KSIZE) :: zfrc_thr_ncr_wtr
61 REAL,
DIMENSION(KSIZE) :: zfrc_thr_ncr_drg
62 REAL,
DIMENSION(KSIZE) :: zwnd_frc_slt
63 REAL,
DIMENSION(KSIZE,NBIN) :: zflx_mss_hrz_slt_ttl_wbn
64 REAL,
DIMENSION(KSIZE,NBIN) :: zflx_mss_vrt_dst_ttl_wbn
65 REAL,
DIMENSION(KSIZE) :: zdst_slt_flx_rat_ttl
66 REAL,
DIMENSION(KSIZE) :: zsilt
67 REAL,
DIMENSION(KSIZE) :: zwprm
68 INTEGER,
DIMENSION(KSIZE) :: itext
69 REAL,
DIMENSION(NTEX,NDP) :: zdsrlv
70 REAL,
DIMENSION(KSIZE,NBIN) :: zdsbin
71 REAL,
DIMENSION(KSIZE,NBIN) :: zgamma
72 INTEGER,
DIMENSION(NBIN+1) :: iseuil
73 REAL,
DIMENSION(NBIN,2) :: zpcen
74 REAL,
DIMENSION(NTEX) :: zzs0
75 REAL,
DIMENSION(NDP) :: zdp
76 REAL :: zdlndp, zrgh_z0
81 REAL(KIND=JPRB) :: zhook_handle
83 IF (lhook) CALL dr_hook(
'DUSTFLUX_GET_MB',0,zhook_handle)
91 zwnd_rfr(:) = pwind10m(:)
94 zflx_mss_vrt_dst_ttl_wbn(:,:) = 0.d0
95 zflx_mss_hrz_slt_ttl_wbn(:,:) = 0.d0
113 zsilt(i) = 1.0 - pclay(i) - psand(i)
114 IF (zsilt(i) <= 0.) zsilt(i) = 0.0
115 zwprm(i) = 3.0*pclay(i) * (0.17 + 0.0014 * pclay(i))
116 zwprm(i) = min( 0.15, max(0.053, zwprm(i)) )
119 IF ( pclay(i) >= 0.28 )
THEN
120 IF ( psand(i) >= 0.45 )
THEN
121 IF (pclay(i) >= 0.36 )
THEN
128 ELSEIF ( pclay(i) >= 0.40 )
THEN
129 IF ( zsilt(i) >= 0.40 )
THEN
136 ELSEIF (psand(i) >= 0.20 )
THEN
147 IF ( zsilt(i) >= 0.8 .AND. pclay(i) < 0.12 )
THEN
150 ELSEIF ( pclay(i) < 0.28 )
THEN
151 IF ( zsilt(i) >= 0.5 )
THEN
154 ELSEIF ( pclay(i) >= 0.20 )
THEN
155 IF ( zsilt(i) >= 0.28 )
THEN
169 IF ( psand(i) >= (0.3*pclay(i) + 0.87) )
THEN
172 ELSEIF ( psand(i) >= (pclay(i) + 0.7) )
THEN
175 ELSEIF ( psand(i) >= 0.52 .AND. pclay(i) < 0.20 )
THEN
178 ELSEIF ( psand(i) >= (0.5 - pclay(i)) )
THEN
179 IF ( pclay(i) < 0.07 )
THEN
182 ELSEIF ( pclay(i) < 0.20 )
THEN
191 CALL
distribution(nmode, zdlndp, itext, zdp, zdsrlv, zzs0)
193 iseuil = (/0, 30, 40, 65, ndp/)
194 zpcen(:,1) = (/0.005, 0.006, 0.1, 0.10/)
195 zpcen(:,2) = (/0.005, 0.006, 1.0, 0.12/)
200 DO idp = iseuil(is)+1, iseuil(is+1)
203 zdsbin(i,is) = zdsbin(i,is) + zdsrlv(itex,idp) / float(iseuil(is+1)-iseuil(is))
205 zgamma(i,is) = zpcen(is,1)
207 zgamma(i,is) = zpcen(is,2)
214 DO i = 1,
SIZE(zfrc_thr_ncr_drg)
217 IF (zrgh_z0 <= zzs0(itex)) zrgh_z0 = zzs0(itex)
224 CALL
vwc2gwc(gflg_mbl, pwsat, pwg, zgwc_sfc)
227 zfrc_thr_ncr_wtr(:) = max(zfrc_thr_ncr_wtr(:), 1.0)
233 IF (gflg_mbl(i))
THEN
234 zwnd_frc_thr_slt(i) = zwnd_frc_thr_slt(i) * zfrc_thr_ncr_wtr(i) &
235 * zfrc_thr_ncr_drg(i)
236 zwnd_rfr_thr_slt(i) = zwnd_rfr(i) * zwnd_frc_thr_slt(i) / pustar(i)
243 CALL
wnd_frc_slt_get(gflg_mbl, pustar, zwnd_rfr, zwnd_rfr_thr_slt, zwnd_frc_slt)
247 zwnd_frc_slt, zwnd_frc_thr_slt, zflx_mss_hrz_slt_ttl_wbn(:,is))
253 zdst_slt_flx_rat_ttl, zflx_mss_vrt_dst_ttl_wbn(:,is))
257 psfdst(i) = psfdst(i) + pdst_erod(i) * xflx_mss_fdg_fctm * zflx_mss_vrt_dst_ttl_wbn(i,is)
subroutine dustflux_get_mb(PUSTAR, PRHOA, PWG, PZ0, PWSAT, PCLAY, PSAND, PDST_EROD, PWIND10M, PSFDST, KSIZE)
subroutine wnd_frc_slt_get(OFLG_MBL, PWND_FRC, PWND_RFR, PWND_RFR_THR_SLT, PWND_FRC_SLT)
subroutine distribution(KMODE, PDLNDP, KTEXT, PDP, PDSRLV, PZS0)
subroutine wnd_frc_thr_slt_get(PDNS_MDP, PDP, PWND_FRC_THR_SLT)
subroutine frc_thr_ncr_wtr_get(OFLG_MBL, PGWC_THR, PGWC_SFC, PFRC_THR_NCR_WTR)
subroutine vwc2gwc(OFLG_MBL, PVWC_SAT, PVWC_SFC, PGWC_SFC)
subroutine flx_mss_vrt_dst_aust_get(OFLG_MBL, PDNS_MDP, PWND_FRC_THR_SLT, PFLX_MSS_HRZ_SLT_TTL, PDST_SLT_FLX_RAT_TTL, PFLX_MSS_VRT_DST_TTL)
subroutine frc_thr_ncr_drg_get(PRGH_MMN_MBL, PRGH_MMN_SMT, PFRC_THR_NCR_DRG)
subroutine flx_mss_hrz_slt_ttl_whi79_get(PCOEFF, OFLG_MBL, PDNS_MDP, PWND_FRC, PWND_FRC_THR_SLT, PFLX_MSS_HRZ_SLT_TTL)