config_type Derived Type

type, public :: config_type


Inherits

type~~config_type~~InheritsGraph type~config_type config_type type~ckd_model_type ckd_model_type type~config_type->type~ckd_model_type gas_optics_sw, gas_optics_lw type~general_cloud_optics_type general_cloud_optics_type type~config_type->type~general_cloud_optics_type cloud_optics_sw, cloud_optics_lw type~cloud_optics_type cloud_optics_type type~config_type->type~cloud_optics_type cloud_optics type~pdf_sampler_type pdf_sampler_type type~config_type->type~pdf_sampler_type pdf_sampler type~aerosol_optics_type aerosol_optics_type type~config_type->type~aerosol_optics_type aerosol_optics type~ckd_gas_type ckd_gas_type type~ckd_model_type->type~ckd_gas_type single_gas type~spectral_definition_type spectral_definition_type type~ckd_model_type->type~spectral_definition_type spectral_def

Inherited by

type~~config_type~~InheritedByGraph type~config_type config_type type~tradiation TRADIATION type~tradiation->type~config_type rad_config

Contents

use_spectral_solar_scaling use_spectral_solar_cycle directory_name use_general_cloud_optics use_general_aerosol_optics cloud_fraction_threshold cloud_mixing_ratio_threshold i_overlap_scheme use_beta_overlap use_vectorizable_generator i_cloud_pdf_shape cloud_inhom_decorr_scaling clear_to_thick_fraction overhead_sun_factor min_gas_od_lw min_gas_od_sw max_gas_od_3d max_cloud_od do_lw_cloud_scattering do_lw_aerosol_scattering nregions i_solver_sw i_solver_lw do_sw_delta_scaling_with_gases i_gas_model_sw i_gas_model_lw mono_lw_wavelength mono_lw_total_od mono_sw_total_od mono_sw_single_scattering_albedo mono_sw_asymmetry_factor mono_lw_single_scattering_albedo mono_lw_asymmetry_factor i_liq_model i_ice_model do_nearest_spectral_sw_albedo do_nearest_spectral_lw_emiss sw_albedo_wavelength_bound lw_emiss_wavelength_bound i_sw_albedo_index i_lw_emiss_index do_lw do_sw do_clear do_sw_direct do_3d_effects cloud_type_name use_thick_cloud_spectral_averaging i_3d_sw_entrapment do_3d_lw_multilayer_effects do_lw_side_emissivity max_3d_transfer_rate min_cloud_effective_size overhang_factor use_expm_everywhere use_aerosols n_aerosol_types i_aerosol_type_map do_save_radiative_properties do_save_spectral_flux do_surface_sw_spectral_flux do_toa_spectral_flux do_lw_derivatives do_save_gpoint_flux do_setup_ifsrrtm do_fu_lw_ice_optics_bug iverbosesetup iverbose do_canopy_fluxes_sw do_canopy_fluxes_lw use_canopy_full_spectrum_sw use_canopy_full_spectrum_lw do_canopy_gases_sw do_canopy_gases_lw ice_optics_override_file_name liq_optics_override_file_name aerosol_optics_override_file_name gas_optics_sw_override_file_name gas_optics_lw_override_file_name ssi_override_file_name use_updated_solar_spectrum cloud_pdf_override_file_name do_cloud_aerosol_per_sw_g_point do_cloud_aerosol_per_lw_g_point do_weighted_surface_mapping is_consolidated g_frac_sw g_frac_lw i_albedo_from_band_sw i_emiss_from_band_lw sw_albedo_weights lw_emiss_weights i_band_from_g_lw i_band_from_g_sw i_g_from_reordered_g_lw i_g_from_reordered_g_sw i_band_from_reordered_g_lw i_band_from_reordered_g_sw i_spec_from_reordered_g_lw i_spec_from_reordered_g_sw n_canopy_bands_sw n_canopy_bands_lw gas_optics_sw gas_optics_lw cloud_optics n_cloud_types cloud_optics_sw cloud_optics_lw aerosol_optics pdf_sampler ice_optics_file_name liq_optics_file_name aerosol_optics_file_name gas_optics_sw_file_name gas_optics_lw_file_name ssi_file_name cloud_pdf_file_name n_g_sw n_g_lw n_bands_sw n_bands_lw n_spec_sw n_spec_lw n_wav_frac_sw n_wav_frac_lw n_g_lw_if_scattering n_bands_lw_if_scattering is_homogeneous do_clouds

Components

Type Visibility Attributes Name Initial
logical, public :: use_spectral_solar_scaling = .false.
logical, public :: use_spectral_solar_cycle = .false.
character(len=511), public :: directory_name = '.'
logical, public :: use_general_cloud_optics = .true.
logical, public :: use_general_aerosol_optics = .true.
real(kind=jprb), public :: cloud_fraction_threshold = 1.0e-6_jprb
real(kind=jprb), public :: cloud_mixing_ratio_threshold = 1.0e-9_jprb
integer, public :: i_overlap_scheme = IOverlapExponentialRandom
logical, public :: use_beta_overlap = .false.
logical, public :: use_vectorizable_generator = .false.
integer, public :: i_cloud_pdf_shape = IPdfShapeGamma
real(kind=jprb), public :: cloud_inhom_decorr_scaling = 0.5_jprb
real(kind=jprb), public :: clear_to_thick_fraction = 0.0_jprb
real(kind=jprb), public :: overhead_sun_factor = 0.0_jprb
real(kind=jprb), public :: min_gas_od_lw = 1.0e-15_jprb
real(kind=jprb), public :: min_gas_od_sw = 0.0_jprb
real(kind=jprb), public :: max_gas_od_3d = 8.0_jprb
real(kind=jprb), public :: max_cloud_od = 16.0_jprb
logical, public :: do_lw_cloud_scattering = .true.
logical, public :: do_lw_aerosol_scattering = .true.
integer, public :: nregions = 3
integer, public :: i_solver_sw = ISolverMcICA
integer, public :: i_solver_lw = ISolverMcICA
logical, public :: do_sw_delta_scaling_with_gases = .false.
integer, public :: i_gas_model_sw = IGasModelIFSRRTMG
integer, public :: i_gas_model_lw = IGasModelIFSRRTMG
real(kind=jprb), public :: mono_lw_wavelength = -1.0_jprb
real(kind=jprb), public :: mono_lw_total_od = 0.0_jprb
real(kind=jprb), public :: mono_sw_total_od = 0.0_jprb
real(kind=jprb), public :: mono_sw_single_scattering_albedo = 0.999999_jprb
real(kind=jprb), public :: mono_sw_asymmetry_factor = 0.86_jprb
real(kind=jprb), public :: mono_lw_single_scattering_albedo = 0.538_jprb
real(kind=jprb), public :: mono_lw_asymmetry_factor = 0.925_jprb
integer, public :: i_liq_model = ILiquidModelSOCRATES
integer, public :: i_ice_model = IIceModelBaran
logical, public :: do_nearest_spectral_sw_albedo = .false.
logical, public :: do_nearest_spectral_lw_emiss = .false.
real(kind=jprb), public :: sw_albedo_wavelength_bound(NMaxAlbedoIntervals-1) = -1.0_jprb
real(kind=jprb), public :: lw_emiss_wavelength_bound(NMaxAlbedoIntervals-1) = -1.0_jprb
integer, public :: i_sw_albedo_index(NMaxAlbedoIntervals) = 0
integer, public :: i_lw_emiss_index(NMaxAlbedoIntervals) = 0
logical, public :: do_lw = .true.
logical, public :: do_sw = .true.
logical, public :: do_clear = .true.
logical, public :: do_sw_direct = .true.
logical, public :: do_3d_effects = .true.
character(len=511), public :: cloud_type_name(NMaxCloudTypes) = ["", "", "", "", "", "", "", "", "", "", "", ""]
logical, public :: use_thick_cloud_spectral_averaging(NMaxCloudTypes) = [.true., .true., .true., .true., .true., .true., .true., .true., .true., .true., .true., .true.]
integer, public :: i_3d_sw_entrapment = IEntrapmentExplicit
logical, public :: do_3d_lw_multilayer_effects = .false.
logical, public :: do_lw_side_emissivity = .true.
real(kind=jprb), public :: max_3d_transfer_rate = 10.0_jprb
real(kind=jprb), public :: min_cloud_effective_size = 100.0_jprb
real(kind=jprb), public :: overhang_factor = 0.0_jprb
logical, public :: use_expm_everywhere = .false.
logical, public :: use_aerosols = .false.
integer, public :: n_aerosol_types = 0
integer, public :: i_aerosol_type_map(NMaxAerosolTypes)
logical, public :: do_save_radiative_properties = .false.
logical, public :: do_save_spectral_flux = .false.
logical, public :: do_surface_sw_spectral_flux = .true.
logical, public :: do_toa_spectral_flux = .false.
logical, public :: do_lw_derivatives = .false.
logical, public :: do_save_gpoint_flux = .false.
logical, public :: do_setup_ifsrrtm = .true.
logical, public :: do_fu_lw_ice_optics_bug = .false.
integer, public :: iverbosesetup = 2
integer, public :: iverbose = 1
logical, public :: do_canopy_fluxes_sw = .false.
logical, public :: do_canopy_fluxes_lw = .false.
logical, public :: use_canopy_full_spectrum_sw = .false.
logical, public :: use_canopy_full_spectrum_lw = .false.
logical, public :: do_canopy_gases_sw = .false.
logical, public :: do_canopy_gases_lw = .false.
character(len=511), public :: ice_optics_override_file_name = ''
character(len=511), public :: liq_optics_override_file_name = ''
character(len=511), public :: aerosol_optics_override_file_name = ''
character(len=511), public :: gas_optics_sw_override_file_name = ''
character(len=511), public :: gas_optics_lw_override_file_name = ''
character(len=511), public :: ssi_override_file_name = ''
logical, public :: use_updated_solar_spectrum = .false.
character(len=511), public :: cloud_pdf_override_file_name = ''
logical, public :: do_cloud_aerosol_per_sw_g_point = .true.
logical, public :: do_cloud_aerosol_per_lw_g_point = .true.
logical, public :: do_weighted_surface_mapping = .true.
logical, public :: is_consolidated = .false.
real(kind=jprb), public, allocatable, dimension(:,:) :: g_frac_sw
real(kind=jprb), public, allocatable, dimension(:,:) :: g_frac_lw
integer, public, allocatable, dimension(:) :: i_albedo_from_band_sw
integer, public, allocatable, dimension(:) :: i_emiss_from_band_lw
real(kind=jprb), public, allocatable, dimension(:,:) :: sw_albedo_weights
real(kind=jprb), public, allocatable, dimension(:,:) :: lw_emiss_weights
integer, public, allocatable, dimension(:) :: i_band_from_g_lw
integer, public, allocatable, dimension(:) :: i_band_from_g_sw
integer, public, allocatable, dimension(:) :: i_g_from_reordered_g_lw
integer, public, allocatable, dimension(:) :: i_g_from_reordered_g_sw
integer, public, allocatable, dimension(:) :: i_band_from_reordered_g_lw
integer, public, allocatable, dimension(:) :: i_band_from_reordered_g_sw
integer, public, pointer, dimension(:) :: i_spec_from_reordered_g_lw
integer, public, pointer, dimension(:) :: i_spec_from_reordered_g_sw
integer, public :: n_canopy_bands_sw = 1
integer, public :: n_canopy_bands_lw = 1
type(ckd_model_type), public :: gas_optics_sw
type(ckd_model_type), public :: gas_optics_lw
type(cloud_optics_type), public :: cloud_optics
integer, public :: n_cloud_types = 2
type(general_cloud_optics_type), public, allocatable :: cloud_optics_sw(:)
type(general_cloud_optics_type), public, allocatable :: cloud_optics_lw(:)
type(aerosol_optics_type), public :: aerosol_optics
type(pdf_sampler_type), public :: pdf_sampler
character(len=511), public :: ice_optics_file_name
character(len=511), public :: liq_optics_file_name
character(len=511), public :: aerosol_optics_file_name
character(len=511), public :: gas_optics_sw_file_name
character(len=511), public :: gas_optics_lw_file_name
character(len=511), public :: ssi_file_name
character(len=511), public :: cloud_pdf_file_name
integer, public :: n_g_sw = 0
integer, public :: n_g_lw = 0
integer, public :: n_bands_sw = 0
integer, public :: n_bands_lw = 0
integer, public :: n_spec_sw = 0
integer, public :: n_spec_lw = 0
integer, public :: n_wav_frac_sw = 0
integer, public :: n_wav_frac_lw = 0
integer, public :: n_g_lw_if_scattering = 0
integer, public :: n_bands_lw_if_scattering = 0
logical, public :: is_homogeneous = .false.
logical, public :: do_clouds = .true.

Type-Bound Procedures

procedure, public :: read => read_config_from_namelist

  • public subroutine read_config_from_namelist(this, file_name, unit, is_success)

    Arguments

    Type IntentOptional Attributes Name
    class(config_type), intent(inout) :: this
    character, intent(in), optional :: file_name
    integer, intent(in), optional :: unit
    logical, intent(out), optional :: is_success

procedure, public :: consolidate => consolidate_config

procedure, public :: set => set_config

  • public subroutine set_config(config, directory_name, do_lw, do_sw, do_lw_aerosol_scattering, do_lw_cloud_scattering, do_sw_direct)

    Arguments

    Type IntentOptional Attributes Name
    class(config_type), intent(inout) :: config
    character(len=*), intent(in), optional :: directory_name
    logical, intent(in), optional :: do_lw
    logical, intent(in), optional :: do_sw
    logical, intent(in), optional :: do_lw_aerosol_scattering
    logical, intent(in), optional :: do_lw_cloud_scattering
    logical, intent(in), optional :: do_sw_direct

procedure, public :: print => print_config

  • public subroutine print_config(this, iverbose)

    Arguments

    Type IntentOptional Attributes Name
    class(config_type), intent(in) :: this
    integer, intent(in), optional :: iverbose

procedure, public :: get_sw_weights

  • public subroutine get_sw_weights(this, wavelength1, wavelength2, nweights, iband, weight, weighting_name)

    Arguments

    Type IntentOptional Attributes Name
    class(config_type), intent(in) :: this
    real(kind=jprb), intent(in) :: wavelength1
    real(kind=jprb), intent(in) :: wavelength2
    integer, intent(out) :: nweights
    integer, intent(out) :: iband(:)
    real(kind=jprb), intent(out) :: weight(:)
    character(len=*), intent(in), optional :: weighting_name

procedure, public :: get_sw_mapping

  • public subroutine get_sw_mapping(this, wavelength_bound, mapping, weighting_name)

    Arguments

    Type IntentOptional Attributes Name
    class(config_type), intent(in) :: this
    real(kind=jprb), intent(in) :: wavelength_bound(:)
    real(kind=jprb), intent(out), allocatable :: mapping(:,:)
    character(len=*), intent(in), optional :: weighting_name

procedure, public :: define_sw_albedo_intervals

  • public subroutine define_sw_albedo_intervals(this, ninterval, wavelength_bound, i_intervals, do_nearest)

    Arguments

    Type IntentOptional Attributes Name
    class(config_type), intent(inout) :: this
    integer, intent(in) :: ninterval
    real(kind=jprb), intent(in) :: wavelength_bound(ninterval-1)
    integer, intent(in) :: i_intervals(ninterval)
    logical, intent(in), optional :: do_nearest

procedure, public :: define_lw_emiss_intervals

  • public subroutine define_lw_emiss_intervals(this, ninterval, wavelength_bound, i_intervals, do_nearest)

    Arguments

    Type IntentOptional Attributes Name
    class(config_type), intent(inout) :: this
    integer, intent(in) :: ninterval
    real(kind=jprb), intent(in) :: wavelength_bound(ninterval-1)
    integer, intent(in) :: i_intervals(ninterval)
    logical, intent(in), optional :: do_nearest

procedure, public :: set_aerosol_wavelength_mono

  • public subroutine set_aerosol_wavelength_mono(this, wavelength_mono)

    Arguments

    Type IntentOptional Attributes Name
    class(config_type), intent(inout) :: this
    real(kind=jprb), intent(in) :: wavelength_mono(:)

procedure, public :: consolidate_sw_albedo_intervals

procedure, public :: consolidate_lw_emiss_intervals