Changeset 5118 for LMDZ6/branches/Amaury_dev/libf/phylmd/StratAer
- Timestamp:
- Jul 24, 2024, 4:39:59 PM (4 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/Amaury_dev/libf/phylmd/StratAer/calcaerosolstrato_rrtm.F90
r5099 r5118 1 2 1 ! $Id$ 3 2 4 SUBROUTINE calcaerosolstrato_rrtm(pplay, t_seri,paprs,debut)3 SUBROUTINE calcaerosolstrato_rrtm(pplay, t_seri, paprs, debut) 5 4 6 5 USE phys_state_var_mod, ONLY: tau_aero_sw_rrtm, piz_aero_sw_rrtm, cg_aero_sw_rrtm, tau_aero_lw_rrtm … … 10 9 USE temps_mod 11 10 USE lmdz_yomcst 11 USE lmdz_iniprint, ONLY: lunout, prt_level 12 12 13 13 IMPLICIT NONE … … 16 16 INCLUDE "clesphys.h" 17 17 INCLUDE "paramet.h" 18 INCLUDE "iniprint.h"19 18 20 ! Variable input21 REAL, DIMENSION(klon,klev),INTENT(IN):: t_seri ! Temperature22 REAL, DIMENSION(klon,klev),INTENT(IN):: pplay ! pression pour le mileu de chaque couche (en Pa)23 LOGICAL, INTENT(IN):: debut ! le flag de l'initialisation de la physique24 REAL, DIMENSION(klon,klev+1),INTENT(IN) :: paprs ! pression pour chaque inter-couche (en Pa)19 ! Variable input 20 REAL, DIMENSION(klon, klev), INTENT(IN) :: t_seri ! Temperature 21 REAL, DIMENSION(klon, klev), INTENT(IN) :: pplay ! pression pour le mileu de chaque couche (en Pa) 22 LOGICAL, INTENT(IN) :: debut ! le flag de l'initialisation de la physique 23 REAL, DIMENSION(klon, klev + 1), INTENT(IN) :: paprs ! pression pour chaque inter-couche (en Pa) 25 24 26 ! Stratospheric aerosols optical properties27 REAL, DIMENSION(klon, klev,nbands_sw_rrtm) :: tau_strat, piz_strat, cg_strat28 REAL, DIMENSION(klon, klev,nwave_sw+nwave_lw) :: tau_strat_wave29 REAL, DIMENSION(klon, klev,nbands_lw_rrtm) :: tau_lw_abs_rrtm25 ! Stratospheric aerosols optical properties 26 REAL, DIMENSION(klon, klev, nbands_sw_rrtm) :: tau_strat, piz_strat, cg_strat 27 REAL, DIMENSION(klon, klev, nwave_sw + nwave_lw) :: tau_strat_wave 28 REAL, DIMENSION(klon, klev, nbands_lw_rrtm) :: tau_lw_abs_rrtm 30 29 31 30 INTEGER k, band, wave, i 32 31 REAL zrho, zdz 33 32 34 !--calculate optical properties of the aerosol size distribution from tr_seri35 tau_strat =0.036 piz_strat =0.037 cg_strat =0.038 tau_strat_wave =0.039 tau_lw_abs_rrtm =0.033 !--calculate optical properties of the aerosol size distribution from tr_seri 34 tau_strat = 0.0 35 piz_strat = 0.0 36 cg_strat = 0.0 37 tau_strat_wave = 0.0 38 tau_lw_abs_rrtm = 0.0 40 39 41 40 CALL miecalc_aer(tau_strat, piz_strat, cg_strat, tau_strat_wave, tau_lw_abs_rrtm, paprs, debut) 42 41 43 !!--test CK: deactivate radiative effect of aerosol44 ! tau_strat=0.045 ! piz_strat=0.046 ! cg_strat=0.047 ! tau_strat_wave=0.048 ! tau_lw_abs_rrtm=0.042 !!--test CK: deactivate radiative effect of aerosol 43 ! tau_strat=0.0 44 ! piz_strat=0.0 45 ! cg_strat=0.0 46 ! tau_strat_wave=0.0 47 ! tau_lw_abs_rrtm=0.0 49 48 50 !--test CK: deactivate SW radiative effect of aerosol (but leave LW)51 ! tau_strat=0.052 ! piz_strat=0.053 ! cg_strat=0.049 !--test CK: deactivate SW radiative effect of aerosol (but leave LW) 50 ! tau_strat=0.0 51 ! piz_strat=0.0 52 ! cg_strat=0.0 54 53 55 ! DO wave=1, nwave_sw56 ! tau_strat_wave(:,:,wave)=0.057 ! ENDDO54 ! DO wave=1, nwave_sw 55 ! tau_strat_wave(:,:,wave)=0.0 56 ! ENDDO 58 57 59 !--test CK: deactivate LW radiative effect of aerosol (but leave SW)60 ! tau_lw_abs_rrtm=0.058 !--test CK: deactivate LW radiative effect of aerosol (but leave SW) 59 ! tau_lw_abs_rrtm=0.0 61 60 62 ! DO wave=nwave_sw+1, nwave_sw+nwave_lw63 ! tau_strat_wave(:,:,wave)=0.064 ! ENDDO61 ! DO wave=nwave_sw+1, nwave_sw+nwave_lw 62 ! tau_strat_wave(:,:,wave)=0.0 63 ! ENDDO 65 64 66 !--total vertical aod at the 5 SW + 1 LW wavelengths67 DO wave =1, nwave_sw+nwave_lw68 DO k =1, klev69 tausum_aero(:, wave,id_STRAT_phy)=tausum_aero(:,wave,id_STRAT_phy)+tau_strat_wave(:,k,wave)65 !--total vertical aod at the 5 SW + 1 LW wavelengths 66 DO wave = 1, nwave_sw + nwave_lw 67 DO k = 1, klev 68 tausum_aero(:, wave, id_STRAT_phy) = tausum_aero(:, wave, id_STRAT_phy) + tau_strat_wave(:, k, wave) 70 69 ENDDO 71 70 ENDDO 72 71 73 !--weighted average for cg, piz and tau, adding strat aerosols on top of tropospheric ones74 DO band =1, nbands_sw_rrtm72 !--weighted average for cg, piz and tau, adding strat aerosols on top of tropospheric ones 73 DO band = 1, nbands_sw_rrtm 75 74 !--no stratospheric aerosol in index 1 76 cg_aero_sw_rrtm(:, :,1,band) = cg_aero_sw_rrtm(:,:,2,band)77 piz_aero_sw_rrtm(:, :,1,band) = piz_aero_sw_rrtm(:,:,2,band)78 tau_aero_sw_rrtm(:, :,1,band) = tau_aero_sw_rrtm(:,:,2,band)75 cg_aero_sw_rrtm(:, :, 1, band) = cg_aero_sw_rrtm(:, :, 2, band) 76 piz_aero_sw_rrtm(:, :, 1, band) = piz_aero_sw_rrtm(:, :, 2, band) 77 tau_aero_sw_rrtm(:, :, 1, band) = tau_aero_sw_rrtm(:, :, 2, band) 79 78 80 79 !--tropospheric and stratospheric aerosol in index 2 81 cg_aero_sw_rrtm(:, :,2,band) = ( cg_aero_sw_rrtm(:,:,2,band)*piz_aero_sw_rrtm(:,:,2,band)*tau_aero_sw_rrtm(:,:,2,band) + &82 cg_strat(:,:,band)*piz_strat(:,:,band)*tau_strat(:,:,band) ) /&83 MAX( piz_aero_sw_rrtm(:,:,2,band)*tau_aero_sw_rrtm(:,:,2,band) +&84 piz_strat(:,:,band)*tau_strat(:,:,band), 1.e-15)85 piz_aero_sw_rrtm(:, :,2,band)= ( piz_aero_sw_rrtm(:,:,2,band)*tau_aero_sw_rrtm(:,:,2,band) +&86 piz_strat(:,:,band)*tau_strat(:,:,band) ) /&87 MAX( tau_aero_sw_rrtm(:,:,2,band) + tau_strat(:,:,band), 1.e-15)88 tau_aero_sw_rrtm(:, :,2,band)= tau_aero_sw_rrtm(:,:,2,band) + tau_strat(:,:,band)80 cg_aero_sw_rrtm(:, :, 2, band) = (cg_aero_sw_rrtm(:, :, 2, band) * piz_aero_sw_rrtm(:, :, 2, band) * tau_aero_sw_rrtm(:, :, 2, band) + & 81 cg_strat(:, :, band) * piz_strat(:, :, band) * tau_strat(:, :, band)) / & 82 MAX(piz_aero_sw_rrtm(:, :, 2, band) * tau_aero_sw_rrtm(:, :, 2, band) + & 83 piz_strat(:, :, band) * tau_strat(:, :, band), 1.e-15) 84 piz_aero_sw_rrtm(:, :, 2, band) = (piz_aero_sw_rrtm(:, :, 2, band) * tau_aero_sw_rrtm(:, :, 2, band) + & 85 piz_strat(:, :, band) * tau_strat(:, :, band)) / & 86 MAX(tau_aero_sw_rrtm(:, :, 2, band) + tau_strat(:, :, band), 1.e-15) 87 tau_aero_sw_rrtm(:, :, 2, band) = tau_aero_sw_rrtm(:, :, 2, band) + tau_strat(:, :, band) 89 88 ENDDO 90 89 91 DO band =1, nbands_lw_rrtm90 DO band = 1, nbands_lw_rrtm 92 91 !--no stratospheric aerosols in index 1 93 tau_aero_lw_rrtm(:, :,1,band) = tau_aero_lw_rrtm(:,:,2,band)92 tau_aero_lw_rrtm(:, :, 1, band) = tau_aero_lw_rrtm(:, :, 2, band) 94 93 !--tropospheric and stratospheric aerosol in index 2 95 tau_aero_lw_rrtm(:, :,2,band) = tau_aero_lw_rrtm(:,:,2,band) + tau_lw_abs_rrtm(:,:,band)94 tau_aero_lw_rrtm(:, :, 2, band) = tau_aero_lw_rrtm(:, :, 2, band) + tau_lw_abs_rrtm(:, :, band) 96 95 ENDDO 97 96 98 WHERE (tau_aero_sw_rrtm < 1.e-14) piz_aero_sw_rrtm =1.099 WHERE (tau_aero_sw_rrtm < 1.e-14) tau_aero_sw_rrtm =1.e-15100 WHERE (tau_aero_lw_rrtm < 1.e-14) tau_aero_lw_rrtm =1.e-1597 WHERE (tau_aero_sw_rrtm < 1.e-14) piz_aero_sw_rrtm = 1.0 98 WHERE (tau_aero_sw_rrtm < 1.e-14) tau_aero_sw_rrtm = 1.e-15 99 WHERE (tau_aero_lw_rrtm < 1.e-14) tau_aero_lw_rrtm = 1.e-15 101 100 102 tausum_strat(:, :)=0.0103 DO i =1,klon104 DO k=1,klev105 IF (stratomask(i,k)>0.5) THEN106 tausum_strat(i,1)=tausum_strat(i,1)+tau_strat_wave(i,k,2) !--550 nm107 tausum_strat(i,2)=tausum_strat(i,2)+tau_strat_wave(i,k,5) !--1020 nm108 tausum_strat(i,3)=tausum_strat(i,3)+tau_strat_wave(i,k,6) !--10 um109 ENDIF110 ENDDO101 tausum_strat(:, :) = 0.0 102 DO i = 1, klon 103 DO k = 1, klev 104 IF (stratomask(i, k)>0.5) THEN 105 tausum_strat(i, 1) = tausum_strat(i, 1) + tau_strat_wave(i, k, 2) !--550 nm 106 tausum_strat(i, 2) = tausum_strat(i, 2) + tau_strat_wave(i, k, 5) !--1020 nm 107 tausum_strat(i, 3) = tausum_strat(i, 3) + tau_strat_wave(i, k, 6) !--10 um 108 ENDIF 109 ENDDO 111 110 ENDDO 112 111 113 DO i =1,klon114 DO k=1,klev115 zrho=pplay(i,k)/t_seri(i,k)/RD !air density in kg/m3116 zdz=(paprs(i,k)-paprs(i,k+1))/zrho/RG !thickness of layer in m117 tau_strat_550(i,k)=tau_strat_wave(i,k,2)/zdz118 tau_strat_1020(i,k)=tau_strat_wave(i,k,5)/zdz119 ENDDO112 DO i = 1, klon 113 DO k = 1, klev 114 zrho = pplay(i, k) / t_seri(i, k) / RD !air density in kg/m3 115 zdz = (paprs(i, k) - paprs(i, k + 1)) / zrho / RG !thickness of layer in m 116 tau_strat_550(i, k) = tau_strat_wave(i, k, 2) / zdz 117 tau_strat_1020(i, k) = tau_strat_wave(i, k, 5) / zdz 118 ENDDO 120 119 ENDDO 121 120
Note: See TracChangeset
for help on using the changeset viewer.