Changeset 3356 for LMDZ6/branches/DYNAMICO-conv/libf/phylmd/StratAer
- Timestamp:
- Jun 29, 2018, 12:31:11 PM (6 years ago)
- Location:
- LMDZ6/branches/DYNAMICO-conv
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/DYNAMICO-conv
- Property svn:mergeinfo changed
-
LMDZ6/branches/DYNAMICO-conv/libf/phylmd/StratAer/aerophys.F90
r2964 r3356 2 2 ! 3 3 MODULE aerophys 4 ! 5 IMPLICIT NONE 4 6 ! 5 7 REAL,PARAMETER :: ropx=1500.0 ! default aerosol particle mass density [kg/m3] -
LMDZ6/branches/DYNAMICO-conv/libf/phylmd/StratAer/interp_sulf_input.F90
r2752 r3356 32 32 INTEGER, SAVE :: n_lev ! number of levels in the input data 33 33 INTEGER n_mth ! number of months in the input data 34 REAL OCS_tmp, SO2_tmp35 34 INTEGER, SAVE :: mth_pre 36 35 !$OMP THREADPRIVATE(mth_pre) … … 238 237 DO k=1, klev 239 238 ! 240 OCS_tmp=tr_seri(i,k,id_OCS_strat) 241 SO2_tmp=tr_seri(i,k,id_SO2_strat) 242 !--OCS and SO2 prescribed below p_bound 239 !--OCS and SO2 prescribed back to their clim values below p_bound 243 240 IF (paprs(i,k).GT.p_bound) THEN 241 budg_3D_backgr_ocs(i,k)=OCS_clim(i,k)-tr_seri(i,k,id_OCS_strat) 242 budg_3D_backgr_so2(i,k)=SO2_clim(i,k)-tr_seri(i,k,id_SO2_strat) 244 243 tr_seri(i,k,id_OCS_strat)=OCS_clim(i,k) 245 244 tr_seri(i,k,id_SO2_strat)=SO2_clim(i,k) 246 245 ENDIF 247 budg_3D_backgr_ocs(i,k)=tr_seri(i,k,id_OCS_strat)-OCS_tmp248 budg_3D_backgr_so2(i,k)=tr_seri(i,k,id_SO2_strat)-SO2_tmp249 246 ENDDO 250 247 ENDDO -
LMDZ6/branches/DYNAMICO-conv/libf/phylmd/StratAer/micphy_tstep.F90
r2752 r3356 4 4 USE aerophys 5 5 USE infotrac 6 USE phys_local_var_mod, ONLY: mdw, budg_3D_nucl, budg_3D_cond_evap, R2SO4, DENSO4, f_r_wet6 USE phys_local_var_mod, ONLY: mdw, budg_3D_nucl, budg_3D_cond_evap, budg_h2so4_to_part, R2SO4, DENSO4, f_r_wet 7 7 USE nucleation_tstep_mod 8 8 USE cond_evap_tstep_mod … … 25 25 ! local variables in coagulation routine 26 26 INTEGER, PARAMETER :: nbtstep=4 ! Max number of time steps in microphysics per time step in physics 27 INTEGER :: it,ilon,ilev, IK,count_tstep27 INTEGER :: it,ilon,ilev,count_tstep 28 28 REAL :: rhoa !H2SO4 number density [molecules/cm3] 29 29 REAL :: ntot !total number of molecules in the critical cluster (ntot>4) … … 43 43 REAL H2SO4_sat(nbtr_bin) 44 44 45 DO IK=1,nbtr_bin46 Vbin( IK)=4.0*RPI*((mdw(IK)/2.)**3)/3.045 DO it=1,nbtr_bin 46 Vbin(it)=4.0*RPI*((mdw(it)/2.)**3)/3.0 47 47 ENDDO 48 48 … … 64 64 65 65 DO ilon=1, klon 66 ! 67 !--initialisation of diagnostic 68 budg_h2so4_to_part(ilon)=0.0 69 ! 66 70 DO ilev=1, klev 71 ! 72 !--initialisation of diagnostic 73 budg_3D_nucl(ilon,ilev)=0.0 74 budg_3D_cond_evap(ilon,ilev)=0.0 75 ! 67 76 ! only in the stratosphere 68 77 IF (is_strato(ilon,ilev)) THEN 69 78 ! initialize sulfur fluxes 70 budg_3D_nucl(ilon,ilev)=0.071 budg_3D_cond_evap(ilon,ilev)=0.072 79 H2SO4_init=tr_seri(ilon,ilev,id_H2SO4_strat) 73 80 ! adaptive timestep for nucleation and condensation … … 88 95 & RRSI,Vbin,FL,ASO4,DNDR) 89 96 ! consider only condensation (positive FL) 90 DO IK=1,nbtr_bin91 FL( IK)=MAX(FL(IK),0.)97 DO it=1,nbtr_bin 98 FL(it)=MAX(FL(it),0.) 92 99 ENDDO 93 100 ! compute total H2SO4 cond flux for all particles 94 101 cond_evap_rate=0.0 95 DO IK=1, nbtr_bin96 cond_evap_rate=cond_evap_rate+tr_seri(ilon,ilev, IK+nbtr_sulgas)*FL(IK)*mH2SO4mol102 DO it=1, nbtr_bin 103 cond_evap_rate=cond_evap_rate+tr_seri(ilon,ilev,it+nbtr_sulgas)*FL(it)*mH2SO4mol 97 104 ENDDO 98 105 ! determine appropriate time step … … 124 131 & RRSI,Vbin,FL,ASO4,DNDR) 125 132 ! limit evaporation (negative FL) over one physics time step to H2SO4 content of the droplet 126 DO IK=1,nbtr_bin127 FL( IK)=MAX(FL(IK)*pdtphys,0.-ASO4(IK))/pdtphys133 DO it=1,nbtr_bin 134 FL(it)=MAX(FL(it)*pdtphys,0.-ASO4(it))/pdtphys 128 135 ! consider only evap (negative FL) 129 FL( IK)=MIN(FL(IK),0.)136 FL(it)=MIN(FL(it),0.) 130 137 ENDDO 131 138 ! compute total H2SO4 evap flux for all particles 132 139 evap_rate=0.0 133 DO IK=1, nbtr_bin134 evap_rate=evap_rate+tr_seri(ilon,ilev, IK+nbtr_sulgas)*FL(IK)*mH2SO4mol140 DO it=1, nbtr_bin 141 evap_rate=evap_rate+tr_seri(ilon,ilev,it+nbtr_sulgas)*FL(it)*mH2SO4mol 135 142 ENDDO 136 143 ! update H2SO4 concentration after evap … … 141 148 budg_3D_cond_evap(ilon,ilev)=budg_3D_cond_evap(ilon,ilev)+mSatom/mH2SO4mol & 142 149 & *evap_rate*(paprs(ilon,ilev)-paprs(ilon,ilev+1))/RG 150 ! compute vertically integrated flux due to the net effect of nucleation and condensation/evaporation 151 budg_h2so4_to_part(ilon)=budg_h2so4_to_part(ilon)+(H2SO4_init-tr_seri(ilon,ilev,id_H2SO4_strat)) & 152 & *mSatom/mH2SO4mol*(paprs(ilon,ilev)-paprs(ilon,ilev+1))/RG/pdtphys 143 153 ENDIF 144 154 ENDDO … … 148 158 DO ilon=1, klon 149 159 DO ilev=1, klev 150 DO IK=1, nbtr151 IF (tr_seri(ilon,ilev, IK).LT.0.0) THEN152 PRINT *, 'micphy_tstep: negative concentration', tr_seri(ilon,ilev, IK), ilon, ilev, IK160 DO it=1, nbtr 161 IF (tr_seri(ilon,ilev,it).LT.0.0) THEN 162 PRINT *, 'micphy_tstep: negative concentration', tr_seri(ilon,ilev,it), ilon, ilev, it 153 163 ENDIF 154 164 ENDDO -
LMDZ6/branches/DYNAMICO-conv/libf/phylmd/StratAer/traccoag_mod.F90
r2752 r3356 203 203 !vertically distributed emission 204 204 DO k=1, klev 205 ! stretch emission over one day of Pinatubo eruption206 emission=m_aer_emiss_vol*(mSO2mol/mSatom)/m_air_gridbox(i,k)*f_lay_emiss(k)/1./ 86400.205 ! stretch emission over one day (minus one timestep) of Pinatubo eruption 206 emission=m_aer_emiss_vol*(mSO2mol/mSatom)/m_air_gridbox(i,k)*f_lay_emiss(k)/1./(86400.-pdtphys) 207 207 tr_seri(i,k,id_SO2_strat)=tr_seri(i,k,id_SO2_strat)+emission*pdtphys 208 208 budg_emi_so2(i)=budg_emi_so2(i)+emission*zdm(k)*mSatom/mSO2mol
Note: See TracChangeset
for help on using the changeset viewer.