Changeset 2146 for LMDZ5/trunk/libf/phylmd/rrtm/readaerosolstrato_rrtm.F90
- Timestamp:
- Nov 14, 2014, 9:22:21 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk/libf/phylmd/rrtm/readaerosolstrato_rrtm.F90
r2058 r2146 16 16 USE aero_mod 17 17 USE dimphy 18 USE YOERAD , ONLY : NLW 18 19 19 20 implicit none 20 21 22 include "YOMCST.h" 21 23 include "dimensions.h" 22 24 … … 33 35 real, pointer:: time(:) 34 36 real, pointer:: lev(:) 35 integer k, band, wave 37 integer k, band, wave, i 36 38 integer, save :: mth_pre 37 39 … … 45 47 real, allocatable:: tauaerstrat_mois_glo_bands(:,:,:) 46 48 49 real, allocatable:: sum_tau_aer_strat(:) 50 47 51 ! For NetCDF: 48 52 integer ncid_in ! IDs for input files … … 50 54 51 55 ! Stratospheric aerosols optical properties 52 ! alpha_strat over the 2 bands is normalised by the 550 nm extinction coefficient 53 ! alpha_strat_wave is *not* normalised by the 550 nm extinction coefficient 54 real, dimension(nbands_rrtm) :: alpha_strat, piz_strat, cg_strat 55 data alpha_strat/0.938538969, 0.990073204, 0.992904723, 0.829215884, 0.439313501, 0.156857833/ 56 data cg_strat /0.699142992, 0.716326416, 0.735462785, 0.736726701, 0.712068975, 0.575097859/ 57 data piz_strat /1.000000000, 1.000000000, 1.000000000, 1.000000000, 0.997781098, 0.452584684/ 58 real, dimension(nwave) :: alpha_strat_wave 59 data alpha_strat_wave/3.36780953,3.34667683,3.20444202,3.0293026,2.82108808/ 60 56 ! alpha_sw_strat over the 6 bands is normalised by the 550 nm extinction coefficient 57 real, dimension(nbands_sw_rrtm) :: alpha_sw_strat, piz_sw_strat, cg_sw_strat 58 data alpha_sw_strat/0.8545564, 0.8451642, 0.9821724, 0.8145110, 0.3073565, 7.7966176E-02/ 59 data cg_sw_strat /0.6997170, 0.6810035, 0.7403592, 0.7562674, 0.6676504, 0.3478689/ 60 data piz_sw_strat /0.9999998, 0.9999998, 1.000000000, 0.9999958, 0.9977155, 0.4510679/ 61 ! 62 !--diagnostics AOD in the SW 63 ! alpha_sw_strat_wave is *not* normalised by the 550 nm extinction coefficient 64 real, dimension(nwave) :: alpha_sw_strat_wave 65 data alpha_sw_strat_wave/3.708007,4.125824,4.136584,3.887478,3.507738/ 66 ! 67 !--diagnostics AOD in the LW at 10 um 68 real :: alpha_lw_strat_wave 69 data alpha_lw_strat_wave/0.2746812/ 70 ! 71 real, dimension(nbands_lw_rrtm) :: alpha_lw_abs_rrtm 72 data alpha_lw_abs_rrtm/ 8.8340312E-02, 6.9856711E-02, 6.2652975E-02, 5.7188231E-02, & 73 6.3157059E-02, 5.5072524E-02, 5.0571125E-02, 0.1349073, & 74 0.1381676, 9.6506312E-02, 5.1312990E-02, 2.4256418E-02, & 75 2.7191756E-02, 3.3862915E-02, 1.6132960E-02, 1.4275438E-02/ ! calculated with Mie_SW_LW_RRTM_V2.4 (bimodal, corrected) 76 ! for r_0=/0.13E-6, 0.41E-6/ m, sigma_g=/1.26, 1.30/ 77 ! order: increasing wavelength! 61 78 !-------------------------------------------------------- 62 79 63 80 IF (.not.ALLOCATED(tau_aer_strat)) ALLOCATE(tau_aer_strat(klon,klev)) 81 IF (.not.ALLOCATED(sum_tau_aer_strat)) ALLOCATE(sum_tau_aer_strat(klon)) 64 82 65 83 IF (is_mpi_root) THEN … … 67 85 IF (debut.OR.mth_cur.NE.mth_pre) THEN 68 86 69 IF (nbands_ rrtm.NE.6) THEN70 print *,'nbands_ rrtm doit etre egal a 6 dans readaerosolstrat_rrtm'87 IF (nbands_sw_rrtm.NE.6) THEN 88 print *,'nbands_sw_rrtm doit etre egal a 6 dans readaerosolstrat_rrtm' 71 89 STOP 72 90 ENDIF … … 112 130 ALLOCATE(tauaerstrat_mois(n_lon, n_lat, n_lev)) 113 131 ALLOCATE(tauaerstrat_mois_glo(klon_glo, n_lev)) 114 ALLOCATE(tauaerstrat_mois_glo_bands(klon_glo, n_lev,nbands_ rrtm))132 ALLOCATE(tauaerstrat_mois_glo_bands(klon_glo, n_lev,nbands_sw_rrtm)) 115 133 116 134 !--reading stratospheric AOD at 550 nm … … 143 161 ENDIF !--is_mpi_root 144 162 145 !--total vertical aod at the 5 wavelengths163 !--total vertical aod at the 5 SW wavelengths 146 164 DO wave=1, nwave 147 165 DO k=1, klev 148 tausum_aero(:,wave,id_ strat)=tausum_aero(:,wave,id_strat)+tau_aer_strat(:,k)*alpha_strat_wave(wave)/alpha_strat_wave(2)166 tausum_aero(:,wave,id_STRAT_phy)=tausum_aero(:,wave,id_STRAT_phy)+tau_aer_strat(:,k)*alpha_sw_strat_wave(wave)/alpha_sw_strat_wave(2) 149 167 ENDDO 150 168 ENDDO 151 169 152 170 !--weighted average for cg, piz and tau, adding strat aerosols on top of tropospheric ones 153 DO band=1, nbands_rrtm 154 !--anthropogenic aerosols bands 1 to nbands_rrtm 155 cg_aero_rrtm(:,:,2,band) = ( cg_aero_rrtm(:,:,2,band)*piz_aero_rrtm(:,:,2,band)*tau_aero_rrtm(:,:,2,band) + & 156 cg_strat(band)*piz_strat(band)*alpha_strat(band)*tau_aer_strat(:,:) ) / & 157 MAX( piz_aero_rrtm(:,:,2,band)*tau_aero_rrtm(:,:,2,band) + & 158 piz_strat(band)*alpha_strat(band)*tau_aer_strat(:,:), 1.e-15 ) 159 piz_aero_rrtm(:,:,2,band) = ( piz_aero_rrtm(:,:,2,band)*tau_aero_rrtm(:,:,2,band) + & 160 piz_strat(band)*alpha_strat(band)*tau_aer_strat(:,:) ) / & 161 MAX( tau_aero_rrtm(:,:,2,band) + alpha_strat(band)*tau_aer_strat(:,:), 1.e-15 ) 162 tau_aero_rrtm(:,:,2,band) = tau_aero_rrtm(:,:,2,band) + alpha_strat(band)*tau_aer_strat(:,:) 163 !--natural aerosols bands 1 to nbands_rrtm 164 cg_aero_rrtm(:,:,1,band) = ( cg_aero_rrtm(:,:,1,band)*piz_aero_rrtm(:,:,1,band)*tau_aero_rrtm(:,:,1,band) + & 165 cg_strat(band)*piz_strat(band)*alpha_strat(band)*tau_aer_strat(:,:) ) / & 166 MAX( piz_aero_rrtm(:,:,1,band)*tau_aero_rrtm(:,:,1,band) + & 167 piz_strat(band)*alpha_strat(band)*tau_aer_strat(:,:), 1.e-15 ) 168 piz_aero_rrtm(:,:,1,band) = ( piz_aero_rrtm(:,:,1,band)*tau_aero_rrtm(:,:,1,band) + & 169 piz_strat(band)*alpha_strat(band)*tau_aer_strat(:,:) ) / & 170 MAX( tau_aero_rrtm(:,:,1,band) + alpha_strat(band)*tau_aer_strat(:,:),1.e-15 ) 171 tau_aero_rrtm(:,:,1,band) = tau_aero_rrtm(:,:,1,band) + alpha_strat(band)*tau_aer_strat(:,:) 171 DO band=1, nbands_sw_rrtm 172 !--anthropogenic aerosols bands 1 to nbands_sw_rrtm 173 cg_aero_sw_rrtm(:,:,2,band) = ( cg_aero_sw_rrtm(:,:,2,band)*piz_aero_sw_rrtm(:,:,2,band)*tau_aero_sw_rrtm(:,:,2,band) + & 174 cg_sw_strat(band)*piz_sw_strat(band)*alpha_sw_strat(band)*tau_aer_strat(:,:) ) / & 175 MAX( piz_aero_sw_rrtm(:,:,2,band)*tau_aero_sw_rrtm(:,:,2,band) + & 176 piz_sw_strat(band)*alpha_sw_strat(band)*tau_aer_strat(:,:), 1.e-15 ) 177 piz_aero_sw_rrtm(:,:,2,band) = ( piz_aero_sw_rrtm(:,:,2,band)*tau_aero_sw_rrtm(:,:,2,band) + & 178 piz_sw_strat(band)*alpha_sw_strat(band)*tau_aer_strat(:,:) ) / & 179 MAX( tau_aero_sw_rrtm(:,:,2,band) + alpha_sw_strat(band)*tau_aer_strat(:,:), 1.e-15 ) 180 tau_aero_sw_rrtm(:,:,2,band) = tau_aero_sw_rrtm(:,:,2,band) + alpha_sw_strat(band)*tau_aer_strat(:,:) 181 !--natural aerosols bands 1 to nbands_sw_rrtm 182 cg_aero_sw_rrtm(:,:,1,band) = ( cg_aero_sw_rrtm(:,:,1,band)*piz_aero_sw_rrtm(:,:,1,band)*tau_aero_sw_rrtm(:,:,1,band) + & 183 cg_sw_strat(band)*piz_sw_strat(band)*alpha_sw_strat(band)*tau_aer_strat(:,:) ) / & 184 MAX( piz_aero_sw_rrtm(:,:,1,band)*tau_aero_sw_rrtm(:,:,1,band) + & 185 piz_sw_strat(band)*alpha_sw_strat(band)*tau_aer_strat(:,:), 1.e-15 ) 186 piz_aero_sw_rrtm(:,:,1,band) = ( piz_aero_sw_rrtm(:,:,1,band)*tau_aero_sw_rrtm(:,:,1,band) + & 187 piz_sw_strat(band)*alpha_sw_strat(band)*tau_aer_strat(:,:) ) / & 188 MAX( tau_aero_sw_rrtm(:,:,1,band) + alpha_sw_strat(band)*tau_aer_strat(:,:),1.e-15 ) 189 tau_aero_sw_rrtm(:,:,1,band) = tau_aero_sw_rrtm(:,:,1,band) + alpha_sw_strat(band)*tau_aer_strat(:,:) 190 !--no stratospheric aerosol in index 1 for these tests 191 ! cg_aero_sw_rrtm(:,:,1,band) = cg_aero_sw_rrtm(:,:,1,band) 192 ! piz_aero_sw_rrtm(:,:,1,band) = piz_aero_sw_rrtm(:,:,1,band) 193 ! tau_aero_sw_rrtm(:,:,1,band) = tau_aero_sw_rrtm(:,:,1,band) 194 ENDDO 195 196 !--stratospheric AOD in LW 197 IF (nbands_lw_rrtm .NE. NLW) then 198 print*, 'different values for NLW (=',NLW,') and nbands_lw_rrtm (=', nbands_lw_rrtm, ')' 199 STOP 200 ENDIF 201 202 DO band=1, nbands_lw_rrtm 203 tau_aero_lw_rrtm(:,:,2,band) = tau_aero_lw_rrtm(:,:,2,band) + alpha_lw_abs_rrtm(band)*tau_aer_strat(:,:) 204 tau_aero_lw_rrtm(:,:,1,band) = tau_aero_lw_rrtm(:,:,1,band) + alpha_lw_abs_rrtm(band)*tau_aer_strat(:,:) 205 !--no stratospheric aerosols in index 1 for these tests 206 ! tau_aero_lw_rrtm(:,:,1,band) = tau_aero_lw_rrtm(:,:,1,band) 172 207 ENDDO 173 208
Note: See TracChangeset
for help on using the changeset viewer.