mo_rte_sw Module

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

  • atmospheric optical properties on a spectral grid
  • information about vertical ordering
  • boundary conditions
  • solar zenith angle, spectrally-resolved incident colimated flux, surface albedos for direct and diffuse radiation
  • optionally, a boundary condition for incident diffuse radiation

It is the user's responsibility to ensure that boundary conditions (incident fluxes, surface albedos) are 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_sw~~UsesGraph module~mo_rte_sw mo_rte_sw module~mo_rte_util_array_validation mo_rte_util_array_validation module~mo_rte_sw->module~mo_rte_util_array_validation mo_rte_solver_kernels mo_rte_solver_kernels module~mo_rte_sw->mo_rte_solver_kernels module~mo_optical_props mo_optical_props module~mo_rte_sw->module~mo_optical_props module~mo_rte_kind mo_rte_kind module~mo_rte_sw->module~mo_rte_kind module~mo_fluxes mo_fluxes module~mo_rte_sw->module~mo_fluxes module~mo_rte_config mo_rte_config module~mo_rte_sw->module~mo_rte_config mo_rte_util_array mo_rte_util_array module~mo_rte_sw->mo_rte_util_array module~mo_rte_util_array_validation->module~mo_rte_kind 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_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_rte_config->module~mo_rte_kind

Contents


Interfaces

public interface rte_sw

  • private function rte_sw_mu0_bycol(atmos, top_at_1, mu0, inc_flux, sfc_alb_dir, sfc_alb_dif, fluxes, inc_flux_dif) result(error_msg)

    Arguments

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

    Optical properties provided as arrays

    logical, intent(in) :: top_at_1

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

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

    cosine of solar zenith angle (ncol) - will be assumed constant with height

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

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

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

    surface albedo for direct and

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

    diffuse radiation (nband, ncol)

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

    Class describing output calculations

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

    incident diffuse flux at top of domain [W/m2] (ncol, ngpt)

    Return Value character(len=128)

    If empty, calculation was successful

  • private function rte_sw_mu0_full(atmos, top_at_1, mu0, inc_flux, sfc_alb_dir, sfc_alb_dif, fluxes, inc_flux_dif) result(error_msg)

    Arguments

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

    Optical properties provided as arrays

    logical, intent(in) :: top_at_1

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

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

    cosine of solar zenith angle (ncol, nlay)

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

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

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

    surface albedo for direct and

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

    diffuse radiation (nband, ncol)

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

    Class describing output calculations

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

    incident diffuse flux at top of domain [W/m2] (ncol, ngpt)

    Return Value character(len=128)

    If empty, calculation was successful