33 USE modi_ch_aer_velgrav1d
45 REAL,
DIMENSION(:,:),
INTENT(IN) :: PSVT
46 REAL,
DIMENSION(:,:),
INTENT(INOUT) :: PFSVT
47 REAL,
DIMENSION(:),
INTENT(IN) :: PUSTAR
48 REAL,
DIMENSION(:),
INTENT(IN) :: PRESA
49 REAL,
DIMENSION(:),
INTENT(IN) :: PTA
50 REAL,
DIMENSION(:),
INTENT(IN) :: PRHODREF
55 REAL ,
DIMENSION(SIZE(PSVT,1), JPIN) :: ZRD
56 REAL ,
DIMENSION(SIZE(PSVT,1), JPIN) :: ZVD
57 REAL ,
DIMENSION(SIZE(PSVT,1), JPIN) :: Stn
58 REAL ,
DIMENSION(SIZE(PSVT,1), JPIN) :: Sc
59 REAL ,
DIMENSION(SIZE(PSVT,1)) :: WCn
60 REAL ,
DIMENSION(SIZE(PSVT,1)) :: ZUSTAR, ZRESA
61 REAL ,
DIMENSION(SIZE(PSVT,1), JPIN):: ZWORK
62 REAL ,
DIMENSION(SIZE(PSVT,1),NSP+NCARB+NSOA,JPMODE):: ZCTOTA, ZCCTOT
63 REAL,
DIMENSION(SIZE(PSVT,1),JPMODE):: ZRHOP
64 REAL,
DIMENSION(SIZE(PSVT,1)) :: ZNU
65 REAL,
DIMENSION(SIZE(PSVT,1),JPIN) :: Dg,zvs,zvsg, zdsg
66 REAL,
DIMENSION(SIZE(PSVT,1)) :: ZMU
67 REAL,
DIMENSION(SIZE(PSVT,1),JPIN) :: ZVGK, ZDPK
68 REAL,
DIMENSION(SIZE(PSVT,1),JPMODE) :: ZSIG, ZRG, ZN
69 REAL,
DIMENSION(SIZE(PSVT,1),JPMODE) :: ZVG, ZDG
70 REAL,
DIMENSION(SIZE(PSVT,1), SIZE(PSVT,2)) :: ZSVT
71 REAL,
DIMENSION(SIZE(PSVT,1)) :: ZSUM
72 REAL,
DIMENSION(NSP+NCARB+NSOA) :: ZRHOI
73 INTEGER :: JT, JJ, JSV, JN
75 REAL :: ZDEN2MOL, ZG, ZTMP1, ZTMP2, ZTMP3, ZTMP4
76 REAL(KIND=JPRB) :: ZHOOK_HANDLE
98 zustar(:) = max(pustar(:), 1.e-20)
99 zresa(:) = min(max(presa(:), 1.e-20), 9999.)
101 DO jsv=1,
SIZE(psvt,2)
102 zsvt(:,jsv) = psvt(:,jsv) *
xmd / (
xavogadro * prhodref(:))
105 CALL ppp2aero_surf(zsvt, prhodref, psig1d=zsig, prg1d=zrg, pn1d=zn, pctota=zctota)
110 zsum(:)=zsum(:)+zctota(:,jj,jn)/zrhoi(jj)
114 zcctot(:,jj,jn) = zctota(:,jj,jn)/zrhoi(jj)/zsum(:)
115 zrhop(:,jn)=zrhop(:,jn)+zcctot(:,jj,jn)*zrhoi(jj)
118 CALL ch_aer_velgrav1d(zsig, zrg, pta, prhodref, zrhop, zmu, zvgk,zdpk, zvg, zdg)
119 dg(:,:) = max(zdpk(:,:),1.e-40)
120 zvs(:,:) = max(zvgk(:,:),1.e-20)
121 znu(:) = zmu(:)/prhodref(:)
124 zvsg(:,3*jn+jj-2) = max(zvg(:,jn),1.e-20)
125 zdsg(:,3*jn+jj-2) = max(zdg(:,jn),1.e-40)
132 sc(:,jn)= znu(:)/zdsg(:,jn)
150 IF (zustar(jt).GE.1.e-10)
THEN 156 stn(jt,jn)= zvsg(jt,jn)*zustar(jt)**2/(zg*znu(jt))
157 ztmp1=sc(jt,jn)**(-2./3.)
158 ztmp2=(-3./stn(jt,jn))
159 IF (ztmp2.gt.-10)
then 171 zrd(jt,jn) = zustar(jt) * ztmp4
172 zrd(jt,jn) = max(zrd(jt,jn),1.e-10)
173 zrd(jt,jn) = 1. / zrd(jt,jn)
174 zwork(jt,jn)= zresa(jt) + zrd(jt,jn) + zresa(jt)*zrd(jt,jn)*zvs(jt,jn)
175 zwork(jt,jn)= max(zwork(jt,jn), 1.e-10)
176 zwork(jt,jn)= zvs(jt,jn) + 1./ zwork(jt,jn)
179 zvd(jt,jn) = zvd(jt,jn) + zwork(jt,jn)
190 DO jsv=1,
SIZE(psvt,2)-1-(
jpmode+m6i+m6j),2
191 pfsvt(:,jsv) = pfsvt(:,jsv) - psvt(:,jsv) * zvd(:,2)
193 DO jsv=2,
SIZE(psvt,2)-(
jpmode+m6i+m6j),2
194 pfsvt(:,jsv) = pfsvt(:,jsv) - psvt(:,jsv) * zvd(:,5)
197 jsv =
SIZE(psvt,2)-(1+m6i+m6j)
198 pfsvt(:,jsv) = pfsvt(:,jsv) - psvt(:,jsv) * zvd(:,1)
200 jsv =
SIZE(psvt,2)-(m6i+m6j)
201 pfsvt(:,jsv) = pfsvt(:,jsv) - psvt(:,jsv) * zvd(:,4)
203 jsv =
SIZE(psvt,2)-m6j
204 IF (
lvarsigi) pfsvt(:,jsv) = pfsvt(:,jsv) - psvt(:,jsv) * zvd(:,3)
207 IF (
lvarsigj) pfsvt(:,jsv) = pfsvt(:,jsv) - psvt(:,jsv) * zvd(:,6)
subroutine ch_aer_dep(PSVT, PFSVT, PUSTAR, PRESA, PTA, PRHODREF)
real, parameter xsurf_tiny
real, parameter xavogadro
integer, parameter jpmode
subroutine ppp2aero_surf(PSVT, PRHODREF, PSIG1D, PRG1D, PN1D, PCTOTA, PM1D)
subroutine ch_aer_velgrav1d(PSIG, PRG, PTA, PRHODREF, PRHOP, PMU, PVGK, PDPK, PVGG, PDPG)
integer, parameter jp_aer_h2o