Changeset 4368 for LMDZ6/branches/Ocean_skin/libf/phylmd/StratAer
- Timestamp:
- Dec 6, 2022, 12:01:16 AM (23 months ago)
- Location:
- LMDZ6/branches/Ocean_skin
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/Ocean_skin
- Property svn:mergeinfo changed
-
LMDZ6/branches/Ocean_skin/libf/phylmd/StratAer/calcaerosolstrato_rrtm.F90
r3798 r4368 16 16 INCLUDE "clesphys.h" 17 17 INCLUDE "paramet.h" 18 INCLUDE "thermcell.h"19 18 INCLUDE "iniprint.h" 20 19 -
LMDZ6/branches/Ocean_skin/libf/phylmd/StratAer/micphy_tstep.F90
r3798 r4368 7 7 USE dimphy, ONLY : klon,klev 8 8 USE aerophys 9 USE infotrac_phy 9 USE infotrac_phy, ONLY : nbtr_bin, nbtr_sulgas, nbtr, id_H2SO4_strat 10 10 USE phys_local_var_mod, ONLY: mdw, budg_3D_nucl, budg_3D_cond_evap, budg_h2so4_to_part, R2SO4, DENSO4, f_r_wet 11 11 USE nucleation_tstep_mod … … 47 47 REAL ASO4(nbtr_bin) 48 48 REAL DNDR(nbtr_bin) 49 REAL H2SO4_sat (nbtr_bin)49 REAL H2SO4_sat 50 50 51 51 DO it=1,nbtr_bin … … 107 107 & ACTSO4(ilon,ilev),R2SO4(ilon,ilev),DENSO4(ilon,ilev),f_r_wet(ilon,ilev), & 108 108 & RRSI,Vbin,FL,ASO4,DNDR) 109 ! Compute H2SO4 saturate vapor for big particules 110 H2SO4_sat = DNDR(nbtr_bin)/(pplay(ilon,ilev)/t_seri(ilon,ilev)/RD/1.E6/mH2SO4mol) 109 111 ! consider only condensation (positive FL) 110 112 DO it=1,nbtr_bin … … 117 119 ENDDO 118 120 ! determine appropriate time step 119 dt=(H2SO4_init-H2SO4_sat (nbtr_bin))/float(nbtstep)/MAX(1.e-30, nucl_rate+cond_evap_rate) !cond_evap_rate pos. for cond. and neg. for evap.121 dt=(H2SO4_init-H2SO4_sat)/float(nbtstep)/MAX(1.e-30, nucl_rate+cond_evap_rate) !cond_evap_rate pos. for cond. and neg. for evap. 120 122 IF (dt.LT.0.0) THEN 121 123 dt=PDT -
LMDZ6/branches/Ocean_skin/libf/phylmd/StratAer/nucleation_tstep_mod.F90
r3798 r4368 604 604 na_n=x_n*ntot_n 605 605 IF (na_n .LT. 1.) THEN 606 print *, 'Warning: number of acid molecules < 1 in nucleation regime, setting na_n=1'606 ! print *, 'Warning: number of acid molecules < 1 in nucleation regime, setting na_n=1' 607 607 na_n=1.0 608 608 ENDIF -
LMDZ6/branches/Ocean_skin/libf/phylmd/StratAer/strataer_mod.F90
r4013 r4368 79 79 !Config Help = Used in physiq.F 80 80 ! 81 flag_sulf_emit = 0 81 flag_sulf_emit = 0 ! Background (default) 82 flag_sulf_emit_distrib = 0 ! Gaussian (default) 82 83 nErupt = 0 ! eruption number 83 84 injdur = 0 ! init injection duration … … 87 88 CALL getin_p('nErupt',nErupt) 88 89 CALL getin_p('injdur',injdur) 90 CALL getin_p('flag_sulf_emit_distrib',flag_sulf_emit_distrib) 91 92 year_emit_vol=0 ; mth_emit_vol=0 ; day_emit_vol=0 93 m_aer_emiss_vol=0. ; altemiss_vol=0. ; sigma_alt_vol=0. 94 xlon_min_vol=0. ; xlon_max_vol=0. 95 xlat_min_vol=0. ; xlat_max_vol=0. 96 97 IF (nErupt.GT.0) THEN 98 ALLOCATE(year_emit_vol(nErupt),mth_emit_vol(nErupt),day_emit_vol(nErupt)) 99 ALLOCATE(m_aer_emiss_vol(nErupt),altemiss_vol(nErupt),sigma_alt_vol(nErupt)) 100 ALLOCATE(xlat_min_vol(nErupt),xlon_min_vol(nErupt)) 101 ALLOCATE(xlat_max_vol(nErupt),xlon_max_vol(nErupt)) 102 ELSE 103 WRITE(lunout,*) 'ERROR : Using flag_sulf_emit=1 (ie Volcanic eruption) but nErupt (',nErupt,') <=0 !' 104 CALL abort_physic('strataer_mod','No eruption define in physiq_def (nErupt=0). Add one or use background condition.',1) 105 ENDIF 106 107 CALL getin_p('year_emit_vol',year_emit_vol) 108 CALL getin_p('mth_emit_vol',mth_emit_vol) 109 CALL getin_p('day_emit_vol',day_emit_vol) 110 CALL getin_p('m_aer_emiss_vol',m_aer_emiss_vol) 111 CALL getin_p('altemiss_vol',altemiss_vol) 112 CALL getin_p('sigma_alt_vol',sigma_alt_vol) 113 CALL getin_p('xlon_min_vol',xlon_min_vol) 114 CALL getin_p('xlon_max_vol',xlon_max_vol) 115 CALL getin_p('xlat_min_vol',xlat_min_vol) 116 CALL getin_p('xlat_max_vol',xlat_max_vol) 89 117 ELSEIF (flag_sulf_emit == 2) THEN ! SAI 90 118 CALL getin_p('m_aer_emiss_sai',m_aer_emiss_sai) … … 93 121 CALL getin_p('xlat_sai',xlat_sai) 94 122 CALL getin_p('xlon_sai',xlon_sai) 95 CALL getin_p('flag_sulf_emit_distrib',flag_sulf_emit_distrib)96 123 ELSEIF (flag_sulf_emit == 3) THEN ! SAI between latitudes 97 124 CALL getin_p('m_aer_emiss_sai',m_aer_emiss_sai) … … 101 128 CALL getin_p('xlat_max_sai',xlat_max_sai) 102 129 CALL getin_p('xlat_min_sai',xlat_min_sai) 103 CALL getin_p('flag_sulf_emit_distrib',flag_sulf_emit_distrib)104 130 ENDIF 105 131 106 ALLOCATE(year_emit_vol(nErupt),mth_emit_vol(nErupt),day_emit_vol(nErupt))107 ALLOCATE(m_aer_emiss_vol(nErupt),altemiss_vol(nErupt),sigma_alt_vol(nErupt))108 ALLOCATE(xlat_min_vol(nErupt),xlon_min_vol(nErupt))109 ALLOCATE(xlat_max_vol(nErupt),xlon_max_vol(nErupt))110 111 IF (nErupt.GT.0) THEN112 year_emit_vol=0 ; mth_emit_vol=0 ; day_emit_vol=0113 m_aer_emiss_vol=0. ; altemiss_vol=0. ; sigma_alt_vol=0.114 xlon_min_vol=0. ; xlon_max_vol=0.115 xlat_min_vol=0. ; xlat_max_vol=0.116 ENDIF117 118 CALL getin_p('year_emit_vol',year_emit_vol)119 CALL getin_p('mth_emit_vol',mth_emit_vol)120 CALL getin_p('day_emit_vol',day_emit_vol)121 CALL getin_p('m_aer_emiss_vol',m_aer_emiss_vol)122 CALL getin_p('altemiss_vol',altemiss_vol)123 CALL getin_p('sigma_alt_vol',sigma_alt_vol)124 CALL getin_p('xlon_min_vol',xlon_min_vol)125 CALL getin_p('xlon_max_vol',xlon_max_vol)126 CALL getin_p('xlat_min_vol',xlat_min_vol)127 CALL getin_p('xlat_max_vol',xlat_max_vol)128 132 !Config Key = flag_nuc_rate_box 129 133 !Config Desc = define or not a box for nucleation rate … … 136 140 ! 137 141 flag_nuc_rate_box = .FALSE. 142 nuclat_min=0 ; nuclat_max=0 143 nucpres_min=0 ; nucpres_max=0 144 138 145 CALL getin_p('flag_nuc_rate_box',flag_nuc_rate_box) 139 146 CALL getin_p('nuclat_min',nuclat_min) … … 153 160 WRITE(lunout,*) 'IN STRATAER : altemiss_vol',altemiss_vol 154 161 WRITE(lunout,*) 'IN STRATAER : sigma_alt_vol',sigma_alt_vol 155 WRITE(lunout,*) 'IN STRATAER : ponde_lonlat_vol',ponde_lonlat_vol156 162 WRITE(lunout,*) 'IN STRATAER : xlat_min_vol',xlat_min_vol 157 163 WRITE(lunout,*) 'IN STRATAER : xlat_max_vol',xlat_max_vol … … 164 170 WRITE(lunout,*) 'IN STRATAER : xlat_sai',xlat_sai 165 171 WRITE(lunout,*) 'IN STRATAER : xlon_sai',xlon_sai 166 WRITE(lunout,*) 'flag_sulf_emit_distrib = ',flag_sulf_emit_distrib167 172 ELSEIF (flag_sulf_emit == 3) THEN 168 173 WRITE(lunout,*) 'IN STRATAER : m_aer_emiss_sai',m_aer_emiss_sai … … 172 177 WRITE(lunout,*) 'IN STRATAER : xlat_max_sai',xlat_max_sai 173 178 WRITE(lunout,*) 'IN STRATAER : xlon_sai',xlon_sai 174 WRITE(lunout,*) 'flag_sulf_emit_distrib = ',flag_sulf_emit_distrib175 179 ENDIF 180 WRITE(lunout,*) 'flag_sulf_emit_distrib = ',flag_sulf_emit_distrib 176 181 WRITE(lunout,*) 'IN STRATAER : flag_nuc_rate_box = ',flag_nuc_rate_box 177 182 IF (flag_nuc_rate_box) THEN … … 181 186 !ENDIF 182 187 183 CALL strataer_ponde_init 184 WRITE(lunout,*) 'IN STRATAER INT2 END' 188 IF (flag_sulf_emit == 1) THEN 189 CALL strataer_ponde_init 190 WRITE(lunout,*) 'IN STRATAER INT2 END' 191 END IF 192 WRITE(lunout,*) 'IN STRATAER END' 185 193 186 194 END SUBROUTINE strataer_init -
LMDZ6/branches/Ocean_skin/libf/phylmd/StratAer/traccoag_mod.F90
r3798 r4368 17 17 18 18 USE dimphy 19 USE infotrac_phy 19 USE infotrac_phy, ONLY : nbtr_bin, nbtr_sulgas, nbtr, id_SO2_strat 20 20 USE aerophys 21 21 USE geometry_mod, ONLY : cell_area, boundslat … … 23 23 USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root 24 24 USE mod_phys_lmdz_para, only: gather, scatter 25 USE phys_cal_mod 25 USE phys_cal_mod, ONLY : year_len, year_cur,mth_cur, day_cur, hour 26 26 USE sulfate_aer_mod 27 27 USE phys_local_var_mod, ONLY: stratomask … … 29 29 USE print_control_mod, ONLY: lunout 30 30 USE strataer_mod 31 USE phys_cal_mod, ONLY : year_len32 31 33 32 IMPLICIT NONE
Note: See TracChangeset
for help on using the changeset viewer.