- Timestamp:
- Nov 28, 2014, 4:36:29 PM (10 years ago)
- Location:
- LMDZ5/branches/testing
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/branches/testing
- Property svn:mergeinfo changed
/LMDZ5/trunk merged: 2072,2075-2115,2117-2126,2128-2158
- Property svn:mergeinfo changed
-
LMDZ5/branches/testing/libf/phylmd/rrtm/readaerosolstrato_rrtm.F90
r2073 r2160 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 … … 130 148 CALL grid2dTo1d_glo(tauaerstrat_mois,tauaerstrat_mois_glo) 131 149 150 ENDIF !--is_mpi_root 151 152 !--keep memory of previous month 153 mth_pre=mth_cur 154 132 155 !--scatter on all proc 133 156 CALL scatter(tauaerstrat_mois_glo,tau_aer_strat) 134 157 158 IF (is_mpi_root) THEN 159 ! 135 160 DEALLOCATE(tauaerstrat) 136 161 DEALLOCATE(tauaerstrat_mois) 137 162 DEALLOCATE(tauaerstrat_mois_glo) 138 139 mth_pre=mth_cur163 ! 164 ENDIF !--is_mpi_root 140 165 141 166 ENDIF !--debut ou nouveau mois 142 167 143 ENDIF !--is_mpi_root 144 145 !--total vertical aod at the 5 wavelengths 168 !--total vertical aod at the 5 SW wavelengths 146 169 DO wave=1, nwave 147 170 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) 171 tausum_aero(:,wave,id_STRAT_phy)=tausum_aero(:,wave,id_STRAT_phy)+ & 172 tau_aer_strat(:,k)*alpha_sw_strat_wave(wave)/alpha_sw_strat_wave(2) 149 173 ENDDO 150 174 ENDDO 151 175 152 176 !--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(:,:) 177 DO band=1, nbands_sw_rrtm 178 !--anthropogenic aerosols bands 1 to nbands_sw_rrtm 179 cg_aero_sw_rrtm(:,:,2,band) = ( cg_aero_sw_rrtm(:,:,2,band)*piz_aero_sw_rrtm(:,:,2,band)*tau_aero_sw_rrtm(:,:,2,band) + & 180 cg_sw_strat(band)*piz_sw_strat(band)*alpha_sw_strat(band)*tau_aer_strat(:,:) ) / & 181 MAX( piz_aero_sw_rrtm(:,:,2,band)*tau_aero_sw_rrtm(:,:,2,band) + & 182 piz_sw_strat(band)*alpha_sw_strat(band)*tau_aer_strat(:,:), 1.e-15 ) 183 piz_aero_sw_rrtm(:,:,2,band) = ( piz_aero_sw_rrtm(:,:,2,band)*tau_aero_sw_rrtm(:,:,2,band) + & 184 piz_sw_strat(band)*alpha_sw_strat(band)*tau_aer_strat(:,:) ) / & 185 MAX( tau_aero_sw_rrtm(:,:,2,band) + alpha_sw_strat(band)*tau_aer_strat(:,:), 1.e-15 ) 186 tau_aero_sw_rrtm(:,:,2,band) = tau_aero_sw_rrtm(:,:,2,band) + alpha_sw_strat(band)*tau_aer_strat(:,:) 187 !--natural aerosols bands 1 to nbands_sw_rrtm 188 cg_aero_sw_rrtm(:,:,1,band) = ( cg_aero_sw_rrtm(:,:,1,band)*piz_aero_sw_rrtm(:,:,1,band)*tau_aero_sw_rrtm(:,:,1,band) + & 189 cg_sw_strat(band)*piz_sw_strat(band)*alpha_sw_strat(band)*tau_aer_strat(:,:) ) / & 190 MAX( piz_aero_sw_rrtm(:,:,1,band)*tau_aero_sw_rrtm(:,:,1,band) + & 191 piz_sw_strat(band)*alpha_sw_strat(band)*tau_aer_strat(:,:), 1.e-15 ) 192 piz_aero_sw_rrtm(:,:,1,band) = ( piz_aero_sw_rrtm(:,:,1,band)*tau_aero_sw_rrtm(:,:,1,band) + & 193 piz_sw_strat(band)*alpha_sw_strat(band)*tau_aer_strat(:,:) ) / & 194 MAX( tau_aero_sw_rrtm(:,:,1,band) + alpha_sw_strat(band)*tau_aer_strat(:,:),1.e-15 ) 195 tau_aero_sw_rrtm(:,:,1,band) = tau_aero_sw_rrtm(:,:,1,band) + alpha_sw_strat(band)*tau_aer_strat(:,:) 196 !--no stratospheric aerosol in index 1 for these tests 197 ! cg_aero_sw_rrtm(:,:,1,band) = cg_aero_sw_rrtm(:,:,1,band) 198 ! piz_aero_sw_rrtm(:,:,1,band) = piz_aero_sw_rrtm(:,:,1,band) 199 ! tau_aero_sw_rrtm(:,:,1,band) = tau_aero_sw_rrtm(:,:,1,band) 200 ENDDO 201 202 !--stratospheric AOD in LW 203 IF (nbands_lw_rrtm .NE. NLW) then 204 print*, 'different values for NLW (=',NLW,') and nbands_lw_rrtm (=', nbands_lw_rrtm, ')' 205 STOP 206 ENDIF 207 208 DO band=1, nbands_lw_rrtm 209 tau_aero_lw_rrtm(:,:,2,band) = tau_aero_lw_rrtm(:,:,2,band) + alpha_lw_abs_rrtm(band)*tau_aer_strat(:,:) 210 tau_aero_lw_rrtm(:,:,1,band) = tau_aero_lw_rrtm(:,:,1,band) + alpha_lw_abs_rrtm(band)*tau_aer_strat(:,:) 211 !--no stratospheric aerosols in index 1 for these tests 212 ! tau_aero_lw_rrtm(:,:,1,band) = tau_aero_lw_rrtm(:,:,1,band) 172 213 ENDDO 173 214
Note: See TracChangeset
for help on using the changeset viewer.