mo_gas_optics Module

Generic Fortran interface for gas optics

Defines an interface for gas optics parameterizations:

  • inquiry functions for the pressure and temperature limits
  • inquiry functions for the source of radiation (internal or planetary radiation vs. external or stellar radiation)
  • Method for computing gas optical optical properties and incident stellar radiation given pressure, temperature, and gas concentrations
  • Method for computing gas optical optical properties and internal Planck sources given pressure, temperature, and gas concentrations

This (abstract) class is a sub-classes of ty_optical_props in the RTE module mo_optical_props and inherits the procedures related to spectral discratization from that class. Optical properties are returned in any variable of ty_optical_props_arry (that is, an array of values with dimensions ncol, nlay, ngpt) in the same module. Internal sources of radiation are provided in a variable of type ty_source_func_lw in RTE module ty_source_func_lw. The module also makes use of ty_gas_concs from module mo_gas_concentrations.


Uses

  • module~~mo_gas_optics~~UsesGraph module~mo_gas_optics mo_gas_optics module~mo_gas_concentrations mo_gas_concentrations module~mo_gas_optics->module~mo_gas_concentrations module~mo_source_functions mo_source_functions module~mo_gas_optics->module~mo_source_functions module~mo_optical_props mo_optical_props module~mo_gas_optics->module~mo_optical_props mo_rte_kind mo_rte_kind module~mo_gas_optics->mo_rte_kind module~mo_gas_concentrations->mo_rte_kind module~mo_rte_util_array_validation mo_rte_util_array_validation module~mo_gas_concentrations->module~mo_rte_util_array_validation module~mo_rte_config mo_rte_config module~mo_gas_concentrations->module~mo_rte_config module~mo_source_functions->module~mo_optical_props module~mo_source_functions->mo_rte_kind module~mo_optical_props->mo_rte_kind module~mo_optical_props->module~mo_rte_util_array_validation mo_optical_props_kernels mo_optical_props_kernels module~mo_optical_props->mo_optical_props_kernels module~mo_optical_props->module~mo_rte_config module~mo_rte_util_array_validation->mo_rte_kind module~mo_rte_config->mo_rte_kind

Contents


Abstract Interfaces

abstract interface

  • public function gas_optics_ext_abstract(this, play, plev, tlay, gas_desc, optical_props, toa_src, col_dry) result(error_msg)

    Arguments

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

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

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

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

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

    layer pressures [Pa, mb]; (ncol,nlay) level pressures [Pa, mb]; (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,ngpt)

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

    Column dry amount (molecules/cm^2); dim(ncol,nlay)

    Return Value character(len=128)

    Empty if successful

abstract interface

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

    Arguments

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

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

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

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

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

    layer pressures [Pa, mb]; (ncol,nlay) level pressures [Pa, mb]; (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 (molecules/cm^2); dim(ncol,nlay) level temperatures [K]l (ncol,nlay+1)

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

    Column dry amount (molecules/cm^2); dim(ncol,nlay) level temperatures [K]l (ncol,nlay+1)

    Return Value character(len=128)

    Empty if successful

abstract interface

  • public function logical_abstract(this)

    Arguments

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

    Return Value logical

abstract interface

  • public function real_abstract(this)

    Arguments

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

    Return Value real(kind=wp)


Derived Types

type, public, abstract, extends(ty_optical_props) :: ty_gas_optics

Type-Bound Procedures

procedure, public :: bands_are_equal
procedure, public :: convert_band2gpt
procedure, public :: convert_gpt2band
procedure, public :: expand
procedure, public :: finalize => finalize_base
generic, public :: gas_optics => gas_optics_int, gas_optics_ext
procedure(gas_optics_ext_abstract), public :: gas_optics_ext
procedure(gas_optics_int_abstract), public :: gas_optics_int
procedure, public :: get_band_lims_gpoint
procedure, public :: get_band_lims_wavelength
procedure, public :: get_band_lims_wavenumber
procedure, public :: get_gpoint_bands
procedure, public :: get_name
procedure, public :: get_nband
procedure, public :: get_ngpt
procedure(real_abstract), public :: get_press_max
procedure(real_abstract), public :: get_press_min
procedure(real_abstract), public :: get_temp_max
procedure(real_abstract), public :: get_temp_min
procedure, public :: gpoints_are_equal
generic, public :: init => init_base, init_base_from_copy
procedure, public :: is_initialized => is_initialized_base
procedure, public :: set_name
procedure(logical_abstract), public :: source_is_external
procedure(logical_abstract), public :: source_is_internal