aeropt_lw_rrtm.F90 Source File


This file depends on

sourcefile~~aeropt_lw_rrtm.f90~~EfferentGraph sourcefile~aeropt_lw_rrtm.f90 aeropt_lw_rrtm.F90 sourcefile~dimphy.f90 dimphy.f90 sourcefile~aeropt_lw_rrtm.f90->sourcefile~dimphy.f90 sourcefile~phys_state_var_mod.f90 phys_state_var_mod.F90 sourcefile~aeropt_lw_rrtm.f90->sourcefile~phys_state_var_mod.f90 sourcefile~yoerad_strataer_rrtm.f90 yoerad_strataer_rrtm.f90 sourcefile~aeropt_lw_rrtm.f90->sourcefile~yoerad_strataer_rrtm.f90 sourcefile~aero_mod.f90 aero_mod.f90 sourcefile~aeropt_lw_rrtm.f90->sourcefile~aero_mod.f90 sourcefile~clesphys_mod_h.f90 clesphys_mod_h.f90 sourcefile~aeropt_lw_rrtm.f90->sourcefile~clesphys_mod_h.f90 sourcefile~yomcst.f90 yomcst.F90 sourcefile~aeropt_lw_rrtm.f90->sourcefile~yomcst.f90 sourcefile~phys_state_var_mod.f90->sourcefile~dimphy.f90 sourcefile~phys_state_var_mod.f90->sourcefile~aero_mod.f90 sourcefile~phys_state_var_mod.f90->sourcefile~clesphys_mod_h.f90 sourcefile~indice_sol_mod.f90 indice_sol_mod.f90 sourcefile~phys_state_var_mod.f90->sourcefile~indice_sol_mod.f90 sourcefile~surface_data.f90 surface_data.f90 sourcefile~phys_state_var_mod.f90->sourcefile~surface_data.f90 sourcefile~dimsoil_mod_h.f90 dimsoil_mod_h.f90 sourcefile~phys_state_var_mod.f90->sourcefile~dimsoil_mod_h.f90 sourcefile~config_ocean_skin_m.f90 config_ocean_skin_m.F90 sourcefile~phys_state_var_mod.f90->sourcefile~config_ocean_skin_m.f90 sourcefile~infotrac_phy.f90 infotrac_phy.F90 sourcefile~phys_state_var_mod.f90->sourcefile~infotrac_phy.f90 sourcefile~parkind1.f90 parkind1.F90 sourcefile~yomcst.f90->sourcefile~parkind1.f90 sourcefile~mod_phys_lmdz_para.f90 mod_phys_lmdz_para.f90 sourcefile~infotrac_phy.f90->sourcefile~mod_phys_lmdz_para.f90 sourcefile~iniprint_mod_h.f90 iniprint_mod_h.f90 sourcefile~infotrac_phy.f90->sourcefile~iniprint_mod_h.f90 sourcefile~strings_mod.f90 strings_mod.f90 sourcefile~infotrac_phy.f90->sourcefile~strings_mod.f90 sourcefile~readtracfiles_mod.f90 readTracFiles_mod.f90 sourcefile~infotrac_phy.f90->sourcefile~readtracfiles_mod.f90 sourcefile~lmdz_reprobus_wrappers.f90 lmdz_reprobus_wrappers.F90 sourcefile~infotrac_phy.f90->sourcefile~lmdz_reprobus_wrappers.f90 sourcefile~ioipsl_getin_p_mod.f90 ioipsl_getin_p_mod.f90 sourcefile~infotrac_phy.f90->sourcefile~ioipsl_getin_p_mod.f90 sourcefile~lmdz_cppkeys_wrapper.f90 lmdz_cppkeys_wrapper.F90 sourcefile~infotrac_phy.f90->sourcefile~lmdz_cppkeys_wrapper.f90 sourcefile~mod_phys_lmdz_mpi_data.f90 mod_phys_lmdz_mpi_data.f90 sourcefile~mod_phys_lmdz_para.f90->sourcefile~mod_phys_lmdz_mpi_data.f90 sourcefile~mod_phys_lmdz_transfert_para.f90 mod_phys_lmdz_transfert_para.f90 sourcefile~mod_phys_lmdz_para.f90->sourcefile~mod_phys_lmdz_transfert_para.f90 sourcefile~mod_grid_phy_lmdz.f90 mod_grid_phy_lmdz.f90 sourcefile~mod_phys_lmdz_para.f90->sourcefile~mod_grid_phy_lmdz.f90 sourcefile~print_control_mod.f90 print_control_mod.f90 sourcefile~mod_phys_lmdz_para.f90->sourcefile~print_control_mod.f90 sourcefile~mod_phys_lmdz_omp_data.f90 mod_phys_lmdz_omp_data.F90 sourcefile~mod_phys_lmdz_para.f90->sourcefile~mod_phys_lmdz_omp_data.f90 sourcefile~readtracfiles_mod.f90->sourcefile~strings_mod.f90 sourcefile~readtracfiles_mod.f90->sourcefile~ioipsl_getin_p_mod.f90 sourcefile~lmdz_reprobus_wrappers.f90->sourcefile~mod_grid_phy_lmdz.f90 sourcefile~ioipsl_getin_p_mod.f90->sourcefile~mod_phys_lmdz_para.f90 sourcefile~ioipsl_getin_p_mod.f90->sourcefile~strings_mod.f90 sourcefile~ioipsl_getin_p_mod.f90->sourcefile~mod_phys_lmdz_transfert_para.f90 sourcefile~mod_phys_lmdz_mpi_data.f90->sourcefile~lmdz_cppkeys_wrapper.f90 sourcefile~mod_phys_lmdz_mpi_data.f90->sourcefile~print_control_mod.f90 sourcefile~lmdz_mpi.f90 lmdz_mpi.F90 sourcefile~mod_phys_lmdz_mpi_data.f90->sourcefile~lmdz_mpi.f90 sourcefile~mod_phys_lmdz_transfert_para.f90->sourcefile~mod_phys_lmdz_mpi_data.f90 sourcefile~mod_phys_lmdz_omp_transfert.f90 mod_phys_lmdz_omp_transfert.f90 sourcefile~mod_phys_lmdz_transfert_para.f90->sourcefile~mod_phys_lmdz_omp_transfert.f90 sourcefile~mod_phys_lmdz_mpi_transfert.f90 mod_phys_lmdz_mpi_transfert.f90 sourcefile~mod_phys_lmdz_transfert_para.f90->sourcefile~mod_phys_lmdz_mpi_transfert.f90 sourcefile~mod_phys_lmdz_omp_data.f90->sourcefile~dimphy.f90 sourcefile~mod_phys_lmdz_omp_data.f90->sourcefile~mod_phys_lmdz_mpi_data.f90 sourcefile~mod_phys_lmdz_omp_data.f90->sourcefile~print_control_mod.f90 sourcefile~mod_phys_lmdz_omp_transfert.f90->sourcefile~mod_phys_lmdz_mpi_data.f90 sourcefile~mod_phys_lmdz_omp_transfert.f90->sourcefile~mod_phys_lmdz_omp_data.f90 sourcefile~mod_phys_lmdz_mpi_transfert.f90->sourcefile~mod_phys_lmdz_mpi_data.f90 sourcefile~mod_phys_lmdz_mpi_transfert.f90->sourcefile~mod_grid_phy_lmdz.f90 sourcefile~mod_phys_lmdz_mpi_transfert.f90->sourcefile~lmdz_mpi.f90

Contents

Source Code


Source Code

!
! aeropt_lw_rrtm.F90 2014-05-13 C. Kleinschmitt
!                    2016-05-03 O. Boucher 
!                    2016-12-17 O. Boucher
!
! This routine feeds aerosol LW properties to RRTM
! we only consider absorption (not scattering)
! we only consider dust for now

SUBROUTINE AEROPT_LW_RRTM(ok_alw, pdel, zrho, flag_aerosol, m_allaer, m_allaer_pi)

  USE dimphy
  USE aero_mod
  USE phys_state_var_mod, ONLY: tau_aero_lw_rrtm
  USE YOERAD, ONLY: NLW
  USE YOMCST, ONLY: RG
! Temporary fix waiting for cleaner interface (or not)
  USE clesphys_mod_h, ONLY: NSW
  
  IMPLICIT NONE

!!  INCLUDE "clesphys.h"
  !
  ! Input arguments:
  !
  LOGICAL, INTENT(IN)                              :: ok_alw
  INTEGER, INTENT(IN)                              :: flag_aerosol
  REAL, DIMENSION(klon,klev), INTENT(IN)           :: pdel, zrho
  REAL, DIMENSION(klon,klev,naero_tot), INTENT(IN) :: m_allaer, m_allaer_pi
  !
  INTEGER inu, i, k
  REAL :: zdh(klon,klev)
  REAL :: tmp_var, tmp_var_pi
  CHARACTER*20 modname
  !
  !--absorption coefficient for CIDUST
  REAL:: alpha_abs_CIDUST_16bands(nbands_lw_rrtm)   !--unit m2/g 
  DATA alpha_abs_CIDUST_16bands /                         &
  0.001, 0.003, 0.005, 0.006, 0.012, 0.030, 0.148, 0.098, &
  0.017, 0.053, 0.031, 0.008, 0.010, 0.011, 0.013, 0.015  /
  !
  modname='aeropt_lw_rrtm'
  !
  IF (NLW.NE.nbands_lw_rrtm) THEN
    CALL abort_physic(modname,'Erreur NLW doit etre egal a 16 pour cette routine',1)
  ENDIF
  ! 
  IF (ok_alw) THEN                                   !--aerosol LW effects
   !
   IF (flag_aerosol.EQ.5.OR.flag_aerosol.EQ.6.OR.flag_aerosol.EQ.7) THEN  !-Dust
    !
    zdh(:,:)=pdel(:,:)/(RG*zrho(:,:))      ! m
    !
    DO k=1, klev
      DO i=1, klon
         !
         tmp_var   =m_allaer(i,k,id_CIDUSTM_phy)   /1.e6*zdh(i,k)  !--g/m2
         tmp_var_pi=m_allaer_pi(i,k,id_CIDUSTM_phy)/1.e6*zdh(i,k)  !--g/m2
         !
         DO inu=1, NLW
           !
           !--total aerosol
           tau_aero_lw_rrtm(i,k,2,inu) = MAX(1.e-15,tmp_var*alpha_abs_CIDUST_16bands(inu))
           !--natural aerosol 
!           tau_aero_lw_rrtm(:,:,1,inu) = MAX(1.e-15,tmp_var_pi*alpha_abs_CIDUST_16bands(inu))
           tau_aero_lw_rrtm(i,k,1,inu) = 1.e-15  !--test
           !
         ENDDO
      ENDDO
      !
    ENDDO
    ! 
   ENDIF
   !
  ELSE !--no aerosol LW effects
    !
    tau_aero_lw_rrtm = 1.e-15
  ENDIF
  !
END SUBROUTINE AEROPT_LW_RRTM