mo_rte_lw Module

Compute longwave radiative fluxes

Contains a single routine to compute direct and diffuse fluxes of solar radiation given

  • atmospheric optical properties, spectrally-resolved via one of the sub-classes of ty_optical_props_arry in module mo_optical_props
  • information about vertical ordering
  • internal Planck source functions, defined per g-point on the same spectral grid at the atmosphere, via ty_source_func_lw in module mo_source_functions
  • boundary conditions: surface emissivity defined per band
  • optionally, a boundary condition for incident diffuse radiation
  • optionally, an integer number of angles at which to do Gaussian quadrature if scattering is neglected

If optical properties are supplied via class ty_optical_props_1scl (absorption optical thickenss only) (ty_optical_props_1scl in module mo_optical_props) then an emission/absorption solver is called. If optical properties are supplied via class ty_optical_props_2str (ty_optical_props_2str in module mo_optical_props) fluxes are computed via a rescaling by default or, optionally, using two-stream calculations and adding.

Users must ensure that emissivity is on the same spectral grid as the optical properties.

Final output is via user-extensible ty_fluxes (ty_fluxes in module mo_fluxes) which must reduce the detailed spectral fluxes to whatever summary the user needs The routine does error checking and choses which lower-level kernel to invoke based on what kinds of optical properties are supplied


Uses

  • module~~mo_rte_lw~~UsesGraph module~mo_rte_lw mo_rte_lw mo_rte_solver_kernels mo_rte_solver_kernels module~mo_rte_lw->mo_rte_solver_kernels module~mo_rte_util_array_validation mo_rte_util_array_validation module~mo_rte_lw->module~mo_rte_util_array_validation module~mo_fluxes mo_fluxes module~mo_rte_lw->module~mo_fluxes module~mo_optical_props mo_optical_props module~mo_rte_lw->module~mo_optical_props module~mo_rte_kind mo_rte_kind module~mo_rte_lw->module~mo_rte_kind module~mo_rte_config mo_rte_config module~mo_rte_lw->module~mo_rte_config module~mo_source_functions mo_source_functions module~mo_rte_lw->module~mo_source_functions mo_rte_util_array mo_rte_util_array module~mo_rte_lw->mo_rte_util_array module~mo_rte_util_array_validation->module~mo_rte_kind module~mo_fluxes->module~mo_rte_util_array_validation module~mo_fluxes->module~mo_optical_props module~mo_fluxes->module~mo_rte_kind module~mo_fluxes->module~mo_rte_config mo_fluxes_broadband_kernels mo_fluxes_broadband_kernels module~mo_fluxes->mo_fluxes_broadband_kernels module~mo_optical_props->module~mo_rte_util_array_validation module~mo_optical_props->module~mo_rte_kind module~mo_optical_props->module~mo_rte_config mo_optical_props_kernels mo_optical_props_kernels module~mo_optical_props->mo_optical_props_kernels iso_c_binding iso_c_binding module~mo_rte_kind->iso_c_binding module~mo_rte_config->module~mo_rte_kind module~mo_source_functions->module~mo_optical_props module~mo_source_functions->module~mo_rte_kind

Contents


Functions

public function rte_lw(optical_props, top_at_1, sources, sfc_emis, fluxes, inc_flux, n_gauss_angles, use_2stream, lw_Ds, flux_up_Jac) result(error_msg)

Arguments

TypeIntentOptionalAttributesName
class(ty_optical_props_arry), intent(in) :: optical_props

Set of optical properties as one or more arrays

logical, intent(in) :: top_at_1

Is the top of the domain at index 1? (if not, ordering is bottom-to-top)

type(ty_source_func_lw), intent(in) :: sources

Derived type with Planck source functions

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

emissivity at surface [] (nband, ncol)

class(ty_fluxes), intent(inout) :: fluxes

Dervied type for computing spectral integrals from g-point fluxes. Default computes broadband fluxes at all levels if output arrays are defined. Can be extended per user desires.

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

incident flux at domain top [W/m2] (ncol, ngpts)

integer, intent(in), optional :: n_gauss_angles

Number of angles used in Gaussian quadrature (max 3, no-scattering solution)

logical, intent(in), optional :: use_2stream

When 2-stream parameters (tau/ssa/g) are provided, use 2-stream methods Default is to use re-scaled longwave transport

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

User-specifed 1/cos of transport angle per col, g-point

real(kind=wp), intent(inout), optional dimension(:,:), target:: flux_up_Jac

surface temperature flux Jacobian [W/m2/K] (ncol, nlay+1)

Return Value character(len=128)

If empty, calculation was successful