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
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
89 zustar(:) = max(pustar(:), 1.e-20)
90 zresa(:) = min(max(presa(:), 1.e-20), 9999.)
105 ELSE IF (orgfix)
THEN 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)
subroutine dslt_velgrav1d(PSIG, PRG, PTA, PRHODREF, PRHOP, PMU, PVGK, PDPK, PVGG, PDPG)
real, parameter xsurf_tiny
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)