6 SUBROUTINE dslt_dep (PSVT, PFSVT, PUSTAR, PRESA, PTA, PRHODREF, &
7 pemissig, pemisradius, kpmode, pdensity, pmolarweight, &
8 pconvertfacm0, pconvertfacm6, pconvertfacm3, &
9 ovarsig, orgfix, hvermod )
34 USE modi_dslt_velgrav1d
36 USE yomhook
,ONLY : lhook, dr_hook
37 USE parkind1
,ONLY : jprb
44 REAL,
DIMENSION(:,:),
INTENT(IN) :: psvt
45 REAL,
DIMENSION(:,:),
INTENT(INOUT) :: pfsvt
46 REAL,
DIMENSION(:),
INTENT(IN) :: pustar
47 REAL,
DIMENSION(:),
INTENT(IN) :: presa
48 REAL,
DIMENSION(:),
INTENT(IN) :: pta
49 REAL,
DIMENSION(:),
INTENT(IN) :: prhodref
50 REAL,
DIMENSION(:),
INTENT(IN) :: pemissig
51 REAL,
DIMENSION(:),
INTENT(IN) :: pemisradius
52 INTEGER,
INTENT(IN) :: kpmode
53 REAL,
INTENT(IN) :: pdensity
54 REAL,
INTENT(IN) :: pmolarweight
55 REAL,
INTENT(OUT) :: pconvertfacm0
56 REAL,
INTENT(OUT) :: pconvertfacm6
57 REAL,
INTENT(OUT) :: pconvertfacm3
58 LOGICAL,
INTENT(IN) :: ovarsig
59 LOGICAL,
INTENT(IN) :: orgfix
60 CHARACTER(LEN=6),
INTENT(IN) :: hvermod
64 REAL ,
DIMENSION(SIZE(PSVT,1), KPMODE) :: zsig, zrg, zvg, zdg
65 REAL ,
DIMENSION(SIZE(PSVT,1), KPMODE) :: zstn
66 REAL ,
DIMENSION(SIZE(PSVT,1), KPMODE) :: zsc
67 REAL ,
DIMENSION(SIZE(PSVT,1), KPMODE) :: zrd
68 REAL ,
DIMENSION(SIZE(PSVT,1), KPMODE*3) :: zvgk, zdpk
69 REAL ,
DIMENSION(SIZE(PSVT,1), KPMODE*3) :: zvd
70 REAL ,
DIMENSION(SIZE(PSVT,1), SIZE(PSVT,2)) :: zsvt
71 REAL ,
DIMENSION(SIZE(PSVT,1)) :: zustar, zresa
72 REAL ,
DIMENSION(SIZE(PSVT,1)) :: znu
73 REAL ,
DIMENSION(SIZE(PSVT,1)) :: zmu
74 INTEGER,
DIMENSION(KPMODE) :: nm0
75 INTEGER,
DIMENSION(KPMODE) :: nm3
76 INTEGER,
DIMENSION(KPMODE) :: nm6
78 REAL(KIND=JPRB) :: zhook_handle
87 IF (lhook) CALL dr_hook(
'DSLT_DEP',0,zhook_handle)
89 zustar(:) = max(pustar(:), 1.e-20)
90 zresa(:) = min(max(presa(:), 1.e-20), 9999.)
92 zsvt(:,:) = max(psvt(:,:), xsurf_tiny)
105 ELSE IF (orgfix)
THEN
116 pconvertfacm0 = pmolarweight / xavogadro
117 pconvertfacm6 = pconvertfacm0 * 1.d6
118 pconvertfacm3 = 4./3. * xpi * pdensity / 1.d18
120 CALL
dsltmoment2size(zsvt, prhodref, pemisradius, pemissig, nm0, nm3, nm6, &
121 pconvertfacm0, pconvertfacm6, pconvertfacm3, &
122 ovarsig, orgfix, psig1d=zsig, prg1d=zrg )
124 CALL
dslt_velgrav1d(zsig, zrg, pta, prhodref, pdensity, zmu, zvgk, zdpk, zvg, zdg)
126 znu(:) = zmu(:)/prhodref(:)
128 zvgk(:,:) = max(zvgk(:,:),1.e-20)
129 zdpk(:,:) = max(zdpk(:,:),1.e-40)
131 zvg(:,:) = max(zvg(:,:),1.e-20)
132 zdg(:,:) = max(zdg(:,:),1.e-40)
141 zstn(:,jn) = zvg(:,jn)*zustar(:)**2/(xg*znu(:))
142 zstn(:,jn) = max(zstn(:,jn), 0.05)
146 zsc(:,jn) = znu(:)/zdg(:,jn)
149 zrd(:,jn) = zustar(:) * (zsc(:,jn)**(-2./3.)+ 10**(-3./zstn(:,jn)))
154 zrd(:,jn) = 1. / zrd(:,jn)
168 zvd(:,jn)= zresa(:) + zrd(:,j0) + zresa(:)*zrd(:,j0)*zvgk(:,jn)
171 zvd(:,jn)= max(zvd(:,jn), 1.e-10)
174 IF (hvermod==
'CMDVER')
THEN
175 zvd(:,jn)= zvgk(:,jn) &
181 zvd(:,jn) = 1./zvd(:,jn)
188 pfsvt(:,nm3(jn)) = pfsvt(:,nm3(jn)) - psvt(:,nm3(jn)) * zvd(:,2+(jn-1)*3)
191 IF (lhook) CALL dr_hook(
'DSLT_DEP',1,zhook_handle)
subroutine dslt_velgrav1d(PSIG, PRG, PTA, PRHODREF, PRHOP, PMU, PVGK, PDPK, PVGG, PDPG)
subroutine dslt_dep(PSVT, PFSVT, PUSTAR, PRESA, PTA, PRHODREF, PEMISSIG, PEMISRADIUS, KPMODE, PDENSITY, PMOLARWEIGHT, PCONVERTFACM0, PCONVERTFACM6, PCONVERTFACM3, OVARSIG, ORGFIX, HVERMOD)
subroutine dsltmoment2size(PSVT, PRHODREF, PEMISRADIUS, PEMISSIG, KM0, KM3, KM6, PCONVERTFACM0, PCONVERTFACM6, PCONVERTFACM3, OVARSIG, ORGFIX, PSIG1D, PRG1D, PN1D, PMASS1D, PM1D)