ModLegendre_t Derived Type

type, public :: ModLegendre_t

Legendre module variables


Inherits

type~~modlegendre_t~~InheritsGraph type~modlegendre_t ModLegendre_t ModGeometry_t ModGeometry_t type~modlegendre_t->ModGeometry_t mod_geometry

Contents


Components

TypeVisibility AttributesNameInitial
logical, private :: mod_legendre_initialized =.false.
real(kind=8), private, allocatable, dimension(:, :):: epsi
real(kind=8), private, allocatable, dimension(:, :, :):: cpol
real(kind=8), private, allocatable, dimension(:, :):: repsi
integer, private, allocatable, dimension(:):: nsh2
real(kind=8), private, allocatable, dimension(:):: wt
class(ModGeometry_t), private, pointer:: mod_geometry=> null()

Spectral module instance

logical, private :: mod_geometry_initialized =.false.

Type-Bound Procedures

procedure, public :: initialize => ModLegendre_initialize

  • public subroutine ModLegendre_initialize(this, mod_geometry)

    Initializes Legendre transforms and constants used for other subroutines that manipulate spherical harmonics. The Legendre polynomials Epsilon function used for various spectral calculations 1/epsi Used for defining shape of spectral triangle Gaussian weights used for integration in direct Legendre transform

    Arguments

    Type IntentOptional AttributesName
    class(ModLegendre_t), intent(inout) :: this
    class(ModGeometry_t), intent(in), target:: mod_geometry

procedure, public :: legendre => ModLegendre_legendre

  • private function ModLegendre_legendre(this, input) result(output)

    Computes direct Legendre transformation. The Legendre polynomials (cpol), the triangular shape definition (nsh2), and the gaussian weights (wt) used for the integration of the Legendre transform needs to be initialized and passed to the function.

    Arguments

    Type IntentOptional AttributesName
    class(ModLegendre_t), intent(in) :: this
    real(kind=p), intent(in) :: input(2*mx,il)

    Input field

    Return Value real(kind=p) (2*mx,nx)

    Output field

procedure, public :: legendre_inv => ModLegendre_legendre_inv

  • private function ModLegendre_legendre_inv(this, input) result(output)

    Computes inverse Legendre transformation. The Legendre polynomials (cpol) and the triangular shape definition (nsh2) needs to be initialized and passed to the function.

    Arguments

    Type IntentOptional AttributesName
    class(ModLegendre_t), intent(in) :: this
    real(kind=p), intent(in) :: input(2*mx,nx)

    Input field

    Return Value real(kind=p) (2*mx,il)

    Output field

procedure, public :: delete => ModLegendre_delete

procedure, public :: legendre_poly => ModLegendre_legendre_poly

  • private function ModLegendre_legendre_poly(this, j) result(poly)

    Compute associated Legendre polynomials at given latitude.

    Arguments

    Type IntentOptional AttributesName
    class(ModLegendre_t), intent(in) :: this
    integer, intent(in) :: j

    The latitude index to compute the polynomials at

    Return Value real(kind=p) (mx,nx)

    The Legendre polynomials