Changeset 2704 for LMDZ5/trunk/libf/phylmd/StratAer
- Timestamp:
- Nov 20, 2016, 2:15:32 PM (8 years ago)
- Location:
- LMDZ5/trunk/libf/phylmd/StratAer
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk/libf/phylmd/StratAer/interp_sulf_input.F90
r2695 r2704 71 71 !$OMP THREADPRIVATE(OCS_clim,SO2_clim) 72 72 ! 73 INTEGER i, k, kk, ilon, ilev,j73 INTEGER i, k, kk, j 74 74 REAL p_bound 75 75 … … 89 89 5.53084382e+01, 3.35462635e+01, 0.0 /) 90 90 ! 91 REAL, PARAMETER :: epsilon_OCS=1.0e-20 ! minimum OCS concentration [kg/kgA] for weighting of lifetime92 REAL, PARAMETER :: epsilon_SO2=1.0e-20 ! minimum SO2 concentration [kg/kgA] for weighting of lifetime93 REAL, PARAMETER :: min_OCS_lifetime= 3600. !minimum OCS lifetime [sec]94 REAL, PARAMETER :: min_SO2_lifetime=86400. !minimum SO2 lifetime [sec]95 96 91 IF (.NOT.ALLOCATED(OCS_clim)) ALLOCATE(OCS_clim(klon,klev)) 97 92 IF (.NOT.ALLOCATED(SO2_clim)) ALLOCATE(SO2_clim(klon,klev)) … … 183 178 184 179 !---regrid weighted lifetime and climatologies 185 DO i=1, klon 180 DO i=1, klon_glo 186 181 DO k=1, klev 187 182 OCS_lifetime_glo(i,k)=0.0 … … 206 201 ENDDO 207 202 208 ENDIF ! is_mpi_root203 ENDIF !--is_mpi_root and is_omp_root 209 204 210 205 !--keep memory of previous month … … 255 250 256 251 !convert SO2_backgr_tend from kg(SO2)/kgA to kg(S)/m2/layer/s for saving as diagnostic 257 DO i lon=1, klon258 DO ilev=1, klev259 SO2_backgr_tend(i lon,ilev)=SO2_backgr_tend(ilon,ilev)*mSatom/mSO2mol*(paprs(ilon,ilev)-paprs(ilon,ilev+1))/RG/pdtphys260 OCS_backgr_tend(i lon,ilev)=OCS_backgr_tend(ilon,ilev)*mSatom/mOCSmol*(paprs(ilon,ilev)-paprs(ilon,ilev+1))/RG/pdtphys252 DO i=1, klon 253 DO k=1, klev 254 SO2_backgr_tend(i,k)=SO2_backgr_tend(i,k)*mSatom/mSO2mol*(paprs(i,k)-paprs(i,k+1))/RG/pdtphys 255 OCS_backgr_tend(i,k)=OCS_backgr_tend(i,k)*mSatom/mOCSmol*(paprs(i,k)-paprs(i,k+1))/RG/pdtphys 261 256 ENDDO 262 257 ENDDO -
LMDZ5/trunk/libf/phylmd/StratAer/miecalc_aer.F90
r2690 r2704 24 24 USE mod_grid_phy_lmdz, ONLY : klon_glo 25 25 USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root 26 USE print_control_mod, ONLY: prt_level, lunout 26 27 27 28 IMPLICIT NONE … … 70 71 PARAMETER (Nbin=10) 71 72 72 !--has to be consistent with dataset73 INTEGER nb_lambda_h2so474 PARAMETER (nb_lambda_h2so4=62) !61, 23575 73 76 74 !---wavelengths STREAMER … … 131 129 REAL final_w(1:NwvmaxSW+nwave_sw+nwave_lw+NwvmaxLW) 132 130 133 INTEGER band, bandSW, bandLW 131 INTEGER band, bandSW, bandLW, wavenumber 134 132 135 133 !---wavelengths SW RRTM … … 156 154 REAL ss_g(nbands_sw_rrtm+nbands_lw_rrtm+nwave_sw+nwave_lw) 157 155 158 REAL wavenumber 159 REAL, DIMENSION(nb_lambda_h2so4,4) :: ref_ind 160 156 INTEGER, PARAMETER :: nb_lambda_h2so4=62 157 REAL, DIMENSION (nb_lambda_h2so4,4) :: ref_ind 158 !-- fichier h2so4_0.75_300.00_hummel_1988_p_q.dat 159 ! -- wavenumber (cm-1), wavelength (um), n_r, n_i 160 DATA ref_ind / & 161 200.000, 50.0000, 2.01000, 6.5000E-01, & 162 250.000, 40.0000, 1.94000, 6.3000E-01, & 163 285.714, 35.0000, 1.72000, 5.2000E-01, & 164 333.333, 30.0000, 1.73000, 2.9000E-01, & 165 358.423, 27.9000, 1.78000, 2.5000E-01, & 166 400.000, 25.0000, 1.84000, 2.4000E-01, & 167 444.444, 22.5000, 1.82000, 2.9000E-01, & 168 469.484, 21.3000, 1.79000, 2.5000E-01, & 169 500.000, 20.0000, 1.81000, 2.3000E-01, & 170 540.541, 18.5000, 1.92700, 3.0200E-01, & 171 555.556, 18.0000, 1.95000, 4.1000E-01, & 172 581.395, 17.2000, 1.72400, 5.9000E-01, & 173 609.756, 16.4000, 1.52000, 4.1400E-01, & 174 666.667, 15.0000, 1.59000, 2.1100E-01, & 175 675.676, 14.8000, 1.61000, 2.0500E-01, & 176 714.286, 14.0000, 1.64000, 1.9500E-01, & 177 769.231, 13.0000, 1.69000, 1.9500E-01, & 178 800.000, 12.5000, 1.74000, 1.9800E-01, & 179 869.565, 11.5000, 1.89000, 3.7400E-01, & 180 909.091, 11.0000, 1.67000, 4.8500E-01, & 181 944.198, 10.5910, 1.72000, 3.4000E-01, & 182 1000.000, 10.0000, 1.89000, 4.5500E-01, & 183 1020.408, 9.8000, 1.91000, 6.8000E-01, & 184 1052.632, 9.5000, 1.67000, 7.5000E-01, & 185 1086.957, 9.2000, 1.60000, 5.8600E-01, & 186 1111.111, 9.0000, 1.65000, 6.3300E-01, & 187 1149.425, 8.7000, 1.53000, 7.7200E-01, & 188 1176.471, 8.5000, 1.37000, 7.5500E-01, & 189 1219.512, 8.2000, 1.20000, 6.4500E-01, & 190 1265.823, 7.9000, 1.14000, 4.8800E-01, & 191 1388.889, 7.2000, 1.21000, 1.7600E-01, & 192 1538.462, 6.5000, 1.37000, 1.2800E-01, & 193 1612.903, 6.2000, 1.42400, 1.6500E-01, & 194 1666.667, 6.0000, 1.42500, 1.9500E-01, & 195 1818.182, 5.5000, 1.33700, 1.8300E-01, & 196 2000.000, 5.0000, 1.36000, 1.2100E-01, & 197 2222.222, 4.5000, 1.38500, 1.2000E-01, & 198 2500.000, 4.0000, 1.39800, 1.2600E-01, & 199 2666.667, 3.7500, 1.39600, 1.3100E-01, & 200 2857.143, 3.5000, 1.37600, 1.5800E-01, & 201 2948.113, 3.3920, 1.35200, 1.5900E-01, & 202 3125.000, 3.2000, 1.31100, 1.3500E-01, & 203 3333.333, 3.0000, 1.29300, 9.5500E-02, & 204 3703.704, 2.7000, 1.30300, 5.7000E-03, & 205 4000.000, 2.5000, 1.34400, 3.7600E-03, & 206 4444.444, 2.2500, 1.37000, 1.8000E-03, & 207 5000.000, 2.0000, 1.38400, 1.2600E-03, & 208 5555.556, 1.8000, 1.39000, 5.5000E-04, & 209 6510.417, 1.5360, 1.40300, 1.3700E-04, & 210 7692.308, 1.3000, 1.41000, 1.0000E-05, & 211 9433.962, 1.0600, 1.42000, 1.5000E-06, & 212 11627.907, 0.8600, 1.42500, 1.7900E-07, & 213 14409.222, 0.6940, 1.42800, 1.9900E-08, & 214 15797.788, 0.6330, 1.42900, 1.4700E-08, & 215 18181.818, 0.5500, 1.43000, 1.0000E-08, & 216 19417.476, 0.5150, 1.43100, 1.0000E-08, & 217 20491.803, 0.4880, 1.43200, 1.0000E-08, & 218 25000.000, 0.4000, 1.44000, 1.0000E-08, & 219 29673.591, 0.3370, 1.45900, 1.0000E-08, & 220 33333.333, 0.3000, 1.46900, 1.0000E-08, & 221 40000.000, 0.2500, 1.48400, 1.0000E-08, & 222 50000.000, 0.2000, 1.49800, 1.0000E-08 / 161 223 !--------------------------------------------------------- 162 224 163 225 IF (debut) THEN 226 164 227 !--initialising dry diameters to geometrically spaced mass/volume (see Jacobson 1994) 165 228 mdw(1)=mdwmin … … 176 239 PRINT *,'init mdw=', mdw 177 240 178 !$OMP MASTER179 180 ! CALL gather(tr_seri, tr_seri_glo)181 ! IF (is_mpi_root) THEN182 ! IF (MAXVAL(tr_seri_glo).LT.1e-30) THEN183 184 241 !--compute particle radius for a composition of 75% H2SO4 / 25% H2O at T=293K 185 242 DO bin_number=1, nbtr_bin … … 225 282 & lambda_int(NwvmaxSW+nwave_sw+nwave_lw+Nwv) 226 283 227 OPEN (unit=11,file='h2so4_0.75_300.00_hummel_1988_p_q.dat')228 229 284 IF (refr_ind_interpol) THEN 230 DO nb=1,nb_lambda_h2so4 231 READ(11,*) ref_ind(nb,:) 232 ENDDO 285 233 286 ilambda_max=ref_ind(1,2)/1.e6 !--in m 234 287 ilambda_min=ref_ind(nb_lambda_h2so4,2)/1.e6 !--in m … … 259 312 ENDIF 260 313 ENDDO 261 ELSE 262 DO nb=1,nb_lambda_h2so4 263 READ(11,*) wavenumber, ilambda, n_r_h2so4, n_i_h2so4 264 ilambda=1000.*ilambda !wavelength in nm 265 DO Nwv=1, NwvmaxSW+nwave_sw+nwave_lw+NwvmaxLW 266 IF (ilambda/1.e9.GT.lambda_int(Nwv)) THEN !--- step function 267 n_r(Nwv)=n_r_h2so4 268 n_i(Nwv)=n_i_h2so4 314 315 ELSE !-- no refr_ind_interpol, closest neighbour from upper wavelength 316 317 DO Nwv=1, NwvmaxSW+nwave_sw+nwave_lw+NwvmaxLW 318 n_r(Nwv)=ref_ind(1,3) 319 n_i(Nwv)=ref_ind(1,4) 320 DO nb=2,nb_lambda_h2so4 321 IF (ref_ind(nb,2)/1.e6.GT.lambda_int(Nwv)) THEN !--- step function 322 n_r(Nwv)=ref_ind(nb,3) 323 n_i(Nwv)=ref_ind(nb,4) 269 324 ENDIF 270 325 ENDDO 271 326 ENDDO 272 327 ENDIF 273 CLOSE(11)274 328 275 329 !---Loop on wavelengths … … 400 454 401 455 ENDDO !--loop on wavelength 402 403 456 404 457 !---averaging over LMDZ wavebands … … 491 544 piz_bin(nb,bin_number)=ss_w(nb) 492 545 cg_bin(nb,bin_number)=ss_g(nb) 493 494 546 ENDDO 495 547 496 548 ENDDO !loop over tracer bins 497 549 498 ! ENDIF !mpi_root 499 500 !$OMP END MASTER 501 CALL bcast(alpha_bin) 502 CALL bcast(piz_bin) 503 CALL bcast(cg_bin) 504 !$OMP BARRIER 505 506 ! CALL scatter(alpha_bin, alpha_bin) 507 ! CALL scatter(piz_bin, piz_bin) 508 ! CALL scatter(cg_bin, cg_bin) 550 !!$OMP END MASTER 551 ! CALL bcast(alpha_bin) 552 ! CALL bcast(piz_bin) 553 ! CALL bcast(cg_bin) 554 !!$OMP BARRIER 509 555 510 556 !set to default values at first time step (tr_seri still zero) … … 515 561 tau_strat_wave(:,:,:)=1.e-15 516 562 517 ELSE 518 519 ! CALL gather(tr_seri, tr_seri_glo) 563 ELSE !-- not debut 520 564 521 565 !--compute optical properties of actual size distribution (from tr_seri) -
LMDZ5/trunk/libf/phylmd/StratAer/traccoag_mod.F90
r2700 r2704 73 73 REAL,PARAMETER :: xlat_sai=0.0 ! latitude of SAI in degree 74 74 REAL,PARAMETER :: xlon_sai=120.35 ! longitude of SAI in degree 75 76 !--be careful - this needs to be changed with resolution - here for 96x95 - seems to work for 48x36 as well77 REAL,PARAMETER :: dlat=0.9474 ! d latitude in degree78 REAL,PARAMETER :: dlon=1.875 ! d longitude in degree79 75 80 76 !--other local variables … … 95 91 REAL :: zdz ! thickness of atm. model layer in m 96 92 REAL,DIMENSION(klon,klev) :: dens_aer ! density of aerosol particles [kg/m3 aerosol] with default H2SO4 mass fraction 93 REAL :: dlat, dlon ! d latitude and d longitude of grid in degree 97 94 98 95 IF (is_mpi_root) THEN 99 96 PRINT *,'in traccoag: date from phys_cal_mod =',year_cur,'-',mth_cur,'-',day_cur,'-',hour 100 97 ENDIF 98 99 dlat=180./2./FLOAT(nbp_lat) ! d latitude in degree 100 dlon=360./2./FLOAT(nbp_lon) ! d longitude in degree 101 101 102 102 DO it=1, nbtr_bin … … 168 168 DO i=1,klon 169 169 !Pinatubo eruption at 15.14N, 120.35E 170 IF ( xlat(i).G T.xlat_vol-dlat .AND. xlat(i).LT.xlat_vol+dlat .AND. &171 xlon(i).G T.xlon_vol-dlon .AND. xlon(i).LT.xlon_vol+dlon ) THEN170 IF ( xlat(i).GE.xlat_vol-dlat .AND. xlat(i).LT.xlat_vol+dlat .AND. & 171 xlon(i).GE.xlon_vol-dlon .AND. xlon(i).LT.xlon_vol+dlon ) THEN 172 172 ! compute altLMDz 173 173 altLMDz(:)=0.0 … … 209 209 ! IF ((mth_cur==4 .AND. & 210 210 ! SAI continuous emission o 211 IF ( xlat(i).G T.xlat_sai-dlat .AND. xlat(i).LT.xlat_sai+dlat .AND. &212 & xlon(i).G T.xlon_sai-dlon .AND. xlon(i).LT.xlon_sai+dlon ) THEN211 IF ( xlat(i).GE.xlat_sai-dlat .AND. xlat(i).LT.xlat_sai+dlat .AND. & 212 & xlon(i).GE.xlon_sai-dlon .AND. xlon(i).LT.xlon_sai+dlon ) THEN 213 213 ! compute altLMDz 214 214 altLMDz(:)=0.0
Note: See TracChangeset
for help on using the changeset viewer.