ty_optics_ssm Derived Type

type, public, extends(ty_gas_optics) :: ty_optics_ssm


Inherits

type~~ty_optics_ssm~~InheritsGraph type~ty_optics_ssm ty_optics_ssm ty_gas_optics ty_gas_optics type~ty_optics_ssm->ty_gas_optics

Contents


Components

TypeVisibilityAttributesNameInitial
real(kind=wp), public :: Tstar =0._wp
real(kind=wp), public, dimension(:, :), allocatable:: absorption_coeffs
real(kind=wp), public, dimension(:), allocatable:: dnus
real(kind=wp), public :: g_cld =0._wp
character(len=32), public, dimension(:), allocatable:: gas_names
real(kind=wp), public :: kappa_cld =0._wp
real(kind=wp), public :: m_dry =0.029_wp
real(kind=wp), public, dimension(:), allocatable:: mol_weights
real(kind=wp), public, dimension(:), allocatable:: nus
real(kind=wp), public :: pref =500._wp*100._wp
real(kind=wp), public :: ssa_cld =0._wp
real(kind=wp), public, dimension(:), allocatable:: toa_src
real(kind=wp), public :: tsi =0._wp

Type-Bound Procedures

procedure, public :: cloud_optics

  • private function cloud_optics(this, clwp, ciwp, reliq, reice, optical_props) result(error_msg)

    Derive cloud optical properties from provided cloud physical properties

    Arguments

    TypeIntentOptionalAttributesName
    class(ty_optics_ssm), intent(in) :: this
    real(kind=wp), intent(in) :: clwp(:,:)
    real(kind=wp), intent(in) :: ciwp(:,:)
    real(kind=wp), intent(in) :: reliq(:,:)
    real(kind=wp), intent(in) :: reice(:,:)
    class(ty_optical_props_arry), intent(inout) :: optical_props

    Return Value character(len=128)

generic, public :: configure => configure_with_values, configure_with_defaults

  • private function configure_with_values(this, gas_names, triangle_params, nus, nu_min, nu_max, Tstar, tsi, kappa_cld, g_cld, ssa_cld) result(error_msg)

    Configure the simple spectral model parameters Gas optics for simple spectral models are described as N triangles of ln(kappa) for each of M gases. Each triangle id defined by the absorption coefficient at central wavenumber, nu0 a central wavenumber nu0 the slope d ln(kappa)/d nu By default there are two gases (h2o and co2) (for the LW). h2o has three triangles (rotational lines, and a continuum with infinite slope) co2 has a single triangle Absorption coefficents are defined at pref and pressure-broadened as p/pref Spectral discretization is defined as max and min wavenumbers and a set of wavenumbers at which to evaluate absorption and Planck function If Tstar is provided the gas optics are for insolation

    Arguments

    TypeIntentOptionalAttributesName
    class(ty_optics_ssm), intent(inout) :: this
    character(len=32), intent(in), dimension(:):: gas_names
    real(kind=wp), intent(in), dimension(:,:):: triangle_params

    (ntriangles, 4) where the second dimension holds [gas_index, kappa0, nu0, l]

    real(kind=wp), intent(in), dimension(:):: nus

    Wavenumbers at which to evaluate Planck function and absorption coefficient

    real(kind=wp), intent(in) :: nu_min

    Upper and lower bounds of spectrum

    real(kind=wp), intent(in) :: nu_max

    Upper and lower bounds of spectrum

    real(kind=wp), intent(in), optional :: Tstar

    Temperature for stellar insolation

    real(kind=wp), intent(in), optional :: tsi

    Total solar irradiance

    real(kind=wp), intent(in), optional :: kappa_cld
    real(kind=wp), intent(in), optional :: g_cld
    real(kind=wp), intent(in), optional :: ssa_cld

    cloud optical properties

    Return Value character(len=128)

    Empty if successful

  • private function configure_with_defaults(this, do_sw) result(error_msg)

    Arguments

    TypeIntentOptionalAttributesName
    class(ty_optics_ssm), intent(inout) :: this
    logical, intent(in), optional :: do_sw

    Return Value character(len=128)

procedure, public :: gas_optics_ext

  • private function gas_optics_ext(this, play, plev, tlay, gas_desc, optical_props, toa_src, col_dry) result(error_msg)

    Compute gas optical depth given temperature, pressure, and composition Top-of-atmosphere stellar insolation is also reported

    Arguments

    TypeIntentOptionalAttributesName
    class(ty_optics_ssm), intent(in) :: this
    real(kind=wp), intent(in), dimension(:,:):: play

    layer pressures [Pa]; (ncol,nlay) level pressures [Pa]; (ncol,nlay+1) layer temperatures [K]; (ncol,nlay)

    real(kind=wp), intent(in), dimension(:,:):: plev

    layer pressures [Pa]; (ncol,nlay) level pressures [Pa]; (ncol,nlay+1) layer temperatures [K]; (ncol,nlay)

    real(kind=wp), intent(in), dimension(:,:):: tlay

    layer pressures [Pa]; (ncol,nlay) level pressures [Pa]; (ncol,nlay+1) layer temperatures [K]; (ncol,nlay)

    type(ty_gas_concs), intent(in) :: gas_desc

    Gas volume mixing ratios

    class(ty_optical_props_arry), intent(inout) :: optical_props
    real(kind=wp), intent(out), dimension(:,:):: toa_src

    Incoming solar irradiance(ncol, nnu)

    real(kind=wp), intent(in), optional dimension(:,:), target:: col_dry

    Return Value character(len=128)

    Empty if successful

procedure, public :: gas_optics_int

  • private function gas_optics_int(this, play, plev, tlay, tsfc, gas_desc, optical_props, sources, col_dry, tlev) result(error_msg)

    Compute gas optical depth and Planck source functions, given temperature, pressure, and composition

    Arguments

    TypeIntentOptionalAttributesName
    class(ty_optics_ssm), intent(in) :: this
    real(kind=wp), intent(in), dimension(:,:):: play

    layer pressures [Pa]; (ncol,nlay) level pressures [Pa]; (ncol,nlay+1) layer temperatures [K]; (ncol,nlay)

    real(kind=wp), intent(in), dimension(:,:):: plev

    layer pressures [Pa]; (ncol,nlay) level pressures [Pa]; (ncol,nlay+1) layer temperatures [K]; (ncol,nlay)

    real(kind=wp), intent(in), dimension(:,:):: tlay

    layer pressures [Pa]; (ncol,nlay) level pressures [Pa]; (ncol,nlay+1) layer temperatures [K]; (ncol,nlay)

    real(kind=wp), intent(in), dimension(:):: tsfc

    surface skin temperatures [K]; (ncol)

    type(ty_gas_concs), intent(in) :: gas_desc

    Gas volume mixing ratios

    class(ty_optical_props_arry), intent(inout) :: optical_props

    Optical properties

    class(ty_source_func_lw), intent(inout) :: sources

    Planck sources

    real(kind=wp), intent(in), optional dimension(:,:), target:: col_dry

    Column dry amount; dim(ncol,nlay), will be ignored level temperatures [K]; (ncol,nlay+1)

    real(kind=wp), intent(in), optional dimension(:,:), target:: tlev

    Column dry amount; dim(ncol,nlay), will be ignored level temperatures [K]; (ncol,nlay+1)

    Return Value character(len=128)

    Empty if succssful

procedure, public :: get_press_max

  • private pure function get_press_max(this)

    Maximum valid pressure

    Arguments

    TypeIntentOptionalAttributesName
    class(ty_optics_ssm), intent(in) :: this

    Return Value real(kind=wp)

    maximum valid pressure

procedure, public :: get_press_min

  • private pure function get_press_min(this)

    Minimum valid pressure

    Arguments

    TypeIntentOptionalAttributesName
    class(ty_optics_ssm), intent(in) :: this

    Return Value real(kind=wp)

    minimum valid pressure

procedure, public :: get_temp_max

  • private pure function get_temp_max(this)

    Maximum valid pressure

    Arguments

    TypeIntentOptionalAttributesName
    class(ty_optics_ssm), intent(in) :: this

    Return Value real(kind=wp)

    maximum valid pressure

procedure, public :: get_temp_min

  • private pure function get_temp_min(this)

    Minimum valid temperature

    Arguments

    TypeIntentOptionalAttributesName
    class(ty_optics_ssm), intent(in) :: this

    Return Value real(kind=wp)

    minimum valid temperature

procedure, public :: source_is_external

  • private pure function source_is_external(this)

    return true if configured for external sources/shortwave, false otherwise

    Arguments

    TypeIntentOptionalAttributesName
    class(ty_optics_ssm), intent(in) :: this

    Return Value logical

procedure, public :: source_is_internal

  • private pure function source_is_internal(this)

    return true if initialized for internal sources/longwave, false otherwise

    Arguments

    TypeIntentOptionalAttributesName
    class(ty_optics_ssm), intent(in) :: this

    Return Value logical