6 PUSTAR & !I [m/s] Wind friction speed
7 ,PRHOA & !I [kg/m3] air density at 2m height
8 ,PWG & !I [m3/m3] volumetric water content
9 ,PZ0 & !I [m] roughness length of surface
10 ,PWSAT & !I [m3 m-3] saturation liquid water content
11 ,PCLAY & !I [frc] mass fraction clay
12 ,PSAND & !I [frc] mass fraction sand
13 ,PDST_EROD & !I [frc] erodible surface
14 ,PWIND10M & !I [m/s] wind at 10m altitude
15 ,PSFDST & !O [kg/m2/sec] Vertical dust flux
16 ,KSIZE & !I [nbr] number of points for calculation
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 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 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 dustflux_get_mb(PUSTAR, PRHOA, PWG, PZ0, PWSAT, PCLAY, PSAND, PDST_EROD, PWIND10M, PSFDST, KSIZE)
real, parameter xflx_mss_fdg_fctm
subroutine vwc2gwc(OFLG_MBL, PVWC_SAT, PVWC_SFC, PGWC_SFC)
subroutine distribution(KMODE, PDLNDP, KTEXT, PDP, PDSRLV, PZS0)
subroutine frc_thr_ncr_wtr_get(OFLG_MBL, PGWC_THR, PGWC_SFC, PFRC_THR_NCR_WTR)
real, parameter xdmt_slt_opt
subroutine wnd_frc_slt_get(OFLG_MBL, PWND_FRC, PWND_RFR, PWND_RFR_THR_SLT, PWND_FRC_SLT)
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)
subroutine wnd_frc_thr_slt_get(PDNS_MDP, PDP, PWND_FRC_THR_SLT)