33 USE modi_ch_aer_velgrav1d
37 USE yomhook
,ONLY : lhook, dr_hook
38 USE parkind1
,ONLY : jprb
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
87 IF (lhook) CALL dr_hook(
'CH_AER_DEP',0,zhook_handle)
90 zrhoi(jp_aer_h2o) = 1.0e3
92 zden2mol = 1e-6 * xavogadro / xmd
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(:))
104 zsvt(:,:) = max(zsvt(:,:),xsurf_tiny)
105 CALL
ppp2aero_surf(zsvt, prhodref, psig1d=zsig, prg1d=zrg, pn1d=zn, pctota=zctota)
109 DO jj=1,nsp+ncarb+nsoa
110 zsum(:)=zsum(:)+zctota(:,jj,jn)/zrhoi(jj)
113 DO jj=1,nsp+ncarb+nsoa
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)
208 IF (lhook) CALL dr_hook(
'CH_AER_DEP',1,zhook_handle)
subroutine ch_aer_dep(PSVT, PFSVT, PUSTAR, PRESA, PTA, PRHODREF)
subroutine ppp2aero_surf(PSVT, PRHODREF, PSIG1D, PRG1D, PN1D, PCTOTA, PM1D)
subroutine ch_aer_velgrav1d(PSIG, PRG, PTA, PRHODREF, PRHOP, PMU, PVGK, PDPK, PVGG, PDPG)