CCPP SciDoc v7.0.0  v7.0.0
Common Community Physics Package Developed at DTC
 
Loading...
Searching...
No Matches
mo_optical_props Module Reference

Data Types

interface  delta_scale_abstract
 Delta-scaling. More...
 
interface  subset_range_abstract
 Subsetting – currently there are only routines with start col and count. More...
 
type  ty_optical_props
 
type  ty_optical_props_1scl
 
type  ty_optical_props_2str
 
type  ty_optical_props_arry
 
type  ty_optical_props_nstr
 
interface  validate_abstract
 Validation function looks only at internal data. More...
 

Functions/Subroutines

character(len=128) function init_base (this, band_lims_wvn, band_lims_gpt, name)
 
character(len=128) function init_base_from_copy (this, spectral_desc)
 
pure logical function is_initialized_base (this)
 
subroutine finalize_base (this)
 
character(len=128) function alloc_only_1scl (this, ncol, nlay)
 
character(len=128) function alloc_only_2str (this, ncol, nlay)
 — 2 stream ---------------------------------------------------------------------—
 
character(len=128) function alloc_only_nstr (this, nmom, ncol, nlay)
 — n stream ---------------------------------------------------------------------—
 
character(len=128) function init_and_alloc_1scl (this, ncol, nlay, band_lims_wvn, band_lims_gpt, name)
 
character(len=128) function init_and_alloc_2str (this, ncol, nlay, band_lims_wvn, band_lims_gpt, name)
 
character(len=128) function init_and_alloc_nstr (this, nmom, ncol, nlay, band_lims_wvn, band_lims_gpt, name)
 
character(len=128) function copy_and_alloc_1scl (this, ncol, nlay, spectral_desc, name)
 
character(len=128) function copy_and_alloc_2str (this, ncol, nlay, spectral_desc, name)
 
character(len=128) function copy_and_alloc_nstr (this, nmom, ncol, nlay, spectral_desc, name)
 
character(len=128) function finalize_1scl (this)
 
character(len=128) function finalize_2str (this)
 
character(len=128) function finalize_nstr (this)
 
character(128) function delta_scale_1scl (this, for)
 
character(128) function delta_scale_2str (this, for)
 
character(128) function delta_scale_nstr (this, for)
 
character(len=128) function validate_1scalar (this)
 
character(len=128) function validate_2stream (this)
 
character(len=128) function validate_nstream (this)
 
character(128) function subset_1scl_range (full, start, n, subset)
 
character(128) function subset_2str_range (full, start, n, subset)
 
character(128) function subset_nstr_range (full, start, n, subset)
 
character(128) function increment (op_in, op_io)
 
pure integer function get_arry_extent (this, dim)
 
pure integer function get_ncol (this)
 
pure integer function get_nlay (this)
 
pure integer function get_nmom (this)
 
pure integer function get_nband (this)
 
pure integer function get_ngpt (this)
 
pure integer function, dimension(size(this%band2gpt, dim=1), size(this%band2gpt, dim=2)) get_band_lims_gpoint (this)
 
pure integer function, dimension(2) convert_band2gpt (this, band)
 
pure real(wp) function, dimension(size(this%band_lims_wvn, 1), size(this%band_lims_wvn, 2)) get_band_lims_wavenumber (this)
 
pure real(wp) function, dimension(size(this%band_lims_wvn, 1), size(this%band_lims_wvn, 2)) get_band_lims_wavelength (this)
 
pure integer function, dimension(size(this%gpt2band, dim=1)) get_gpoint_bands (this)
 
pure integer function convert_gpt2band (this, gpt)
 
pure real(wp) function, dimension(size(this%gpt2band)) expand (this, arr_in)
 
pure logical function bands_are_equal (this, that)
 
pure logical function gpoints_are_equal (this, that)
 
subroutine set_name (this, name)
 
character(len=name_len) function get_name (this)
 

Variables

integer, parameter, public name_len = 32
 

Detailed Description

Encapsulate optical properties defined on a spectral grid of N bands.

The bands are described by their limiting wavenumbers. They need not be contiguous or complete. A band may contain more than one spectral sub-point (g-point) in which case a mapping must be supplied. A name may be provided and will be prepended to error messages. The base class (ty_optical_props) encapsulates only this spectral discretization and must be initialized with the spectral information before use.

Optical properties may be represented as arrays with dimensions ncol, nlay, ngpt (abstract class ty_optical_props_arry). The type holds arrays depending on how much information is needed There are three possibilites

  • ty_optical_props_1scl holds absorption optical depth tau, used in calculations accounting for extinction and emission
  • ty_optical_props_2str holds extincion optical depth tau, single-scattering albedo ssa, and asymmetry parameter g. These fields are what's needed for two-stream calculations.
  • ty_optical_props_nstr holds extincion optical depth tau, single-scattering albedo ssa, and phase function moments p with leading dimension nmom. These fields are what's needed for multi-stream calculations.

    These classes must be allocated before use. Initialization and allocation can be combined. The classes have a validate() function that checks all arrays for valid values (e.g. tau > 0.)

Optical properties can be delta-scaled (though this is currently implemented only for two-stream arrays)

Optical properties can increment or "add themselves to" a set of properties represented with arrays as long as both sets have the same underlying band structure. Properties defined by band may be added to properties defined by g-point; the same value is assumed for all g-points with each band.

Subsets of optical properties held as arrays may be extracted along the column dimension.