- Timestamp:
- Jan 30, 2017, 5:54:45 PM (8 years ago)
- Location:
- LMDZ5/branches/testing
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/branches/testing
- Property svn:mergeinfo changed
/LMDZ5/trunk merged: 2728,2730-2775,2777-2785
- Property svn:mergeinfo changed
-
LMDZ5/branches/testing/libf/phylmd/rrtm/aeropt_lw_rrtm.F90
r2542 r2787 2 2 ! aeropt_lw_rrtm.F90 2014-05-13 C. Kleinschmitt 3 3 ! 2016-05-03 O. Boucher 4 ! 2016-12-17 O. Boucher 4 5 ! 5 6 ! This routine feeds aerosol LW properties to RRTM 6 7 ! we only consider absorption (not scattering) 8 ! we only consider dust for now 7 9 8 SUBROUTINE AEROPT_LW_RRTM( aerosol_couple,paprs,tr_seri)10 SUBROUTINE AEROPT_LW_RRTM(ok_alw, pdel, zrho, flag_aerosol, m_allaer, m_allaer_pi) 9 11 10 12 USE dimphy 11 13 USE aero_mod 12 USE infotrac_phy13 USE phys_state_var_mod, ONLY : tau_aero_lw_rrtm14 USE YO ERAD, ONLY : NLW14 USE phys_state_var_mod, ONLY: tau_aero_lw_rrtm 15 USE YOERAD, ONLY: NLW 16 USE YOMCST, ONLY: RG 15 17 16 18 IMPLICIT NONE 17 19 18 INCLUDE "YOMCST.h"19 20 INCLUDE "clesphys.h" 20 21 ! 21 22 ! Input arguments: 22 23 ! 23 LOGICAL, INTENT(IN) :: aerosol_couple 24 REAL, DIMENSION(klon,klev+1), INTENT(in) :: paprs 25 REAL, DIMENSION(klon,klev,nbtr), INTENT(in) :: tr_seri 26 ! 27 REAL, DIMENSION(klon,klev) :: zdp, mass_temp 28 ! 24 LOGICAL, INTENT(IN) :: ok_alw 25 INTEGER, INTENT(IN) :: flag_aerosol 26 REAL, DIMENSION(klon,klev), INTENT(IN) :: pdel, zrho 27 REAL, DIMENSION(klon,klev,naero_tot), INTENT(IN) :: m_allaer, m_allaer_pi 29 28 ! 30 29 INTEGER inu, i, k 31 INTEGER :: id_ASBCM, id_ASPOMM, id_ASSO4M, id_ASMSAM, id_CSSO4M, id_CSMSAM, id_SSSSM32 INTEGER :: id_CSSSM, id_ASSSM, id_CIDUSTM, id_AIBCM, id_AIPOMM, id_ASNO3M, id_CSNO3M, id_CINO3M33 30 REAL :: zdh(klon,klev) 31 REAL :: tmp_var, tmp_var_pi 32 CHARACTER*20 modname 34 33 ! 35 34 !--absorption coefficient for CIDUST 36 35 REAL:: alpha_abs_CIDUST_16bands(nbands_lw_rrtm) !--unit m2/g 37 DATA alpha_abs_CIDUST_16bands / & 38 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, & 39 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 / 36 DATA alpha_abs_CIDUST_16bands / & 37 0.001, 0.003, 0.005, 0.006, 0.012, 0.030, 0.148, 0.098, & 38 0.017, 0.053, 0.031, 0.008, 0.010, 0.011, 0.013, 0.015 / 39 ! 40 modname='aeropt_lw_rrtm' 40 41 ! 41 42 IF (NLW.NE.nbands_lw_rrtm) THEN 42 print *,'Erreur NLW doit etre egal a 16 pour cette routine' 43 stop 43 CALL abort_physic(modname,'Erreur NLW doit etre egal a 16 pour cette routine',1) 44 44 ENDIF 45 45 ! 46 IF (aerosol_couple) THEN 47 ! 48 do i=1,nbtr 49 select case(trim(solsym(i))) 50 case ("ASBCM") 51 id_ASBCM = i 52 case ("ASPOMM") 53 id_ASPOMM = i 54 case ("ASSO4M") 55 id_ASSO4M = i 56 case ("ASMSAM") 57 id_ASMSAM = i 58 case ("CSSO4M") 59 id_CSSO4M = i 60 case ("CSMSAM") 61 id_CSMSAM = i 62 case ("SSSSM") 63 id_SSSSM = i 64 case ("CSSSM") 65 id_CSSSM = i 66 case ("ASSSM") 67 id_ASSSM = i 68 case ("CIDUSTM") 69 id_CIDUSTM = i 70 case ("AIBCM") 71 id_AIBCM = i 72 case ("AIPOMM") 73 id_AIPOMM = i 74 case ("ASNO3M") 75 id_ASNO3M = i 76 case ("CSNO3M") 77 id_CSNO3M = i 78 case ("CINO3M") 79 id_CINO3M = i 80 end select 81 enddo 46 IF (ok_alw) THEN !--aerosol LW effects 47 ! 48 IF (flag_aerosol.EQ.5.OR.flag_aerosol.EQ.6) THEN !-Dust 49 ! 50 zdh(:,:)=pdel(:,:)/(RG*zrho(:,:)) ! m 82 51 ! 83 52 DO k=1, klev 84 zdp(:,k) = (paprs(:,k)-paprs(:,k+1))/RG !--kg/m2 85 ENDDO 86 ! 87 !--for now only consider dust 88 mass_temp(:,:)=tr_seri(:,:,id_CIDUSTM) !--kg/kg 89 ! 90 DO inu=1,NLW 91 ! 92 !--total aerosol 93 tau_aero_lw_rrtm(:,:,2,inu) = mass_temp(:,:)*zdp(:,:)*1000.*alpha_abs_CIDUST_16bands(inu) 94 !--no aerosol at all 95 tau_aero_lw_rrtm(:,:,1,inu) = 0.0 53 DO i=1, klon 54 ! 55 tmp_var =m_allaer(i,k,id_CIDUSTM_phy) /1.e6*zdh(i,k) !--g/m2 56 tmp_var_pi=m_allaer_pi(i,k,id_CIDUSTM_phy)/1.e6*zdh(i,k) !--g/m2 57 ! 58 DO inu=1, NLW 59 ! 60 !--total aerosol 61 tau_aero_lw_rrtm(i,k,2,inu) = MAX(1.e-15,tmp_var*alpha_abs_CIDUST_16bands(inu)) 62 !--natural aerosol 63 ! tau_aero_lw_rrtm(:,:,1,inu) = MAX(1.e-15,tmp_var_pi*alpha_abs_CIDUST_16bands(inu)) 64 tau_aero_lw_rrtm(i,k,1,inu) = 1.e-15 !--test 65 ! 66 ENDDO 67 ENDDO 96 68 ! 97 69 ENDDO 70 ! 71 ENDIF 72 ! 73 ELSE !--no aerosol LW effects 98 74 ! 99 !--avoid very small values100 tau_aero_lw_rrtm = MAX(tau_aero_lw_rrtm,1.e-15)101 !102 ELSE !--not aerosol_couple103 !104 !--no LW effects if not coupled to INCA105 75 tau_aero_lw_rrtm = 1.e-15 106 76 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.