Changeset 3527 for LMDZ6/trunk/libf
- Timestamp:
- May 30, 2019, 3:43:48 PM (5 years ago)
- Location:
- LMDZ6/trunk/libf/phylmd/StratAer
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmd/StratAer/micphy_tstep.F90
r3526 r3527 98 98 !NL - add nucleation box (if flag on) 99 99 IF (flag_nuc_rate_box) THEN 100 IF (latitude_deg(ilon).LE. (nuclat_min) .OR. latitude_deg(ilon).GE.(nuclat_max)&101 .OR. pplay(ilon,ilev).GE.nucpres_max .AND. pplay(ilon,ilev) .LE. nucpres_min) THEN100 IF (latitude_deg(ilon).LE.nuclat_min .OR. latitude_deg(ilon).GE.nuclat_max & 101 .OR. pplay(ilon,ilev).GE.nucpres_max .AND. pplay(ilon,ilev).LE.nucpres_min) THEN 102 102 nucl_rate=0.0 103 103 ENDIF -
LMDZ6/trunk/libf/phylmd/StratAer/nucleation_tstep_mod.F90
r3526 r3527 112 112 113 113 SUBROUTINE binapara(pt,prh,rhoa_in,jnuc,x,ntot,rc) 114 115 114 116 115 ! Fortran 90 subroutine binapara -
LMDZ6/trunk/libf/phylmd/StratAer/strataer_mod.F90
r3526 r3527 109 109 ALLOCATE(xlat_max_vol(nErupt),xlon_max_vol(nErupt)) 110 110 111 year_emit_vol=0 ; mth_emit_vol=0 ; day_emit_vol=0 112 m_aer_emiss_vol=0. ; altemiss_vol=0. ; sigma_alt_vol=0. 113 xlon_min_vol=0. ; xlon_max_vol=0. 114 xlat_min_vol=0. ; xlat_max_vol=0. 111 IF (nErupt.GT.0) THEN 112 year_emit_vol=0 ; mth_emit_vol=0 ; day_emit_vol=0 113 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 ENDIF 115 117 116 118 CALL getin_p('year_emit_vol',year_emit_vol) … … 140 142 CALL getin_p('nucpres_max',nucpres_max) 141 143 142 WRITE(lunout,*) 'IN STRATAER INIT2 year_emit_vol = ',year_emit_vol143 WRITE(lunout,*) 'IN STRATAER INIT2 mth_emit_vol = ',mth_emit_vol144 WRITE(lunout,*) 'IN STRATAER INIT2 day_emit_vol = ',day_emit_vol145 146 144 !IF (is_master) THEN 147 WRITE(lunout,*) 'IN STRATAER INIT2 year_emit_vol = ',year_emit_vol 148 WRITE(lunout,*) 'IN STRATAER INIT2 mth_emit_vol=',mth_emit_vol 149 WRITE(lunout,*) 'IN STRATAER INIT2 day_emit_vol=',day_emit_vol 150 WRITE(lunout,*) 'IN STRATAER INIT2 =m_aer_emiss_vol',m_aer_emiss_vol 151 WRITE(lunout,*) 'IN STRATAER INIT2 =altemiss_vol',altemiss_vol 152 WRITE(lunout,*) 'IN STRATAER INIT2 =sigma_alt_vol',sigma_alt_vol 153 WRITE(lunout,*) 'IN STRATAER INIT2 xlon_min_vol=',xlon_min_vol 154 WRITE(lunout,*) 'IN STRATAER INIT2 xlon_max_vol=',xlon_max_vol 155 WRITE(lunout,*) 'IN STRATAER INIT2 xlat_min_vol=',xlat_min_vol 156 WRITE(lunout,*) 'IN STRATAER INIT2 xlat_max_vol=',xlat_max_vol 157 WRITE(lunout,*) 'flag_nuc_rate_box = ',flag_nuc_rate_box 158 WRITE(lunout,*) 'nuclat_min = ',nuclat_min 159 WRITE(lunout,*) 'nuclat_max = ',nuclat_max 160 WRITE(lunout,*) 'nucpres_min = ',nucpres_min 161 WRITE(lunout,*) 'nucpres_max = ',nucpres_max 162 WRITE(lunout,*) 'flag_sulf_emit = ',flag_sulf_emit 163 WRITE(lunout,*) 'injdur = ',injdur 145 WRITE(lunout,*) 'flag_sulf_emit = ',flag_sulf_emit 146 IF (flag_sulf_emit == 1) THEN 147 WRITE(lunout,*) 'IN STRATAER nErupt: ',nErupt 148 WRITE(lunout,*) 'IN STRATAER injdur: ',injdur 149 WRITE(lunout,*) 'IN STRATAER : year_emit_vol',year_emit_vol 150 WRITE(lunout,*) 'IN STRATAER : mth_emit_vol',mth_emit_vol 151 WRITE(lunout,*) 'IN STRATAER : day_emit_vol',day_emit_vol 152 WRITE(lunout,*) 'IN STRATAER : m_aer_emiss_vol',m_aer_emiss_vol 153 WRITE(lunout,*) 'IN STRATAER : altemiss_vol',altemiss_vol 154 WRITE(lunout,*) 'IN STRATAER : sigma_alt_vol',sigma_alt_vol 155 WRITE(lunout,*) 'IN STRATAER : ponde_lonlat_vol',ponde_lonlat_vol 156 WRITE(lunout,*) 'IN STRATAER : xlat_min_vol',xlat_min_vol 157 WRITE(lunout,*) 'IN STRATAER : xlat_max_vol',xlat_max_vol 158 WRITE(lunout,*) 'IN STRATAER : xlon_min_vol',xlon_min_vol 159 WRITE(lunout,*) 'IN STRATAER : xlon_max_vol',xlon_max_vol 160 ELSEIF (flag_sulf_emit == 2) THEN 161 WRITE(lunout,*) 'IN STRATAER : m_aer_emiss_sai',m_aer_emiss_sai 162 WRITE(lunout,*) 'IN STRATAER : altemiss_sai',altemiss_sai 163 WRITE(lunout,*) 'IN STRATAER : sigma_alt_sai',sigma_alt_sai 164 WRITE(lunout,*) 'IN STRATAER : xlat_sai',xlat_sai 165 WRITE(lunout,*) 'IN STRATAER : xlon_sai',xlon_sai 164 166 WRITE(lunout,*) 'flag_sulf_emit_distrib = ',flag_sulf_emit_distrib 165 WRITE(lunout,*) 'nErupt = ',nErupt 166 WRITE(lunout,*) 'year_emit_vol = ',year_emit_vol 167 WRITE(lunout,*) 'mth_emit_vol = ',mth_emit_vol 168 WRITE(lunout,*) 'day_emit_vol = ',day_emit_vol 169 WRITE(lunout,*) 'm_aer_emiss_vol = ',m_aer_emiss_vol 170 WRITE(lunout,*) 'altemiss_vol = ',altemiss_vol 171 WRITE(lunout,*) 'sigma_alt_vol = ',sigma_alt_vol 172 WRITE(lunout,*) 'xlat_min_vol = ',xlat_min_vol 173 WRITE(lunout,*) 'xlat_max_vol = ',xlat_max_vol 174 WRITE(lunout,*) 'xlon_min_vol = ',xlon_min_vol 175 WRITE(lunout,*) 'xlon_max_vol = ',xlon_max_vol 176 WRITE(lunout,*) 'm_aer_emiss_sai = ',m_aer_emiss_sai 177 WRITE(lunout,*) 'altemiss_sai = ',altemiss_sai 178 WRITE(lunout,*) 'sigma_alt_sai = ',sigma_alt_sai 179 WRITE(lunout,*) 'xlat_sai = ',xlat_sai 180 WRITE(lunout,*) 'xlon_sai = ',xlon_sai 181 WRITE(lunout,*) 'xlat_min_sai = ',xlat_min_sai 182 WRITE(lunout,*) 'xlat_max_sai = ',xlat_max_sai 167 ELSEIF (flag_sulf_emit == 3) THEN 168 WRITE(lunout,*) 'IN STRATAER : m_aer_emiss_sai',m_aer_emiss_sai 169 WRITE(lunout,*) 'IN STRATAER : altemiss_sai',altemiss_sai 170 WRITE(lunout,*) 'IN STRATAER : sigma_alt_sai',sigma_alt_sai 171 WRITE(lunout,*) 'IN STRATAER : xlat_min_sai',xlat_min_sai 172 WRITE(lunout,*) 'IN STRATAER : xlat_max_sai',xlat_max_sai 173 WRITE(lunout,*) 'IN STRATAER : xlon_sai',xlon_sai 174 WRITE(lunout,*) 'flag_sulf_emit_distrib = ',flag_sulf_emit_distrib 175 ENDIF 176 WRITE(lunout,*) 'IN STRATAER : flag_nuc_rate_box = ',flag_nuc_rate_box 177 IF (flag_nuc_rate_box) THEN 178 WRITE(lunout,*) 'IN STRATAER : nuclat_min = ',nuclat_min,', nuclat_max = ',nuclat_max 179 WRITE(lunout,*) 'IN STRATAER : nucpres_min = ',nucpres_min,', nucpres_max = ',nucpres_max 180 ENDIF 183 181 !ENDIF 184 182 -
LMDZ6/trunk/libf/phylmd/StratAer/traccoag_mod.F90
r3526 r3527 59 59 !---------------- 60 60 REAL :: m_aer_emiss_vol_daily ! daily injection mass emission 61 REAL :: sum_emi_so2 ! Test sum of all LON for budg_emi_so262 61 INTEGER :: it, k, i, ilon, ilev, itime, i_int, ieru 63 62 LOGICAL,DIMENSION(klon,klev) :: is_strato ! true = above tropopause, false = below … … 84 83 WRITE(lunout,*) 'in traccoag: date from phys_cal_mod =',year_cur,'-',mth_cur,'-',day_cur,'-',hour 85 84 WRITE(lunout,*) 'IN traccoag flag_sulf_emit: ',flag_sulf_emit 86 IF (flag_sulf_emit == 1) THEN87 WRITE(lunout,*) 'IN traccoag nErupt: ',nErupt88 WRITE(lunout,*) 'IN traccoag injdur: ',injdur89 WRITE(lunout,*) 'IN traccoag : year_emit_vol',year_emit_vol90 WRITE(lunout,*) 'IN traccoag : mth_emit_vol',mth_emit_vol91 WRITE(lunout,*) 'IN traccoag : day_emit_vol',day_emit_vol92 WRITE(lunout,*) 'IN traccoag : m_aer_emiss_vol',m_aer_emiss_vol93 WRITE(lunout,*) 'IN traccoag : altemiss_vol',altemiss_vol94 WRITE(lunout,*) 'IN traccoag : sigma_alt_vol',sigma_alt_vol95 WRITE(lunout,*) 'IN traccoag : ponde_lonlat_vol',ponde_lonlat_vol96 WRITE(lunout,*) 'IN traccoag : xlat_min_vol',xlat_min_vol97 WRITE(lunout,*) 'IN traccoag : xlat_max_vol',xlat_max_vol98 WRITE(lunout,*) 'IN traccoag : xlon_min_vol',xlon_min_vol99 WRITE(lunout,*) 'IN traccoag : xlon_max_vol',xlon_max_vol100 ELSEIF (flag_sulf_emit == 2) THEN101 WRITE(lunout,*) 'IN traccoag : m_aer_emiss_sai',m_aer_emiss_sai102 WRITE(lunout,*) 'IN traccoag : altemiss_sai',altemiss_sai103 WRITE(lunout,*) 'IN traccoag : sigma_alt_sai',sigma_alt_sai104 WRITE(lunout,*) 'IN traccoag : xlat_sai',xlat_sai105 WRITE(lunout,*) 'IN traccoag : xlon_sai',xlon_sai106 ELSEIF (flag_sulf_emit == 3) THEN107 WRITE(lunout,*) 'IN traccoag : m_aer_emiss_sai',m_aer_emiss_sai108 WRITE(lunout,*) 'IN traccoag : altemiss_sai',altemiss_sai109 WRITE(lunout,*) 'IN traccoag : sigma_alt_sai',sigma_alt_sai110 WRITE(lunout,*) 'IN traccoag : xlat_min_sai',xlat_min_sai111 WRITE(lunout,*) 'IN traccoag : xlat_max_sai',xlat_max_sai112 WRITE(lunout,*) 'IN traccoag : xlon_sai',xlon_sai113 ENDIF114 WRITE(lunout,*) 'IN traccoag : flag_nuc_rate_box = ',flag_nuc_rate_box115 IF (flag_nuc_rate_box) THEN116 WRITE(lunout,*) 'IN traccoag : nuclat_min = ',nuclat_min,', nuclat_max = ',nuclat_max117 WRITE(lunout,*) 'IN traccoag : nucpres_min = ',nucpres_min,', nucpres_max = ',nucpres_max118 ENDIF119 85 ENDIF 120 86 … … 190 156 ! stretch emission over one day of Pinatubo eruption 191 157 DO ieru=1, nErupt 192 IF (is_mpi_root) THEN193 sum_emi_so2 = 0.0 ! Init sum194 ENDIF195 158 IF (year_cur==year_emit_vol(ieru).AND.mth_cur==mth_emit_vol(ieru).AND.& 196 159 day_cur>=day_emit_vol(ieru).AND.day_cur<(day_emit_vol(ieru)+injdur)) THEN … … 259 222 budg_emi_so2(i)=budg_emi_so2(i)+emission*zdm(k)*mSatom/mSO2mol 260 223 ENDDO 261 sum_emi_so2 = sum_emi_so2 + budg_emi_so2(i) ! Sum all LON262 224 ENDIF ! emission grid cell 263 225 ENDDO ! klon loop 264 WRITE(lunout,*) "IN traccoag (ieru=",ieru,") global sum_emi_so2=",sum_emi_so2265 226 WRITE(lunout,*) "IN traccoag (ieru=",ieru,") m_aer_emiss_vol_daily=",m_aer_emiss_vol_daily 266 227 ENDIF ! emission period … … 323 284 DO k=1, klev 324 285 ! stretch emission over whole year (360d) 325 emission=m_aer_emiss_sai*(mSO2mol/mSatom)/m_air_gridbox(i,k)*f_lay_emiss(k)/ year_len/86400.286 emission=m_aer_emiss_sai*(mSO2mol/mSatom)/m_air_gridbox(i,k)*f_lay_emiss(k)/FLOAT(year_len)/86400. 326 287 tr_seri(i,k,id_SO2_strat)=tr_seri(i,k,id_SO2_strat)+emission*pdtphys 327 288 budg_emi_so2(i)=budg_emi_so2(i)+emission*zdm(k)*mSatom/mSO2mol … … 332 293 ! DO k=1, klev 333 294 ! ! stretch emission over whole year (360d) 334 ! emission=m_aer_emiss*(mH2SO4mol/mSatom)/m_part_dry(21)/m_air_gridbox(i,k)*f_lay_emiss(k)/ year_len/86400295 ! emission=m_aer_emiss*(mH2SO4mol/mSatom)/m_part_dry(21)/m_air_gridbox(i,k)*f_lay_emiss(k)/FLOAT(year_len)/86400. 335 296 ! tr_seri(i,k,id_BIN01_strat+20)=tr_seri(i,k,id_BIN01_strat+20)+emission*pdtphys 336 297 ! budg_emi_part(i)=budg_emi_part(i)+emission*zdm(k)*mSatom/mH2SO4mol … … 346 307 ! SAI scenario with continuous emission 347 308 dlat_loc=180./RPI/2.*(boundslat(i,1)-boundslat(i,3)) ! dlat = half difference of boundary latitudes 348 WRITE(lunout,*) 'IN traccoag, dlat = ',dlat_loc349 309 theta_min = max(xlat(i)-dlat_loc,xlat_min_sai) 350 310 theta_max = min(xlat(i)+dlat_loc,xlat_max_sai) … … 397 357 ! stretch emission over whole year (360d) 398 358 emission=m_aer_emiss_sai*(mSO2mol/mSatom)/m_air_gridbox(i,k)*f_lay_emiss(k)/ & 399 & year_len/86400.*(sin(theta_max/180.*RPI)-sin(theta_min/180.*RPI))/ &359 & FLOAT(year_len)/86400.*(sin(theta_max/180.*RPI)-sin(theta_min/180.*RPI))/ & 400 360 & (sin(xlat_max_sai/180.*RPI)-sin(xlat_min_sai/180.*RPI)) 401 361 tr_seri(i,k,id_SO2_strat)=tr_seri(i,k,id_SO2_strat)+emission*pdtphys
Note: See TracChangeset
for help on using the changeset viewer.