ModSpectral_t Derived Type

type, public, extends(ModFourier_t) :: ModSpectral_t


Inherits

type~~modspectral_t~~InheritsGraph type~modspectral_t ModSpectral_t ModFourier_t ModFourier_t type~modspectral_t->ModFourier_t

Contents

Source Code


Components

TypeVisibility AttributesNameInitial
logical, private :: spectral_mod_initialized_flag =.false.
real(kind=p), private, allocatable, dimension(:, :):: el2
real(kind=p), private, allocatable, dimension(:, :):: elm2
real(kind=p), private, allocatable, dimension(:, :):: el4
real(kind=p), private, allocatable, dimension(:, :):: trfilt
real(kind=p), private, allocatable, dimension(:, :):: gradym
real(kind=p), private, allocatable, dimension(:, :):: gradyp
real(kind=p), private, allocatable, dimension(:, :):: uvdx
real(kind=p), private, allocatable, dimension(:, :):: uvdym
real(kind=p), private, allocatable, dimension(:, :):: uvdyp
real(kind=p), private, allocatable, dimension(:, :):: vddym
real(kind=p), private, allocatable, dimension(:, :):: vddyp
real(kind=p), private, allocatable, dimension(:):: gradx

Type-Bound Procedures

procedure, public :: initialize => ModSpectral_initialize

  • private subroutine ModSpectral_initialize(this, mod_geometry)

    Initialize the spectral module instance

    Arguments

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

procedure, public :: delete => ModSpectral_delete

procedure, public :: spec2grid => ModSpectral_spec2grid

  • private function ModSpectral_spec2grid(this, vorm, kcos) result(vorg)

    Arguments

    Type IntentOptional AttributesName
    class(ModSpectral_t), intent(in) :: this
    complex(kind=p), intent(in) :: vorm(mx,nx)
    integer, intent(in) :: kcos

    Return Value real(kind=p) (ix,il)

procedure, public :: grid2spec => ModSpectral_grid2spec

  • private function ModSpectral_grid2spec(this, vorg) result(vorm)

    Arguments

    Type IntentOptional AttributesName
    class(ModSpectral_t), intent(in) :: this
    real(kind=p), intent(in) :: vorg(ix,il)

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

procedure, public :: gradient => ModSpectral_gradient

  • private subroutine ModSpectral_gradient(this, psi, psdx, psdy)

    Arguments

    Type IntentOptional AttributesName
    class(ModSpectral_t), intent(in) :: this
    complex(kind=p), intent(inout), dimension(mx, nx):: psi
    complex(kind=p), intent(inout), dimension(mx, nx):: psdx
    complex(kind=p), intent(inout), dimension(mx, nx):: psdy

procedure, public :: vel2vort => ModSpectral_vel2vort

  • private subroutine ModSpectral_vel2vort(this, ucosm, vcosm, vorm, divm)

    Compute the Vorticity and Divergenge from a wind field (U,V). All the fields are in the spectral space.

    Arguments

    Type IntentOptional AttributesName
    class(ModSpectral_t), intent(in) :: this
    complex(kind=p), dimension(mx, nx):: ucosm
    complex(kind=p), dimension(mx, nx):: vcosm
    complex(kind=p), intent(inout), dimension(mx, nx):: vorm
    complex(kind=p), intent(inout), dimension(mx, nx):: divm

procedure, public :: vort2vel => ModSpectral_vort2vel

  • private subroutine ModSpectral_vort2vel(this, vorm, divm, ucosm, vcosm)

    Compute the U and V winds from the Vorticity and Divergenge fields. All the fields are in the spectral space.

    Arguments

    Type IntentOptional AttributesName
    class(ModSpectral_t), intent(in) :: this
    complex(kind=p), intent(in), dimension(mx, nx):: vorm
    complex(kind=p), intent(in), dimension(mx, nx):: divm
    complex(kind=p), intent(inout), dimension(mx, nx):: ucosm
    complex(kind=p), intent(inout), dimension(mx, nx):: vcosm

procedure, public :: grid_vel2vort => ModSpectral_grid_vel2vort

  • private subroutine ModSpectral_grid_vel2vort(this, ug, vg, vorm, divm, kcos)

    Convert u and v in the grid space to Vorticity and Divergence in the spectral space.

    Arguments

    Type IntentOptional AttributesName
    class(ModSpectral_t), intent(in) :: this
    real(kind=p), intent(in) :: ug(ix,il)
    real(kind=p), intent(in) :: vg(ix,il)
    complex(kind=p), intent(out) :: vorm(mx,nx)
    complex(kind=p), intent(out) :: divm(mx,nx)
    integer, intent(in) :: kcos

procedure, public :: truncate => ModSpectral_truncate

  • private subroutine ModSpectral_truncate(this, vor)

    Arguments

    Type IntentOptional AttributesName
    class(ModSpectral_t), intent(in) :: this
    complex(kind=p), intent(inout) :: vor(mx,nx)

procedure, public :: grid_filter => ModSpectral_grid_filter

  • private subroutine ModSpectral_grid_filter(this, fg1, fg2)

    Compute a spectrally-filtered grid-point field.

    Arguments

    Type IntentOptional AttributesName
    class(ModSpectral_t), intent(in) :: this
    real(kind=p), intent(inout) :: fg1(ix,il)

    Original grid-point field

    real(kind=p), intent(inout) :: fg2(ix,il)

    Filtered grid-point field

procedure, public :: laplacian => ModSpectral_laplacian

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

    Arguments

    Type IntentOptional AttributesName
    class(ModSpectral_t), intent(in) :: this
    complex(kind=p), intent(in) :: input(mx,nx)

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

procedure, public :: laplacian_inv => ModSpectral_laplacian_inv

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

    Arguments

    Type IntentOptional AttributesName
    class(ModSpectral_t), intent(in) :: this
    complex(kind=p), intent(in) :: input(mx,nx)

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

Source Code

    type, extends(ModFourier_t) :: ModSpectral_t
        logical :: spectral_mod_initialized_flag = .false.

        real(p), allocatable, dimension(:, :) :: el2, elm2, el4, trfilt
        real(p), allocatable, dimension(:, :) :: gradym, gradyp
        real(p), allocatable, dimension(:, :) :: uvdx, uvdym, uvdyp
        real(p), allocatable, dimension(:, :) :: vddym, vddyp
        real(p), allocatable, dimension(:) :: gradx
    contains
        procedure :: initialize => ModSpectral_initialize
        procedure :: delete => ModSpectral_delete
        procedure :: spec2grid => ModSpectral_spec2grid
        procedure :: grid2spec => ModSpectral_grid2spec
        procedure :: gradient => ModSpectral_gradient
        procedure :: vel2vort => ModSpectral_vel2vort
        procedure :: vort2vel => ModSpectral_vort2vel
        procedure :: grid_vel2vort => ModSpectral_grid_vel2vort
        procedure :: truncate => ModSpectral_truncate
        procedure :: grid_filter => ModSpectral_grid_filter
        procedure :: laplacian => ModSpectral_laplacian
        procedure :: laplacian_inv => ModSpectral_laplacian_inv

    end type ModSpectral_t