spectral Module


Uses

  • module~~spectral~~UsesGraph module~spectral spectral module~geometry geometry module~spectral->module~geometry module~params params module~spectral->module~params module~types types module~spectral->module~types module~fourier fourier module~spectral->module~fourier module~geometry->module~params module~geometry->module~types module~params->module~types iso_fortran_env iso_fortran_env module~types->iso_fortran_env module~fourier->module~geometry module~fourier->module~params module~fourier->module~types module~legendre legendre module~fourier->module~legendre module~legendre->module~geometry module~legendre->module~params module~legendre->module~types

Used by

  • module~~spectral~~UsedByGraph module~spectral spectral proc~gen_sppt gen_sppt proc~gen_sppt->module~spectral module~model_state model_state module~model_state->module~spectral module~prognostics prognostics module~prognostics->module~spectral module~prognostics->module~model_state module~time_stepping time_stepping module~time_stepping->module~spectral proc~check_diagnostics check_diagnostics proc~check_diagnostics->module~spectral proc~get_grid_point_tendencies get_grid_point_tendencies proc~get_grid_point_tendencies->module~spectral proc~get_grid_point_tendencies->module~model_state proc~get_spectral_tendencies get_spectral_tendencies proc~get_spectral_tendencies->module~spectral proc~get_spectral_tendencies->module~model_state proc~get_physical_tendencies get_physical_tendencies proc~get_physical_tendencies->module~spectral proc~get_physical_tendencies->module~model_state proc~do_single_step do_single_step proc~do_single_step->module~spectral proc~do_single_step->module~model_state proc~do_single_step->module~time_stepping proc~get_tendencies get_tendencies proc~get_tendencies->module~model_state proc~initialize_geopotential initialize_geopotential proc~initialize_geopotential->module~model_state proc~modelstate_init_sst_anom modelstate_init_sst_anom proc~modelstate_init_sst_anom->module~model_state proc~initialize_boundaries initialize_boundaries proc~initialize_boundaries->module~model_state proc~land_model_init land_model_init proc~land_model_init->module~model_state proc~initialize_coupler initialize_coupler proc~initialize_coupler->module~model_state proc~run_land_model run_land_model proc~run_land_model->module~model_state proc~set_forcing set_forcing proc~set_forcing->module~model_state proc~transform_spectral2grid transform_spectral2grid proc~transform_spectral2grid->module~prognostics proc~apply_grid_filter apply_grid_filter proc~apply_grid_filter->module~prognostics proc~sea_model_init sea_model_init proc~sea_model_init->module~model_state proc~run_sea_model run_sea_model proc~run_sea_model->module~model_state module~speedy_driver speedy_driver module~speedy_driver->module~model_state proc~transform_grid2spectral transform_grid2spectral proc~transform_grid2spectral->module~prognostics proc~couple_sea_land couple_sea_land proc~couple_sea_land->module~model_state proc~couple_land_atm couple_land_atm proc~couple_land_atm->module~model_state proc~set_geopotential set_geopotential proc~set_geopotential->module~model_state proc~first_step first_step proc~first_step->module~model_state proc~initialize_state initialize_state proc~initialize_state->module~model_state proc~initialize_state->module~prognostics proc~initialize_state->module~time_stepping proc~get_zonal_average_fields get_zonal_average_fields proc~get_zonal_average_fields->module~model_state proc~get_shortwave_rad_fluxes get_shortwave_rad_fluxes proc~get_shortwave_rad_fluxes->module~model_state proc~step step proc~step->module~model_state proc~couple_sea_atm couple_sea_atm proc~couple_sea_atm->module~model_state

Contents


Derived Types

type, public, extends(ModFourier_t) :: ModSpectral_t

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
procedure, public :: delete => ModSpectral_delete
procedure, public :: spec2grid => ModSpectral_spec2grid
procedure, public :: grid2spec => ModSpectral_grid2spec
procedure, public :: gradient => ModSpectral_gradient
procedure, public :: vel2vort => ModSpectral_vel2vort
procedure, public :: vort2vel => ModSpectral_vort2vel
procedure, public :: grid_vel2vort => ModSpectral_grid_vel2vort
procedure, public :: truncate => ModSpectral_truncate
procedure, public :: grid_filter => ModSpectral_grid_filter
procedure, public :: laplacian => ModSpectral_laplacian
procedure, public :: laplacian_inv => ModSpectral_laplacian_inv

Functions

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)

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)

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)

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)


Subroutines

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

private subroutine ModSpectral_delete(this)

Arguments

Type IntentOptional AttributesName
class(ModSpectral_t), intent(inout) :: this

private subroutine ModSpectral_truncate(this, vor)

Arguments

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

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

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

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

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

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