- Timestamp:
- Jul 22, 2024, 9:29:09 PM (4 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/Amaury_dev/libf/phylmd/StratAer/coagulate.F90
r5098 r5099 1 ! 1 2 2 ! $Id$ 3 ! 3 4 4 SUBROUTINE COAGULATE(pdtcoag,mdw,tr_seri,t_seri,pplay,dens_aer,is_strato) 5 5 ! ----------------------------------------------------------------------- 6 ! 6 7 7 ! Author : Christoph Kleinschmitt (with Olivier Boucher) 8 8 ! ------ 9 ! 9 10 10 ! purpose 11 11 ! ------- 12 ! 12 13 13 ! interface 14 14 ! --------- … … 17 17 ! tr_seri tracer mixing ratios [kg/kg] 18 18 ! mdw # or mass median diameter [m] 19 ! 19 20 20 ! method 21 21 ! ------ 22 ! 22 23 23 ! ----------------------------------------------------------------------- 24 24 … … 204 204 DO j=1, nbtr_bin 205 205 DO i=1, nbtr_bin 206 ! 206 207 207 num=4.*RPI*(radiuswet(i)+radiuswet(j))*(Di(i)+Di(j)) 208 208 denom=(radiuswet(i)+radiuswet(j))/(radiuswet(i)+radiuswet(j)+sqrt(delta(i)**2.+delta(j)**2.))+ & 209 209 4.*(Di(i)+Di(j))/(sqrt(thvelpar(i)**2.+thvelpar(j)**2.)*(radiuswet(i)+radiuswet(j))) 210 210 beta(i,j)=num/denom 211 ! 211 212 212 !--compute enhancement factor due to van der Waals forces 213 213 IF (ok_vdw == 0) THEN !--no enhancement factor … … 222 222 EvdW = 1. + SQRT(AvdWi/3.)/(1.+bvdW0*SQRT(AvdWi)) + bvdW1*xvdW + bvdW3*xvdW**3. 223 223 ENDIF 224 ! 224 225 225 beta(i,j)=beta(i,j)*EvdW 226 226 … … 247 247 numi=0.0 248 248 DO i=1, k-1 249 ! 249 250 250 ! see Jacobson: " In order to conserve volume and volume concentration (which 251 251 ! coagulation physically does) while giving up some accuracy in number concentration" 252 ! 252 253 253 ! Coagulation of i and j giving k 254 254 ! with V(i) and then V(j) because it considers i,j and j,i with the double loop 255 ! 255 256 256 ! BUT WHY WET VOLUME V(i) in old STRATAER? tracers are already dry aerosols and coagulation 257 257 ! kernel beta(i,j) accounts for wet aerosols -> reply below 258 ! 258 259 259 ! numi=numi+ff(i,j,k)*beta(i,j)*V(i)*tr_tp1(ilon,ilev,i)*tr_t(ilon,ilev,j) 260 260 numi=numi+ff(i,j,k)*beta(i,j)*Vdry(i)*tr_tp1(ilon,ilev,i)*tr_t(ilon,ilev,j) … … 266 266 ! tr_tp1(ilon,ilev,k)=(V(k)*tr_t(ilon,ilev,k)+pdtcoag*num)/( (1.+pdtcoag*denom)*V(k) ) 267 267 tr_tp1(ilon,ilev,k)=(Vdry(k)*tr_t(ilon,ilev,k)+pdtcoag*num)/( (1.+pdtcoag*denom)*Vdry(k) ) 268 ! 268 269 269 ! In constant composition (no dependency on aerosol size because no kelvin effect) 270 270 ! V(l)= (f_r_wet(ilon,ilev)**3)*((mdw(l)/2.)**3) = (f_r_wet(ilon,ilev)**3)*Vdry(i)
Note: See TracChangeset
for help on using the changeset viewer.