Changeset 4950 for LMDZ6/trunk/libf/phylmd/StratAer/micphy_tstep.F90
- Timestamp:
- May 22, 2024, 3:16:36 PM (5 weeks ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmd/StratAer/micphy_tstep.F90
r4601 r4950 8 8 USE aerophys 9 9 USE infotrac_phy, ONLY : nbtr_bin, nbtr_sulgas, nbtr, id_H2SO4_strat 10 USE phys_local_var_mod, ONLY: mdw, budg_3D_nucl, budg_3D_cond_evap, budg_h2so4_to_part, R2SO4, DENSO4, f_r_wet 10 USE phys_local_var_mod, ONLY: mdw, budg_3D_nucl, budg_3D_cond_evap, budg_h2so4_to_part, R2SO4, DENSO4, & 11 f_r_wet, R2SO4B, DENSO4B, f_r_wetB 11 12 USE nucleation_tstep_mod 12 13 USE cond_evap_tstep_mod … … 14 15 USE YOMCST, ONLY : RPI, RD, RG 15 16 USE print_control_mod, ONLY: lunout 16 USE strataer_local_var_mod 17 USE strataer_local_var_mod ! contains also RRSI and Vbin 17 18 18 19 IMPLICIT NONE … … 35 36 REAL :: ntot !total number of molecules in the critical cluster (ntot>4) 36 37 REAL :: x ! molefraction of H2SO4 in the critical cluster 37 REAL Vbin(nbtr_bin)38 38 REAL a_xm, b_xm, c_xm 39 39 REAL PDT, dt 40 40 REAL H2SO4_init 41 41 REAL ACTSO4(klon,klev) 42 REAL RRSI(nbtr_bin)43 42 REAL nucl_rate 44 43 REAL cond_evap_rate … … 48 47 REAL DNDR(nbtr_bin) 49 48 REAL H2SO4_sat 50 51 DO it=1,nbtr_bin 52 Vbin(it)=4.0*RPI*((mdw(it)/2.)**3)/3.0 53 ENDDO 54 49 REAL R2SO4ik(nbtr_bin), DENSO4ik(nbtr_bin), f_r_wetik(nbtr_bin) 50 55 51 !coefficients for H2SO4 density parametrization used for nucleation if ntot<4 56 52 a_xm = 0.7681724 + 1.*(2.1847140 + 1.*(7.1630022 + 1.*(-44.31447 + & … … 61 57 & 1.*(7.990811e-4 + 1.*(-7.458060e-4 + 1.*2.58139e-4 ))))) 62 58 63 ! STRAACT (R2SO4, t_seri -> H2SO4 activity coefficient (ACTSO4)) for cond/evap 64 CALL STRAACT(ACTSO4) 65 66 ! compute particle radius in cm RRSI from diameter in m 67 DO it=1,nbtr_bin 68 RRSI(it)=mdw(it)/2.*100. 69 ENDDO 70 59 IF(.not.flag_new_strat_compo) THEN 60 ! STRAACT (R2SO4, t_seri -> H2SO4 activity coefficient (ACTSO4)) for cond/evap 61 CALL STRAACT(ACTSO4) 62 ENDIF 63 71 64 DO ilon=1, klon 72 65 ! … … 104 97 ENDIF 105 98 ! compute cond/evap rate in kg(H2SO4)/kgA/s 106 CALL condens_evapor_rate(rhoa,t_seri(ilon,ilev),pplay(ilon,ilev), & 107 & ACTSO4(ilon,ilev),R2SO4(ilon,ilev),DENSO4(ilon,ilev),f_r_wet(ilon,ilev), & 108 & RRSI,Vbin,FL,ASO4,DNDR) 99 IF(flag_new_strat_compo) THEN 100 R2SO4ik(:) = R2SO4B(ilon,ilev,:) 101 DENSO4ik(:) = DENSO4B(ilon,ilev,:) 102 f_r_wetik(:) = f_r_wetB(ilon,ilev,:) 103 CALL condens_evapor_rate_kelvin(rhoa,t_seri(ilon,ilev),pplay(ilon,ilev), & 104 & R2SO4(ilon,ilev),DENSO4(ilon,ilev),f_r_wet(ilon,ilev), & 105 & R2SO4ik,DENSO4ik,f_r_wetik,FL,ASO4,DNDR) 106 ELSE 107 CALL condens_evapor_rate(rhoa,t_seri(ilon,ilev),pplay(ilon,ilev), & 108 & ACTSO4(ilon,ilev),R2SO4(ilon,ilev),DENSO4(ilon,ilev),f_r_wet(ilon,ilev), & 109 & FL,ASO4,DNDR) 110 ENDIF 109 111 ! Compute H2SO4 saturate vapor for big particules 110 112 H2SO4_sat = DNDR(nbtr_bin)/(pplay(ilon,ilev)/t_seri(ilon,ilev)/RD/1.E6/mH2SO4mol) … … 127 129 tr_seri(ilon,ilev,id_H2SO4_strat)=MAX(0.,tr_seri(ilon,ilev,id_H2SO4_strat)-(nucl_rate+cond_evap_rate)*dt) 128 130 ! apply cond to bins 129 CALL cond _evap_part(dt,FL,ASO4,f_r_wet(ilon,ilev),RRSI,Vbin,tr_seri(ilon,ilev,:))131 CALL condens_evapor_part(dt,FL,ASO4,f_r_wet(ilon,ilev),tr_seri(ilon,ilev,:)) 130 132 ! apply nucl. to bins 131 CALL nucleation_part(nucl_rate,ntot,x,dt, Vbin,tr_seri(ilon,ilev,:))133 CALL nucleation_part(nucl_rate,ntot,x,dt,tr_seri(ilon,ilev,:)) 132 134 ! compute fluxes as diagnostic in [kg(S)/m2/layer/s] (now - for evap and + for cond) 133 135 budg_3D_cond_evap(ilon,ilev)=budg_3D_cond_evap(ilon,ilev)+mSatom/mH2SO4mol & … … 142 144 & *pplay(ilon,ilev)/t_seri(ilon,ilev)/RD/1.E6/mH2SO4mol 143 145 ! compute cond/evap rate in kg(H2SO4)/kgA/s (now only evap for pdtphys) 144 CALL condens_evapor_rate(rhoa,t_seri(ilon,ilev),pplay(ilon,ilev), & 145 & ACTSO4(ilon,ilev),R2SO4(ilon,ilev),DENSO4(ilon,ilev),f_r_wet(ilon,ilev), & 146 & RRSI,Vbin,FL,ASO4,DNDR) 146 IF(flag_new_strat_compo) THEN 147 CALL condens_evapor_rate_kelvin(rhoa,t_seri(ilon,ilev),pplay(ilon,ilev), & 148 & R2SO4(ilon,ilev),DENSO4(ilon,ilev),f_r_wet(ilon,ilev), & 149 & R2SO4ik,DENSO4ik,f_r_wetik,FL,ASO4,DNDR) 150 ELSE 151 CALL condens_evapor_rate(rhoa,t_seri(ilon,ilev),pplay(ilon,ilev), & 152 & ACTSO4(ilon,ilev),R2SO4(ilon,ilev),DENSO4(ilon,ilev),f_r_wet(ilon,ilev), & 153 & FL,ASO4,DNDR) 154 ENDIF 147 155 ! limit evaporation (negative FL) over one physics time step to H2SO4 content of the droplet 148 156 DO it=1,nbtr_bin … … 159 167 tr_seri(ilon,ilev,id_H2SO4_strat)=MAX(0.,tr_seri(ilon,ilev,id_H2SO4_strat)-evap_rate*pdtphys) 160 168 ! apply evap to bins 161 CALL cond _evap_part(pdtphys,FL,ASO4,f_r_wet(ilon,ilev),RRSI,Vbin,tr_seri(ilon,ilev,:))169 CALL condens_evapor_part(pdtphys,FL,ASO4,f_r_wet(ilon,ilev),tr_seri(ilon,ilev,:)) 162 170 ! compute fluxes as diagnostic in [kg(S)/m2/layer/s] (now - for evap and + for cond) 163 171 budg_3D_cond_evap(ilon,ilev)=budg_3D_cond_evap(ilon,ilev)+mSatom/mH2SO4mol &
Note: See TracChangeset
for help on using the changeset viewer.