lmdz_cloud_optics_prop_ini.f90 Source File


This file depends on

sourcefile~~lmdz_cloud_optics_prop_ini.f90~~EfferentGraph sourcefile~lmdz_cloud_optics_prop_ini.f90 lmdz_cloud_optics_prop_ini.f90 sourcefile~ioipsl_getin_p_mod.f90 ioipsl_getin_p_mod.f90 sourcefile~lmdz_cloud_optics_prop_ini.f90->sourcefile~ioipsl_getin_p_mod.f90 sourcefile~strings_mod.f90 strings_mod.f90 sourcefile~ioipsl_getin_p_mod.f90->sourcefile~strings_mod.f90 sourcefile~mod_phys_lmdz_para.f90 mod_phys_lmdz_para.f90 sourcefile~ioipsl_getin_p_mod.f90->sourcefile~mod_phys_lmdz_para.f90 sourcefile~mod_phys_lmdz_transfert_para.f90 mod_phys_lmdz_transfert_para.f90 sourcefile~ioipsl_getin_p_mod.f90->sourcefile~mod_phys_lmdz_transfert_para.f90 sourcefile~mod_phys_lmdz_para.f90->sourcefile~mod_phys_lmdz_transfert_para.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_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~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_transfert_para.f90->sourcefile~mod_phys_lmdz_mpi_data.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_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_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~lmdz_cppkeys_wrapper.f90 lmdz_cppkeys_wrapper.F90 sourcefile~mod_phys_lmdz_mpi_data.f90->sourcefile~lmdz_cppkeys_wrapper.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 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~dimphy.f90 dimphy.f90 sourcefile~mod_phys_lmdz_omp_data.f90->sourcefile~dimphy.f90

Files dependent on this one

sourcefile~~lmdz_cloud_optics_prop_ini.f90~~AfferentGraph sourcefile~lmdz_cloud_optics_prop_ini.f90 lmdz_cloud_optics_prop_ini.f90 sourcefile~lmdz_cloud_optics_prop.f90~2 lmdz_cloud_optics_prop.f90 sourcefile~lmdz_cloud_optics_prop.f90~2->sourcefile~lmdz_cloud_optics_prop_ini.f90 sourcefile~lmdz_call_cloud_optics_prop.f90 lmdz_call_cloud_optics_prop.f90 sourcefile~lmdz_call_cloud_optics_prop.f90->sourcefile~lmdz_cloud_optics_prop_ini.f90 sourcefile~lmdz_cloud_optics_prop.f90 lmdz_cloud_optics_prop.f90 sourcefile~lmdz_call_cloud_optics_prop.f90->sourcefile~lmdz_cloud_optics_prop.f90 sourcefile~physiq_mod.f90~2 physiq_mod.F90 sourcefile~physiq_mod.f90~2->sourcefile~lmdz_cloud_optics_prop_ini.f90 sourcefile~physiq_mod.f90~2->sourcefile~lmdz_call_cloud_optics_prop.f90 sourcefile~physiq_mod.f90 physiq_mod.F90 sourcefile~physiq_mod.f90->sourcefile~lmdz_cloud_optics_prop_ini.f90 sourcefile~physiq_mod.f90->sourcefile~lmdz_call_cloud_optics_prop.f90 sourcefile~lmdz_cloud_optics_prop.f90->sourcefile~lmdz_cloud_optics_prop_ini.f90 sourcefile~calcul_cloud_overlap_decorr_len.f90 calcul_cloud_overlap_decorr_len.f90 sourcefile~calcul_cloud_overlap_decorr_len.f90->sourcefile~lmdz_cloud_optics_prop_ini.f90 sourcefile~lmdz_call_cloud_optics_prop.f90~2 lmdz_call_cloud_optics_prop.f90 sourcefile~lmdz_call_cloud_optics_prop.f90~2->sourcefile~lmdz_cloud_optics_prop_ini.f90 sourcefile~lmdz_call_cloud_optics_prop.f90~2->sourcefile~lmdz_cloud_optics_prop.f90 sourcefile~old_lmdz1d.f90 old_lmdz1d.f90 sourcefile~old_lmdz1d.f90->sourcefile~physiq_mod.f90 sourcefile~scm.f90 scm.f90 sourcefile~scm.f90->sourcefile~physiq_mod.f90 sourcefile~callphysiq_mod.f90 callphysiq_mod.f90 sourcefile~callphysiq_mod.f90->sourcefile~physiq_mod.f90 sourcefile~callphysiq_mod.f90~2 callphysiq_mod.f90 sourcefile~callphysiq_mod.f90~2->sourcefile~physiq_mod.f90 sourcefile~calfis.f90 calfis.f90 sourcefile~calfis.f90->sourcefile~callphysiq_mod.f90

Contents


Source Code

MODULE lmdz_cloud_optics_prop_ini
  IMPLICIT NONE

  SAVE

  INTEGER, PROTECTED :: prt_level, lunout
  INTEGER, PROTECTED :: flag_aerosol
  INTEGER, PROTECTED :: iflag_t_glace=0
  INTEGER, PROTECTED :: iflag_rei
  INTEGER, PROTECTED :: novlp, iflag_ice_thermo
  LOGICAL, PROTECTED :: ok_cdnc
  LOGICAL, PROTECTED :: ok_icefra_lscp, ok_new_lscp
  REAL, PROTECTED :: bl95_b0, bl95_b1 ! Parameter in B&L 95-Formula
  REAL, ALLOCATABLE :: latitude_deg(:)
  !$OMP THREADPRIVATE(latitude_deg)
  REAL, PROTECTED :: cdnc_max=-1.
  REAL, PROTECTED :: cdnc_max_m3=-1.
  REAL, PROTECTED :: cdnc_min=-1.
  REAL, PROTECTED :: cdnc_min_m3=-1.
  REAL, PROTECTED :: rpi, rg, rd
  REAL, PROTECTED :: rad_chau1, rad_chau2
  REAL, PROTECTED :: rei_max, rei_min
  REAL, PROTECTED :: rei_coef, rei_min_temp
  REAL, PROTECTED :: zepsec
  REAL, PARAMETER :: thres_tau=0.3, thres_neb=0.001
  REAL, PARAMETER :: prmhc=440.*100. ! Pressure between medium and high level cloud in Pa
  REAL, PARAMETER :: prlmc=680.*100. ! Pressure between low and medium level cloud in Pa
  REAL, PARAMETER :: coef_froi=0.09, coef_chau =0.13
  REAL, PARAMETER :: seuil_neb=0.001
! if iflag_t_glace=0, old values are used for liquid/ice partitionning:
  REAL, PARAMETER :: t_glace_min_old = 258.
  REAL, PARAMETER :: t_glace_max_old = 273.13
  REAL, PARAMETER :: k_ice0=0.005 ! units=m2/g
  REAL, PARAMETER :: df=1.66 ! diffusivity factor
  LOGICAL, SAVE, ALLOCATABLE :: first(:,:)  ! Test, if the cloud optical depth exceeds the necessary threshold
!$OMP THREADPRIVATE(first)
!$OMP THREADPRIVATE(prt_level, lunout, flag_aerosol, iflag_t_glace)
!$OMP THREADPRIVATE(iflag_rei, novlp, iflag_ice_thermo)  
!$OMP THREADPRIVATE(ok_cdnc, ok_icefra_lscp, ok_new_lscp)
!$OMP THREADPRIVATE(bl95_b0, bl95_b1, cdnc_max, cdnc_max_m3)
!$OMP THREADPRIVATE(cdnc_min, cdnc_min_m3, rpi, rg, rd)
!$OMP THREADPRIVATE(rad_chau1, rad_chau2, rei_max, rei_min)
!$OMP THREADPRIVATE(rei_coef, rei_min_temp)
!$OMP THREADPRIVATE(zepsec) 

  
CONTAINS

  SUBROUTINE cloud_optics_prop_ini(klon, klev, prt_level_in, lunout_in, flag_aerosol_in, &
       & ok_cdnc_in, bl95_b0_in, &
       & bl95_b1_in, latitude_deg_in, rpi_in, rg_in, rd_in, zepsec_in, novlp_in, &
       & iflag_ice_thermo_in, ok_new_lscp_in)

    USE ioipsl_getin_p_mod, ONLY : getin_p

    IMPLICIT NONE
    INTEGER, INTENT(IN) :: klon, klev
    INTEGER, INTENT(IN) :: prt_level_in, lunout_in
    INTEGER, INTENT(IN) :: flag_aerosol_in
    INTEGER, INTENT(IN) :: novlp_in, iflag_ice_thermo_in
    LOGICAL, INTENT(IN) :: ok_cdnc_in, ok_new_lscp_in
    REAL, INTENT(IN) :: bl95_b0_in, bl95_b1_in
    REAL, INTENT(IN) :: latitude_deg_in(klon)
    REAL, INTENT(IN) :: rpi_in, rg_in, rd_in
    REAL, INTENT(IN) :: zepsec_in

    ALLOCATE(latitude_deg(klon))
    ALLOCATE(first(klon, klev))
    first(:,:) = .FALSE.

    prt_level = prt_level_in
    lunout = lunout_in
    flag_aerosol = flag_aerosol_in
    ok_cdnc = ok_cdnc_in
    bl95_b0 = bl95_b0_in
    bl95_b1 = bl95_b1_in
    latitude_deg(:) = latitude_deg_in(:)
    rpi = rpi_in
    rg = rg_in
    rd = rd_in
    zepsec = zepsec_in
    novlp = novlp_in
    iflag_ice_thermo = iflag_ice_thermo_in
    ok_new_lscp = ok_new_lscp_in
    
    call getin_p('cdnc_min',cdnc_min)
    cdnc_min_m3=cdnc_min*1.E6
    IF (cdnc_min_m3<0.) cdnc_min_m3=20.E6 ! astuce pour retrocompatibilite
    write(lunout,*)'cdnc_min=', cdnc_min_m3/1.E6
    call getin_p('cdnc_max',cdnc_max)
    cdnc_max_m3=cdnc_max*1.E6
    IF (cdnc_max_m3<0.) cdnc_max_m3=1000.E6 ! astuce pour retrocompatibilite
    write(lunout,*)'cdnc_max=', cdnc_max_m3/1.E6
    CALL getin_p('iflag_t_glace',iflag_t_glace)      
    write(lunout,*)'iflag_t_glace= ',iflag_t_glace
    CALL getin_p('rad_chau1',rad_chau1)
    CALL getin_p('rad_chau2',rad_chau2)
    CALL getin_p('ok_icefra_lscp', ok_icefra_lscp)
    iflag_rei = 0
    CALL getin_p('iflag_rei',iflag_rei)
    rei_min = 3.5
    CALL getin_p('rei_min',rei_min)
    rei_max = 61.29
    CALL getin_p('rei_max',rei_max)
    rei_coef = 2.4
    CALL getin_p('rei_coef',rei_coef)
    rei_min_temp = 175.
    CALL getin_p('rei_min_temp',rei_min_temp)

   
  END SUBROUTINE cloud_optics_prop_ini

END MODULE lmdz_cloud_optics_prop_ini