mo_optical_props_kernels Module

Kernels for arrays of optical properties:

- delta-scaling
- adding two sets of properties
- extracting subsets along the column dimension

Uses

  • module~~mo_optical_props_kernels~~UsesGraph module~mo_optical_props_kernels mo_optical_props_kernels iso_c_binding iso_c_binding module~mo_optical_props_kernels->iso_c_binding mo_rte_kind mo_rte_kind module~mo_optical_props_kernels->mo_rte_kind

Contents


Interfaces

public interface delta_scale_2str_kernel

Delta-scale two-stream optical properties

  • public pure subroutine delta_scale_2str_f_k(ncol, nlay, ngpt, tau, ssa, g, f) bind(C, name="0")

    Delta-scale two-stream optical properties given user-provided value of (forward scattering)

    Arguments

    TypeIntentOptionalAttributesName
    integer, intent(in) :: ncol

    Array sizes

    integer, intent(in) :: nlay

    Array sizes

    integer, intent(in) :: ngpt

    Array sizes

    real(kind=wp), intent(inout), dimension(ncol, nlay, ngpt):: tau

    Optical depth, single-scattering albedo, asymmetry parameter

    real(kind=wp), intent(inout), dimension(ncol, nlay, ngpt):: ssa

    Optical depth, single-scattering albedo, asymmetry parameter

    real(kind=wp), intent(inout), dimension(ncol, nlay, ngpt):: g

    Optical depth, single-scattering albedo, asymmetry parameter

    real(kind=wp), intent(in), dimension(ncol, nlay, ngpt):: f

    User-provided forward-scattering fraction

  • public pure subroutine delta_scale_2str_k(ncol, nlay, ngpt, tau, ssa, g) bind(C, name="0")

    Delta-scale assuming forward-scatternig fraction is the square of the asymmetry parameter i.e.

    Arguments

    TypeIntentOptionalAttributesName
    integer, intent(in) :: ncol

    Array sizes

    integer, intent(in) :: nlay

    Array sizes

    integer, intent(in) :: ngpt

    Array sizes

    real(kind=wp), intent(inout), dimension(ncol, nlay, ngpt):: tau

    Optical depth, single-scattering albedo, asymmetry parameter

    real(kind=wp), intent(inout), dimension(ncol, nlay, ngpt):: ssa

    Optical depth, single-scattering albedo, asymmetry parameter

    real(kind=wp), intent(inout), dimension(ncol, nlay, ngpt):: g

    Optical depth, single-scattering albedo, asymmetry parameter

public interface extract_subset

Subsetting, meaning extracting some portion of the 3D domain

  • public pure subroutine extract_subset_dim1_3d(ncol, nlay, ngpt, array_in, colS, colE, array_out) bind(C, name="0")

    Extract a subset from the first dimension (normally columns) of a 3D field. Applicable to most variables e.g. tau, ssa, g

    Arguments

    TypeIntentOptionalAttributesName
    integer, intent(in) :: ncol

    Array sizes

    integer, intent(in) :: nlay

    Array sizes

    integer, intent(in) :: ngpt

    Array sizes

    real(kind=wp), intent(in), dimension(ncol,nlay,ngpt):: array_in

    Array to subset

    integer, intent(in) :: colS

    Starting and ending index

    integer, intent(in) :: colE

    Starting and ending index

    real(kind=wp), intent(out), dimension(colE-colS+1, nlay,ngpt):: array_out

    subset of the input array

  • public pure subroutine extract_subset_dim2_4d(nmom, ncol, nlay, ngpt, array_in, colS, colE, array_out) bind(C, name="0")

    Extract a subset from the second dimension (normally columns) of a 4D field. Applicable to phase function moments, where the first dimension is the moment

    Arguments

    TypeIntentOptionalAttributesName
    integer, intent(in) :: nmom

    Array sizes

    integer, intent(in) :: ncol

    Array sizes

    integer, intent(in) :: nlay

    Array sizes

    integer, intent(in) :: ngpt

    Array sizes

    real(kind=wp), intent(in), dimension(nmom,ncol,nlay,ngpt):: array_in

    Array to subset

    integer, intent(in) :: colS

    Starting and ending index

    integer, intent(in) :: colE

    Starting and ending index

    real(kind=wp), intent(out), dimension(nmom,colE-colS+1, nlay,ngpt):: array_out

    subset of the input array

  • public pure subroutine extract_subset_absorption_tau(ncol, nlay, ngpt, tau_in, ssa_in, colS, colE, tau_out) bind(C, name="0")

    Extract the absorption optical thickness

    Arguments

    TypeIntentOptionalAttributesName
    integer, intent(in) :: ncol

    Array sizes

    integer, intent(in) :: nlay

    Array sizes

    integer, intent(in) :: ngpt

    Array sizes

    real(kind=wp), intent(in), dimension(ncol,nlay,ngpt):: tau_in

    Optical thickness, single scattering albedo

    real(kind=wp), intent(in), dimension(ncol,nlay,ngpt):: ssa_in

    Optical thickness, single scattering albedo

    integer, intent(in) :: colS

    Starting and ending index

    integer, intent(in) :: colE

    Starting and ending index

    real(kind=wp), intent(out), dimension(colE-colS+1, nlay,ngpt):: tau_out

    absorption optical thickness subset


Subroutines

public pure subroutine delta_scale_2str_f_k(ncol, nlay, ngpt, tau, ssa, g, f) bind(C, name="0")

Delta-scale two-stream optical properties given user-provided value of (forward scattering)

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: ncol

Array sizes

integer, intent(in) :: nlay

Array sizes

integer, intent(in) :: ngpt

Array sizes

real(kind=wp), intent(inout), dimension(ncol, nlay, ngpt):: tau

Optical depth, single-scattering albedo, asymmetry parameter

real(kind=wp), intent(inout), dimension(ncol, nlay, ngpt):: ssa

Optical depth, single-scattering albedo, asymmetry parameter

real(kind=wp), intent(inout), dimension(ncol, nlay, ngpt):: g

Optical depth, single-scattering albedo, asymmetry parameter

real(kind=wp), intent(in), dimension(ncol, nlay, ngpt):: f

User-provided forward-scattering fraction

public pure subroutine delta_scale_2str_k(ncol, nlay, ngpt, tau, ssa, g) bind(C, name="0")

Delta-scale assuming forward-scatternig fraction is the square of the asymmetry parameter i.e.

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: ncol

Array sizes

integer, intent(in) :: nlay

Array sizes

integer, intent(in) :: ngpt

Array sizes

real(kind=wp), intent(inout), dimension(ncol, nlay, ngpt):: tau

Optical depth, single-scattering albedo, asymmetry parameter

real(kind=wp), intent(inout), dimension(ncol, nlay, ngpt):: ssa

Optical depth, single-scattering albedo, asymmetry parameter

real(kind=wp), intent(inout), dimension(ncol, nlay, ngpt):: g

Optical depth, single-scattering albedo, asymmetry parameter

public pure subroutine extract_subset_absorption_tau(ncol, nlay, ngpt, tau_in, ssa_in, colS, colE, tau_out) bind(C, name="0")

Extract the absorption optical thickness

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: ncol

Array sizes

integer, intent(in) :: nlay

Array sizes

integer, intent(in) :: ngpt

Array sizes

real(kind=wp), intent(in), dimension(ncol,nlay,ngpt):: tau_in

Optical thickness, single scattering albedo

real(kind=wp), intent(in), dimension(ncol,nlay,ngpt):: ssa_in

Optical thickness, single scattering albedo

integer, intent(in) :: colS

Starting and ending index

integer, intent(in) :: colE

Starting and ending index

real(kind=wp), intent(out), dimension(colE-colS+1, nlay,ngpt):: tau_out

absorption optical thickness subset

public pure subroutine extract_subset_dim1_3d(ncol, nlay, ngpt, array_in, colS, colE, array_out) bind(C, name="0")

Extract a subset from the first dimension (normally columns) of a 3D field. Applicable to most variables e.g. tau, ssa, g

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: ncol

Array sizes

integer, intent(in) :: nlay

Array sizes

integer, intent(in) :: ngpt

Array sizes

real(kind=wp), intent(in), dimension(ncol,nlay,ngpt):: array_in

Array to subset

integer, intent(in) :: colS

Starting and ending index

integer, intent(in) :: colE

Starting and ending index

real(kind=wp), intent(out), dimension(colE-colS+1, nlay,ngpt):: array_out

subset of the input array

public pure subroutine extract_subset_dim2_4d(nmom, ncol, nlay, ngpt, array_in, colS, colE, array_out) bind(C, name="0")

Extract a subset from the second dimension (normally columns) of a 4D field. Applicable to phase function moments, where the first dimension is the moment

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: nmom

Array sizes

integer, intent(in) :: ncol

Array sizes

integer, intent(in) :: nlay

Array sizes

integer, intent(in) :: ngpt

Array sizes

real(kind=wp), intent(in), dimension(nmom,ncol,nlay,ngpt):: array_in

Array to subset

integer, intent(in) :: colS

Starting and ending index

integer, intent(in) :: colE

Starting and ending index

real(kind=wp), intent(out), dimension(nmom,colE-colS+1, nlay,ngpt):: array_out

subset of the input array

public pure subroutine inc_1scalar_by_1scalar_bybnd(ncol, nlay, ngpt, tau1, tau2, nbnd, gpt_lims) bind(C, name="0")

increase one absorption optical depth defined on g-points by a second value defined on bands

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: ncol

array sizes

integer, intent(in) :: nlay

array sizes

integer, intent(in) :: ngpt

array sizes

real(kind=wp), intent(inout), dimension(ncol,nlay,ngpt):: tau1

optical properties to be modified (defined on g-points)

real(kind=wp), intent(in), dimension(ncol,nlay,nbnd):: tau2

optical properties to be added to original (defined on bands)

integer, intent(in) :: nbnd

array sizes

integer, intent(in), dimension(2,nbnd):: gpt_lims

Starting and ending gpoint for each band

public pure subroutine inc_1scalar_by_2stream_bybnd(ncol, nlay, ngpt, tau1, tau2, ssa2, nbnd, gpt_lims) bind(C, name="0")

increase absorption optical depth defined on g-points with extinction optical depth (2-stream form) defined on bands

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: ncol

array sizes

integer, intent(in) :: nlay

array sizes

integer, intent(in) :: ngpt

array sizes

real(kind=wp), intent(inout), dimension(ncol,nlay,ngpt):: tau1

optical properties to be modified (defined on g-points)

real(kind=wp), intent(in), dimension(ncol,nlay,nbnd):: tau2

optical properties to be added to original (defined on bands)

real(kind=wp), intent(in), dimension(ncol,nlay,nbnd):: ssa2

optical properties to be added to original (defined on bands)

integer, intent(in) :: nbnd

array sizes

integer, intent(in), dimension(2,nbnd):: gpt_lims

Starting and ending gpoint for each band

public pure subroutine inc_1scalar_by_nstream_bybnd(ncol, nlay, ngpt, tau1, tau2, ssa2, nbnd, gpt_lims) bind(C, name="0")

increase absorption optical depth defined on g-points with extinction optical depth (n-stream form) defined on bands

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: ncol

array sizes

integer, intent(in) :: nlay

array sizes

integer, intent(in) :: ngpt

array sizes

real(kind=wp), intent(inout), dimension(ncol,nlay,ngpt):: tau1

optical properties to be modified (defined on g-points)

real(kind=wp), intent(in), dimension(ncol,nlay,nbnd):: tau2

optical properties to be added to original (defined on bands)

real(kind=wp), intent(in), dimension(ncol,nlay,nbnd):: ssa2

optical properties to be added to original (defined on bands)

integer, intent(in) :: nbnd

array sizes

integer, intent(in), dimension(2,nbnd):: gpt_lims

Starting and ending gpoint for each band

public pure subroutine inc_2stream_by_1scalar_bybnd(ncol, nlay, ngpt, tau1, ssa1, tau2, nbnd, gpt_lims) bind(C, name="0")

increment two-stream optical properties defined on g-points with absorption optical depth defined on bands

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: ncol

array sizes

integer, intent(in) :: nlay

array sizes

integer, intent(in) :: ngpt

array sizes

real(kind=wp), intent(inout), dimension(ncol,nlay,ngpt):: tau1

optical properties to be modified (defined on g-points)

real(kind=wp), intent(inout), dimension(ncol,nlay,ngpt):: ssa1

optical properties to be modified (defined on g-points)

real(kind=wp), intent(in), dimension(ncol,nlay,nbnd):: tau2

optical properties to be added to original (defined on bands)

integer, intent(in) :: nbnd

array sizes

integer, intent(in), dimension(2,nbnd):: gpt_lims

Starting and ending gpoint for each band

public pure subroutine inc_2stream_by_2stream_bybnd(ncol, nlay, ngpt, tau1, ssa1, g1, tau2, ssa2, g2, nbnd, gpt_lims) bind(C, name="0")

increment 2-stream optical properties defined on g-points with another set defined on bands

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: ncol

array sizes

integer, intent(in) :: nlay

array sizes

integer, intent(in) :: ngpt

array sizes

real(kind=wp), intent(inout), dimension(ncol,nlay,ngpt):: tau1

optical properties to be modified (defined on g-points)

real(kind=wp), intent(inout), dimension(ncol,nlay,ngpt):: ssa1

optical properties to be modified (defined on g-points)

real(kind=wp), intent(inout), dimension(ncol,nlay,ngpt):: g1

optical properties to be modified (defined on g-points)

real(kind=wp), intent(in), dimension(ncol,nlay,nbnd):: tau2

optical properties to be added to original (defined on bands)

real(kind=wp), intent(in), dimension(ncol,nlay,nbnd):: ssa2

optical properties to be added to original (defined on bands)

real(kind=wp), intent(in), dimension(ncol,nlay,nbnd):: g2

optical properties to be added to original (defined on bands)

integer, intent(in) :: nbnd

array sizes

integer, intent(in), dimension(2,nbnd):: gpt_lims

Starting and ending gpoint for each band

public pure subroutine inc_2stream_by_nstream_bybnd(ncol, nlay, ngpt, nmom2, tau1, ssa1, g1, tau2, ssa2, p2, nbnd, gpt_lims) bind(C, name="0")

increment 2-stream optical properties defined on g-points with n-stream properties set defined on bands

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: ncol

array sizes

integer, intent(in) :: nlay

array sizes

integer, intent(in) :: ngpt

array sizes

integer, intent(in) :: nmom2

array sizes

real(kind=wp), intent(inout), dimension(ncol,nlay,ngpt):: tau1

optical properties to be modified (defined on g-points)

real(kind=wp), intent(inout), dimension(ncol,nlay,ngpt):: ssa1

optical properties to be modified (defined on g-points)

real(kind=wp), intent(inout), dimension(ncol,nlay,ngpt):: g1

optical properties to be modified (defined on g-points)

real(kind=wp), intent(in), dimension(ncol,nlay,nbnd):: tau2

optical properties to be added to original (defined on bands)

real(kind=wp), intent(in), dimension(ncol,nlay,nbnd):: ssa2

optical properties to be added to original (defined on bands)

real(kind=wp), intent(in), dimension(nmom2, ncol,nlay,nbnd):: p2

moments of the phase function to be added

integer, intent(in) :: nbnd

array sizes

integer, intent(in), dimension(2,nbnd):: gpt_lims

Starting and ending gpoint for each band

public pure subroutine inc_nstream_by_1scalar_bybnd(ncol, nlay, ngpt, tau1, ssa1, tau2, nbnd, gpt_lims) bind(C, name="0")

increment n-stream optical properties defined on g-points with absorption optical depth defined on bands

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: ncol

array sizes

integer, intent(in) :: nlay

array sizes

integer, intent(in) :: ngpt

array sizes

real(kind=wp), intent(inout), dimension(ncol,nlay,ngpt):: tau1

optical properties to be modified (defined on g-points)

real(kind=wp), intent(inout), dimension(ncol,nlay,ngpt):: ssa1

optical properties to be modified (defined on g-points)

real(kind=wp), intent(in), dimension(ncol,nlay,nbnd):: tau2

optical properties to be added to original (defined on bands)

integer, intent(in) :: nbnd

array sizes

integer, intent(in), dimension(2,nbnd):: gpt_lims

Starting and ending gpoint for each band

public pure subroutine inc_nstream_by_2stream_bybnd(ncol, nlay, ngpt, nmom1, tau1, ssa1, p1, tau2, ssa2, g2, nbnd, gpt_lims) bind(C, name="0")

increment n-stream optical properties defined on g-points with 2-stream properties set defined on bands

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: ncol

array sizes

integer, intent(in) :: nlay

array sizes

integer, intent(in) :: ngpt

array sizes

integer, intent(in) :: nmom1

array sizes

real(kind=wp), intent(inout), dimension(ncol,nlay,ngpt):: tau1

optical properties to be modified (defined on g-points)

real(kind=wp), intent(inout), dimension(ncol,nlay,ngpt):: ssa1

optical properties to be modified (defined on g-points)

real(kind=wp), intent(inout), dimension(nmom1, ncol,nlay,ngpt):: p1

moments of the phase function be modified

real(kind=wp), intent(in), dimension(ncol,nlay,nbnd):: tau2

optical properties to be added to original (defined on bands)

real(kind=wp), intent(in), dimension(ncol,nlay,nbnd):: ssa2

optical properties to be added to original (defined on bands)

real(kind=wp), intent(in), dimension(ncol,nlay,nbnd):: g2

optical properties to be added to original (defined on bands)

integer, intent(in) :: nbnd

array sizes

integer, intent(in), dimension(2,nbnd):: gpt_lims

Starting and ending gpoint for each band

public pure subroutine inc_nstream_by_nstream_bybnd(ncol, nlay, ngpt, nmom1, nmom2, tau1, ssa1, p1, tau2, ssa2, p2, nbnd, gpt_lims) bind(C, name="0")

increment n-stream optical properties defined on g-points with a second set defined on bands

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: ncol

array sizes

integer, intent(in) :: nlay

array sizes

integer, intent(in) :: ngpt

array sizes

integer, intent(in) :: nmom1

array sizes

integer, intent(in) :: nmom2

array sizes

real(kind=wp), intent(inout), dimension(ncol,nlay,ngpt):: tau1

optical properties to be modified (defined on g-points)

real(kind=wp), intent(inout), dimension(ncol,nlay,ngpt):: ssa1

optical properties to be modified (defined on g-points)

real(kind=wp), intent(inout), dimension(nmom1, ncol,nlay,ngpt):: p1

moments of the phase function be modified

real(kind=wp), intent(in), dimension(ncol,nlay,nbnd):: tau2

optical properties to be added to original (defined on bands)

real(kind=wp), intent(in), dimension(ncol,nlay,nbnd):: ssa2

optical properties to be added to original (defined on bands)

real(kind=wp), intent(in), dimension(nmom2, ncol,nlay,nbnd):: p2

moments of the phase function to be added

integer, intent(in) :: nbnd

array sizes

integer, intent(in), dimension(2,nbnd):: gpt_lims

Starting and ending gpoint for each band

public pure subroutine increment_1scalar_by_1scalar(ncol, nlay, ngpt, tau1, tau2) bind(C, name="0")

increase one absorption optical depth by a second value

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: ncol

array sizes

integer, intent(in) :: nlay

array sizes

integer, intent(in) :: ngpt

array sizes

real(kind=wp), intent(inout), dimension(ncol,nlay,ngpt):: tau1

optical properties to be modified

real(kind=wp), intent(in), dimension(ncol,nlay,ngpt):: tau2

optical properties to be added to original

public pure subroutine increment_1scalar_by_2stream(ncol, nlay, ngpt, tau1, tau2, ssa2) bind(C, name="0")

increase absorption optical depth with extinction optical depth (2-stream form)

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: ncol

array sizes

integer, intent(in) :: nlay

array sizes

integer, intent(in) :: ngpt

array sizes

real(kind=wp), intent(inout), dimension(ncol,nlay,ngpt):: tau1

optical properties to be modified

real(kind=wp), intent(in), dimension(ncol,nlay,ngpt):: tau2

optical properties to be added to original

real(kind=wp), intent(in), dimension(ncol,nlay,ngpt):: ssa2

optical properties to be added to original

public pure subroutine increment_1scalar_by_nstream(ncol, nlay, ngpt, tau1, tau2, ssa2) bind(C, name="0")

increase absorption optical depth with extinction optical depth (n-stream form)

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: ncol

array sizes

integer, intent(in) :: nlay

array sizes

integer, intent(in) :: ngpt

array sizes

real(kind=wp), intent(inout), dimension(ncol,nlay,ngpt):: tau1

optical properties to be modified

real(kind=wp), intent(in), dimension(ncol,nlay,ngpt):: tau2

optical properties to be added to original

real(kind=wp), intent(in), dimension(ncol,nlay,ngpt):: ssa2

optical properties to be added to original

public pure subroutine increment_2stream_by_1scalar(ncol, nlay, ngpt, tau1, ssa1, tau2) bind(C, name="0")

increment two-stream optical properties with absorption optical depth

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: ncol

array sizes

integer, intent(in) :: nlay

array sizes

integer, intent(in) :: ngpt

array sizes

real(kind=wp), intent(inout), dimension(ncol,nlay,ngpt):: tau1

optical properties to be modified

real(kind=wp), intent(inout), dimension(ncol,nlay,ngpt):: ssa1

optical properties to be modified

real(kind=wp), intent(in), dimension(ncol,nlay,ngpt):: tau2

optical properties to be added to original

public pure subroutine increment_2stream_by_2stream(ncol, nlay, ngpt, tau1, ssa1, g1, tau2, ssa2, g2) bind(C, name="0")

increment two-stream optical properties with a second set

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: ncol

array sizes

integer, intent(in) :: nlay

array sizes

integer, intent(in) :: ngpt

array sizes

real(kind=wp), intent(inout), dimension(ncol,nlay,ngpt):: tau1

optical properties to be modified

real(kind=wp), intent(inout), dimension(ncol,nlay,ngpt):: ssa1

optical properties to be modified

real(kind=wp), intent(inout), dimension(ncol,nlay,ngpt):: g1

optical properties to be modified

real(kind=wp), intent(in), dimension(ncol,nlay,ngpt):: tau2

optical properties to be added to original

real(kind=wp), intent(in), dimension(ncol,nlay,ngpt):: ssa2

optical properties to be added to original

real(kind=wp), intent(in), dimension(ncol,nlay,ngpt):: g2

optical properties to be added to original

public pure subroutine increment_2stream_by_nstream(ncol, nlay, ngpt, nmom2, tau1, ssa1, g1, tau2, ssa2, p2) bind(C, name="0")

increment two-stream optical properties with n-stream

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: ncol

array sizes

integer, intent(in) :: nlay

array sizes

integer, intent(in) :: ngpt

array sizes

integer, intent(in) :: nmom2

array sizes

real(kind=wp), intent(inout), dimension(ncol,nlay,ngpt):: tau1

optical properties to be modified

real(kind=wp), intent(inout), dimension(ncol,nlay,ngpt):: ssa1

optical properties to be modified

real(kind=wp), intent(inout), dimension(ncol,nlay,ngpt):: g1

optical properties to be modified

real(kind=wp), intent(in), dimension(ncol,nlay,ngpt):: tau2

optical properties to be added to original

real(kind=wp), intent(in), dimension(ncol,nlay,ngpt):: ssa2

optical properties to be added to original

real(kind=wp), intent(in), dimension(nmom2, ncol,nlay,ngpt):: p2

moments of the phase function to be added

public pure subroutine increment_nstream_by_1scalar(ncol, nlay, ngpt, tau1, ssa1, tau2) bind(C, name="0")

increment n-stream optical properties with absorption optical depth

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: ncol

array sizes

integer, intent(in) :: nlay

array sizes

integer, intent(in) :: ngpt

array sizes

real(kind=wp), intent(inout), dimension(ncol,nlay,ngpt):: tau1

optical properties to be modified

real(kind=wp), intent(inout), dimension(ncol,nlay,ngpt):: ssa1

optical properties to be modified

real(kind=wp), intent(in), dimension(ncol,nlay,ngpt):: tau2

optical properties to be added to original

public pure subroutine increment_nstream_by_2stream(ncol, nlay, ngpt, nmom1, tau1, ssa1, p1, tau2, ssa2, g2) bind(C, name="0")

increment n-stream optical properties with two-stream values

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: ncol

array sizes

integer, intent(in) :: nlay

array sizes

integer, intent(in) :: ngpt

array sizes

integer, intent(in) :: nmom1

array sizes

real(kind=wp), intent(inout), dimension(ncol,nlay,ngpt):: tau1

optical properties to be modified

real(kind=wp), intent(inout), dimension(ncol,nlay,ngpt):: ssa1

optical properties to be modified

real(kind=wp), intent(inout), dimension(nmom1, ncol,nlay,ngpt):: p1

moments of the phase function be modified

real(kind=wp), intent(in), dimension(ncol,nlay,ngpt):: tau2

optical properties to be added to original

real(kind=wp), intent(in), dimension(ncol,nlay,ngpt):: ssa2

optical properties to be added to original

real(kind=wp), intent(in), dimension(ncol,nlay,ngpt):: g2

optical properties to be added to original

public pure subroutine increment_nstream_by_nstream(ncol, nlay, ngpt, nmom1, nmom2, tau1, ssa1, p1, tau2, ssa2, p2) bind(C, name="0")

increment one set of n-stream optical properties with another set

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: ncol

array sizes

integer, intent(in) :: nlay

array sizes

integer, intent(in) :: ngpt

array sizes

integer, intent(in) :: nmom1

array sizes

integer, intent(in) :: nmom2

array sizes

real(kind=wp), intent(inout), dimension(ncol,nlay,ngpt):: tau1

optical properties to be modified

real(kind=wp), intent(inout), dimension(ncol,nlay,ngpt):: ssa1

optical properties to be modified

real(kind=wp), intent(inout), dimension(nmom1, ncol,nlay,ngpt):: p1

moments of the phase function be modified

real(kind=wp), intent(in), dimension(ncol,nlay,ngpt):: tau2

optical properties to be added to original

real(kind=wp), intent(in), dimension(ncol,nlay,ngpt):: ssa2

optical properties to be added to original

real(kind=wp), intent(in), dimension(nmom2, ncol,nlay,ngpt):: p2

moments of the phase function to be added