[3526] | 1 | ! |
---|
| 2 | ! $Id: cond_evap_tstep_mod.F90 3677 2020-05-06 15:18:32Z fhourdin $ |
---|
| 3 | ! |
---|
[2690] | 4 | MODULE cond_evap_tstep_mod |
---|
| 5 | |
---|
| 6 | ! based on UPMC aerosol model by Slimane Bekki |
---|
| 7 | ! adapted for stratospheric sulfate aerosol in LMDZ by Christoph Kleinschmitt |
---|
| 8 | |
---|
| 9 | CONTAINS |
---|
| 10 | |
---|
| 11 | SUBROUTINE condens_evapor_rate(R2SO4G,t_seri,pplay,ACTSO4,R2SO4, & |
---|
| 12 | & DENSO4,f_r_wet,RRSI,Vbin,FL,ASO4,DNDR) |
---|
| 13 | ! |
---|
| 14 | ! INPUT: |
---|
| 15 | ! R2SO4: aerosol H2SO4 weight fraction (percent) |
---|
| 16 | ! ACTSO4: H2SO4 activity |
---|
| 17 | ! R2SO4G: number density of gaseous H2SO4 [molecules/cm3] |
---|
| 18 | ! t_seri: temperature (K) |
---|
| 19 | ! DENSO4: aerosol density (gr/cm3) |
---|
| 20 | |
---|
| 21 | USE aerophys |
---|
[3677] | 22 | USE infotrac_phy |
---|
[2695] | 23 | USE YOMCST, ONLY : RPI |
---|
[2690] | 24 | |
---|
| 25 | IMPLICIT NONE |
---|
| 26 | |
---|
| 27 | ! input variables |
---|
| 28 | REAL R2SO4G !H2SO4 number density [molecules/cm3] |
---|
| 29 | REAL t_seri |
---|
| 30 | REAL pplay |
---|
| 31 | REAL ACTSO4 |
---|
| 32 | REAL R2SO4 |
---|
| 33 | REAL DENSO4 |
---|
| 34 | REAL f_r_wet |
---|
| 35 | REAL RRSI(nbtr_bin) |
---|
| 36 | REAL Vbin(nbtr_bin) |
---|
| 37 | |
---|
| 38 | ! output variables |
---|
| 39 | REAL FL(nbtr_bin) |
---|
| 40 | REAL ASO4(nbtr_bin) |
---|
| 41 | REAL DNDR(nbtr_bin) |
---|
| 42 | |
---|
| 43 | ! local variables |
---|
| 44 | INTEGER IK |
---|
| 45 | REAL ALPHA,CST |
---|
| 46 | REAL WH2,RP,VTK,AA,FL1,RKNUD |
---|
| 47 | REAL DND |
---|
| 48 | REAL ATOT,AH2O |
---|
| 49 | REAL RRSI_wet(nbtr_bin) |
---|
| 50 | REAL Vbin_wet(nbtr_bin) |
---|
| 51 | REAL MH2SO4,MH2O,BOLZ,FPATH |
---|
| 52 | |
---|
| 53 | ! /// MOLEC CONDENSATION GROWTH (DUE TO CHANGES IN H2SO4 AND SO H2O) |
---|
| 54 | ! ------------------------------------------------------------------ |
---|
| 55 | ! EXCEPT CN |
---|
| 56 | ! RK:H2SO4 WEIGHT PERCENT DOESN'T CHANGE |
---|
| 57 | ! BE CAREFUL,H2SO4 WEIGHT PERCENTAGE |
---|
| 58 | |
---|
| 59 | ! WEIGHT OF 1 MOLEC IN G |
---|
| 60 | MH2O =1000.*mH2Omol !18.016*1.66E-24 |
---|
| 61 | MH2SO4=1000.*mH2SO4mol !98.082*1.66E-24 |
---|
| 62 | ! BOLTZMANN CONSTANTE IN DYN.CM/K |
---|
| 63 | BOLZ =1.381E-16 |
---|
| 64 | ! MOLECULAR ACCOMODATION OF H2SO4 |
---|
| 65 | ! raes and van dingen |
---|
| 66 | ALPHA =0.1 |
---|
| 67 | ! FPLAIR=(2.281238E-5)*TAIR/PAIR |
---|
| 68 | ! 1.E2 (m to cm), |
---|
| 69 | CST=1.E2*2.281238E-5 |
---|
| 70 | |
---|
| 71 | ! compute local wet particle radius and volume |
---|
| 72 | RRSI_wet(:)=RRSI(:)*f_r_wet |
---|
| 73 | Vbin_wet(:)=Vbin(:)*f_r_wet**3 |
---|
| 74 | |
---|
| 75 | ! Pruppa and Klett |
---|
| 76 | FPATH=CST*t_seri/pplay |
---|
| 77 | |
---|
| 78 | |
---|
| 79 | ! H2SO4 mass fraction in aerosol |
---|
| 80 | WH2=R2SO4*1.0E-2 |
---|
| 81 | IF(WH2.EQ.0.0) RETURN |
---|
| 82 | ! ACTIVITY COEFFICIENT(SEE GIAUQUE,1951) |
---|
| 83 | ! AYERS ET AL (1980) |
---|
| 84 | ! (MU-MU0) |
---|
| 85 | RP=-10156.0/t_seri +16.259-(ACTSO4*4.184)/(8.31441*t_seri) |
---|
| 86 | ! DROPLET H2SO4 PRESSURE IN DYN.CM-2 |
---|
| 87 | RP=EXP(RP)*1.01325E6/0.086 |
---|
| 88 | ! RP=EXP(RP)*1.01325E6 |
---|
| 89 | ! H2SO4 NUMBER DENSITY NEAR DROPLET |
---|
| 90 | ! R=8.31E7 DYN.CM.MOL-1*K-1 |
---|
| 91 | ! R/AVOGADRO NUMBER=DYN.CM.MOLEC-1*K-1 |
---|
| 92 | DND=RP*6.02E23/(8.31E7*t_seri) |
---|
| 93 | ! MEAN KINETIC VELOCITY |
---|
| 94 | ! DYN*CM*K/(K*GR)=(CM/SEC2)*CM |
---|
| 95 | ! IN CM/SEC |
---|
| 96 | VTK=SQRT(8.0*BOLZ*t_seri/(RPI*MH2SO4)) |
---|
| 97 | ! KELVIN EFFECT FACTOR |
---|
| 98 | !CK 20160613: bug fix, removed factor 250 (from original code by S. Bekki) |
---|
| 99 | ! AA =2.0*MH2O*72.0/(DENSO4*BOLZ*t_seri*250.0) |
---|
| 100 | AA =2.0*MH2O*72.0/(DENSO4*BOLZ*t_seri) |
---|
| 101 | |
---|
| 102 | ! Loop on bin radius (RRSI in cm) |
---|
| 103 | DO IK=1,nbtr_bin |
---|
| 104 | ! KELVIN EFFECT |
---|
| 105 | DNDR(IK) =DND*EXP(AA/RRSI_wet(IK)) |
---|
| 106 | |
---|
| 107 | FL1=RPI*ALPHA*VTK*(R2SO4G-DNDR(IK)) |
---|
| 108 | |
---|
| 109 | ! TURCO(1979) FOR HNO3:ALH2SO4 CONDENSATION= ALH2SO4 EVAPORATION |
---|
| 110 | ! RPI*R2*VTK IS EQUIVALENT TO DIFFUSION COEFFICIENT |
---|
| 111 | ! EXTENSION OF THE RELATION FOR DIFFUSION KINETICS |
---|
| 112 | ! KNUDSEN NUMBER FPATH/RRSI |
---|
| 113 | ! NEW VERSION (SEE NOTES) |
---|
| 114 | RKNUD=FPATH/RRSI_wet(IK) |
---|
| 115 | ! SENFELD |
---|
| 116 | FL(IK)=FL1*RRSI_wet(IK)**2*( 1.0 +RKNUD ) & |
---|
| 117 | & /( 1.0 +ALPHA/(2.0*RKNUD) +RKNUD ) |
---|
| 118 | ! TURCO |
---|
| 119 | ! RL= (4.0/3.0 +0.71/RKNUD)/(1.0+1.0/RKNUD) |
---|
| 120 | ! * +4.0*(1.0-ALPHA)/(3.0*ALPHA) |
---|
| 121 | ! FL=FL1*RRSI(IK)*RRSI(IK) |
---|
| 122 | ! * /( (3.0*ALPHA/4.0)*(1.0/RKNUD+RL*ALPHA) ) |
---|
| 123 | |
---|
| 124 | ! INITIAL NUMBER OF H2SO4 MOLEC OF 1 DROPLET |
---|
| 125 | ATOT=4.0*RPI*DENSO4*(RRSI_wet(IK)**3)/3.0 !attention: g and cm |
---|
| 126 | ASO4(IK)=WH2*ATOT/MH2SO4 !attention: g |
---|
| 127 | ! ATOT=4.0*RPI*dens_aer(I,J)/1000.*(RRSI(IK)**3)/3.0 |
---|
| 128 | ! ASO4=mfrac_H2SO4*ATOT/MH2SO4 |
---|
| 129 | ! INITIAL NUMBER OF H2O MOLEC OF 1 DROPLET |
---|
| 130 | AH2O=(1.0-WH2)*ATOT/MH2O !attention: g |
---|
| 131 | |
---|
| 132 | ! CHANGE OF THE NUMBER OF H2SO4 MOLEC OF 1 DROPLET DURING DT |
---|
| 133 | ! IT IS FOR KEM BUT THERE ARE OTHER WAYS |
---|
| 134 | |
---|
| 135 | ENDDO !loop over bins |
---|
| 136 | |
---|
| 137 | END SUBROUTINE condens_evapor_rate |
---|
| 138 | |
---|
| 139 | !******************************************************************** |
---|
| 140 | SUBROUTINE cond_evap_part(dt,FL,ASO4,f_r_wet,RRSI,Vbin,tr_seri) |
---|
| 141 | |
---|
| 142 | USE aerophys |
---|
[3677] | 143 | USE infotrac_phy |
---|
[2695] | 144 | USE YOMCST, ONLY : RPI |
---|
[2690] | 145 | |
---|
| 146 | IMPLICIT NONE |
---|
| 147 | |
---|
| 148 | ! input variables |
---|
| 149 | REAL dt |
---|
| 150 | REAL FL(nbtr_bin) |
---|
| 151 | REAL ASO4(nbtr_bin) |
---|
| 152 | REAL f_r_wet |
---|
| 153 | REAL RRSI(nbtr_bin) |
---|
| 154 | REAL Vbin(nbtr_bin) |
---|
| 155 | |
---|
| 156 | ! output variables |
---|
| 157 | REAL tr_seri(nbtr) |
---|
| 158 | |
---|
| 159 | ! local variables |
---|
| 160 | REAL tr_seri_new(nbtr) |
---|
| 161 | INTEGER IK,JK,k |
---|
| 162 | REAL Vnew |
---|
| 163 | REAL RRSI_wet(nbtr_bin) |
---|
| 164 | REAL Vbin_wet(nbtr_bin) |
---|
| 165 | REAL sum_IK(nbtr_bin) |
---|
| 166 | REAL ff(nbtr_bin,nbtr_bin) |
---|
| 167 | |
---|
| 168 | tr_seri_new(:)=tr_seri(:) |
---|
| 169 | |
---|
| 170 | ! compute local wet particle radius and volume |
---|
| 171 | RRSI_wet(:)=RRSI(:)*f_r_wet |
---|
| 172 | Vbin_wet(:)=Vbin(:)*f_r_wet**3 *1.e6 !Vbin_wet in cm3 (as Vnew) |
---|
| 173 | |
---|
| 174 | ! compute distribution factor for particles of intermediate size (from Jacobson 1994, equation 13) |
---|
| 175 | DO IK=1,nbtr_bin |
---|
| 176 | Vnew=4.0*RPI*(RRSI_wet(IK)**3)/3.0*(1.+FL(IK)*dt/ASO4(IK)) |
---|
| 177 | ff(IK,:)=0.0 |
---|
| 178 | DO k=1, nbtr_bin |
---|
[2695] | 179 | IF (k.LE.(nbtr_bin-1)) THEN |
---|
| 180 | IF (Vbin_wet(k).LE.Vnew.AND.Vnew.LT.Vbin_wet(k+1)) THEN |
---|
| 181 | ff(IK,k)= Vbin_wet(k)/Vnew*(Vbin_wet(k+1)-Vnew)/(Vbin_wet(k+1)-Vbin_wet(k)) |
---|
| 182 | ENDIF |
---|
[2690] | 183 | ENDIF |
---|
| 184 | IF (k.EQ.1.AND.Vnew.LE.Vbin_wet(k)) THEN |
---|
| 185 | ff(IK,k)= 1. |
---|
| 186 | ENDIF |
---|
[2695] | 187 | IF (k.GT.1) THEN |
---|
| 188 | IF (Vbin_wet(k-1).LT.Vnew.AND.Vnew.LT.Vbin_wet(k)) THEN |
---|
| 189 | ff(IK,k)= 1.-ff(IK,k-1) |
---|
| 190 | ENDIF |
---|
[2690] | 191 | ENDIF |
---|
| 192 | IF (k.EQ.nbtr_bin.AND.Vnew.GE.Vbin_wet(k)) THEN |
---|
| 193 | ff(IK,k)= 1. |
---|
| 194 | ENDIF |
---|
| 195 | ENDDO |
---|
| 196 | ! correction of ff for volume conservation |
---|
| 197 | DO k=1, nbtr_bin |
---|
| 198 | ff(IK,k)=ff(IK,k)*Vnew/Vbin_wet(k) |
---|
| 199 | ENDDO |
---|
| 200 | ENDDO !loop over bins |
---|
| 201 | |
---|
| 202 | DO IK=1, nbtr_bin |
---|
| 203 | sum_IK(IK)=0.0 |
---|
| 204 | DO JK=1, nbtr_bin |
---|
| 205 | sum_IK(IK)=sum_IK(IK)+tr_seri(JK+nbtr_sulgas)*ff(JK,IK) |
---|
| 206 | ENDDO |
---|
| 207 | ! compute new particle concentrations |
---|
| 208 | tr_seri_new(IK+nbtr_sulgas)=sum_IK(IK) |
---|
| 209 | ENDDO |
---|
| 210 | |
---|
| 211 | tr_seri(:)=tr_seri_new(:) |
---|
| 212 | |
---|
| 213 | END SUBROUTINE cond_evap_part |
---|
| 214 | |
---|
| 215 | END MODULE cond_evap_tstep_mod |
---|