m_tdsops Module


Uses

  • module~~m_tdsops~~UsesGraph module~m_tdsops m_tdsops iso_fortran_env iso_fortran_env module~m_tdsops->iso_fortran_env module~m_common m_common module~m_tdsops->module~m_common

Used by

  • module~~m_tdsops~~UsedByGraph module~m_tdsops m_tdsops module~m_base_backend m_base_backend module~m_base_backend->module~m_tdsops module~m_poisson_fft m_poisson_fft module~m_base_backend->module~m_poisson_fft module~m_cuda_backend m_cuda_backend module~m_cuda_backend->module~m_tdsops module~m_cuda_backend->module~m_base_backend module~m_cuda_poisson_fft m_cuda_poisson_fft module~m_cuda_backend->module~m_cuda_poisson_fft module~m_cuda_tdsops m_cuda_tdsops module~m_cuda_backend->module~m_cuda_tdsops module~m_cuda_exec_dist m_cuda_exec_dist module~m_cuda_backend->module~m_cuda_exec_dist module~m_cuda_poisson_fft->module~m_tdsops module~m_cuda_poisson_fft->module~m_poisson_fft module~m_cuda_tdsops->module~m_tdsops module~m_exec_thom m_exec_thom module~m_exec_thom->module~m_tdsops module~m_omp_backend m_omp_backend module~m_omp_backend->module~m_tdsops module~m_omp_backend->module~m_base_backend module~m_omp_exec_dist m_omp_exec_dist module~m_omp_backend->module~m_omp_exec_dist module~m_omp_exec_dist->module~m_tdsops module~m_omp_poisson_fft m_omp_poisson_fft module~m_omp_poisson_fft->module~m_tdsops module~m_omp_poisson_fft->module~m_poisson_fft module~m_poisson_fft->module~m_tdsops module~m_solver m_solver module~m_solver->module~m_tdsops module~m_solver->module~m_base_backend module~m_vector_calculus m_vector_calculus module~m_solver->module~m_vector_calculus module~m_time_integrator m_time_integrator module~m_solver->module~m_time_integrator module~m_vector_calculus->module~m_tdsops module~m_vector_calculus->module~m_base_backend module~m_base_case m_base_case module~m_base_case->module~m_base_backend module~m_base_case->module~m_solver module~m_case_channel m_case_channel module~m_case_channel->module~m_base_backend module~m_case_channel->module~m_solver module~m_case_channel->module~m_base_case module~m_case_generic m_case_generic module~m_case_generic->module~m_base_backend module~m_case_generic->module~m_solver module~m_case_generic->module~m_base_case module~m_case_tgv m_case_tgv module~m_case_tgv->module~m_base_backend module~m_case_tgv->module~m_solver module~m_case_tgv->module~m_base_case module~m_cuda_exec_dist->module~m_cuda_tdsops module~m_cuda_exec_thom m_cuda_exec_thom module~m_cuda_exec_thom->module~m_cuda_tdsops module~m_time_integrator->module~m_base_backend proc~init_omp_poisson_fft m_omp_backend::omp_backend_t%init_omp_poisson_fft proc~init_omp_poisson_fft->module~m_omp_poisson_fft program~xcompact xcompact program~xcompact->module~m_base_backend program~xcompact->module~m_cuda_backend program~xcompact->module~m_omp_backend program~xcompact->module~m_base_case program~xcompact->module~m_case_channel program~xcompact->module~m_case_generic program~xcompact->module~m_case_tgv

Interfaces

public interface tdsops_t

  • public function tdsops_init(n_tds, delta, operation, scheme, bc_start, bc_end, stretch, stretch_correct, n_halo, from_to, sym, c_nu, nu0_nu) result(tdsops)

    Constructor function for the tdsops_t class.

    'n_tds', 'delta', 'operation', 'scheme', 'bc_start', and 'bc_end' are necessary arguments. The remaining arguments are optional.

    'stretch' is for obtaining the correct derivations in a stretched mesh 'stretch_correct' is for correcting the second derivative with the first

    'from_to' is necessary for interpolation and staggared derivative, and it can be 'v2p' or 'p2v'. If the specific region the instance is operating is not a boundary region, then 'bc_start' and 'bc_end' are BC_HALO.

    'sym' is relevant when the BC is free-slip. If sym is .true. then it means the field we operate on is assumed to be an even function (symmetric, cos type) accross the boundary. If it is .false. it means the field is assumed to be an odd function (anti-symmetric, sin type).

    'c_nu', 'nu0_nu' are relevant when operation is second order derivative and scheme is compact6-hyperviscous.

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: n_tds

    Tridiagonal system size

    real(kind=dp), intent(in) :: delta

    Grid spacing

    character(len=*), intent(in) :: operation
    character(len=*), intent(in) :: scheme
    integer, intent(in) :: bc_start

    Boundary Cond.

    integer, intent(in) :: bc_end

    Boundary Cond.

    real(kind=dp), intent(in), optional :: stretch(:)

    Stretching coefficients

    real(kind=dp), intent(in), optional :: stretch_correct(:)

    Stretch correction

    integer, intent(in), optional :: n_halo

    Number of halo cells

    character(len=*), intent(in), optional :: from_to

    'v2p' or 'p2v'

    logical, intent(in), optional :: sym

    (==npaire), only for Neumann BCs

    real(kind=dp), intent(in), optional :: c_nu

    params for hypervisc.

    real(kind=dp), intent(in), optional :: nu0_nu

    params for hypervisc.

    Return Value type(tdsops_t)

    return value of the function


Derived Types

type, public ::  tdsops_t

Tridiagonal Solver Operators class.

Read more…

Components

Type Visibility Attributes Name Initial
real(kind=dp), public, allocatable, dimension(:) :: dist_fw

fw/bw phase back subs. the auxiliary factors

real(kind=dp), public, allocatable, dimension(:) :: dist_bw

fw/bw phase back subs. the auxiliary factors

real(kind=dp), public, allocatable, dimension(:) :: dist_sa

fw/bw phase back subs. the auxiliary factors

real(kind=dp), public, allocatable, dimension(:) :: dist_sc

fw/bw phase back subs. the auxiliary factors

real(kind=dp), public, allocatable, dimension(:) :: dist_af

fw/bw phase back subs. the auxiliary factors

real(kind=dp), public, allocatable, dimension(:) :: thom_f
real(kind=dp), public, allocatable, dimension(:) :: thom_s
real(kind=dp), public, allocatable, dimension(:) :: thom_w
real(kind=dp), public, allocatable, dimension(:) :: thom_p
real(kind=dp), public, allocatable :: stretch(:)
real(kind=dp), public, allocatable :: stretch_correct(:)
real(kind=dp), public, allocatable :: coeffs(:)
real(kind=dp), public, allocatable :: coeffs_s(:,:)
real(kind=dp), public, allocatable :: coeffs_e(:,:)
real(kind=dp), public :: alpha

Compact scheme coeffs

real(kind=dp), public :: a

Compact scheme coeffs

real(kind=dp), public :: b

Compact scheme coeffs

real(kind=dp), public :: c = 0._dp

Compact scheme coeffs

real(kind=dp), public :: d = 0._dp

Compact scheme coeffs

logical, public :: periodic
integer, public :: n_tds

Tridiagonal system size

integer, public :: n_rhs

Right-hand-side builder size

integer, public :: move = 0

move between vertices and cell centres

integer, public :: n_halo

number of halo points

Constructor

public function tdsops_init (n_tds, delta, operation, scheme, bc_start, bc_end, stretch, stretch_correct, n_halo, from_to, sym, c_nu, nu0_nu)

Constructor function for the tdsops_t class.

Read more…

Type-Bound Procedures

procedure, public :: stagder_1st
procedure, public :: interpl_mid
procedure, public :: deriv_2nd
procedure, public :: deriv_1st
procedure, public :: preprocess_thom
procedure, public :: preprocess_dist

type, public ::  dirps_t

Directional tridiagonal solver container.

Read more…

Components

Type Visibility Attributes Name Initial
class(tdsops_t), public, allocatable :: der1st
class(tdsops_t), public, allocatable :: der1st_sym
class(tdsops_t), public, allocatable :: der2nd
class(tdsops_t), public, allocatable :: der2nd_sym
class(tdsops_t), public, allocatable :: stagder_v2p
class(tdsops_t), public, allocatable :: stagder_p2v
class(tdsops_t), public, allocatable :: interpl_v2p
class(tdsops_t), public, allocatable :: interpl_p2v
integer, public :: dir

Functions

public function tdsops_init(n_tds, delta, operation, scheme, bc_start, bc_end, stretch, stretch_correct, n_halo, from_to, sym, c_nu, nu0_nu) result(tdsops)

Constructor function for the tdsops_t class.

Read more…

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: n_tds

Tridiagonal system size

real(kind=dp), intent(in) :: delta

Grid spacing

character(len=*), intent(in) :: operation
character(len=*), intent(in) :: scheme
integer, intent(in) :: bc_start

Boundary Cond.

integer, intent(in) :: bc_end

Boundary Cond.

real(kind=dp), intent(in), optional :: stretch(:)

Stretching coefficients

real(kind=dp), intent(in), optional :: stretch_correct(:)

Stretch correction

integer, intent(in), optional :: n_halo

Number of halo cells

character(len=*), intent(in), optional :: from_to

'v2p' or 'p2v'

logical, intent(in), optional :: sym

(==npaire), only for Neumann BCs

real(kind=dp), intent(in), optional :: c_nu

params for hypervisc.

real(kind=dp), intent(in), optional :: nu0_nu

params for hypervisc.

Return Value type(tdsops_t)

return value of the function


Subroutines

public subroutine deriv_1st(self, delta, scheme, bc_start, bc_end, sym)

Arguments

Type IntentOptional Attributes Name
class(tdsops_t), intent(inout) :: self
real(kind=dp), intent(in) :: delta
character(len=*), intent(in) :: scheme
integer, intent(in) :: bc_start
integer, intent(in) :: bc_end
logical, intent(in), optional :: sym

public subroutine deriv_2nd(self, delta, scheme, bc_start, bc_end, sym, c_nu, nu0_nu)

Arguments

Type IntentOptional Attributes Name
class(tdsops_t), intent(inout) :: self
real(kind=dp), intent(in) :: delta
character(len=*), intent(in) :: scheme
integer, intent(in) :: bc_start
integer, intent(in) :: bc_end
logical, intent(in), optional :: sym
real(kind=dp), intent(in), optional :: c_nu
real(kind=dp), intent(in), optional :: nu0_nu

public subroutine interpl_mid(self, scheme, from_to, bc_start, bc_end, sym)

Arguments

Type IntentOptional Attributes Name
class(tdsops_t), intent(inout) :: self
character(len=*), intent(in) :: scheme
character(len=*), intent(in) :: from_to
integer, intent(in) :: bc_start
integer, intent(in) :: bc_end
logical, intent(in), optional :: sym

public subroutine stagder_1st(self, delta, scheme, from_to, bc_start, bc_end, sym)

Arguments

Type IntentOptional Attributes Name
class(tdsops_t), intent(inout) :: self
real(kind=dp), intent(in) :: delta
character(len=*), intent(in) :: scheme
character(len=*), intent(in) :: from_to
integer, intent(in) :: bc_start
integer, intent(in) :: bc_end
logical, intent(in), optional :: sym

public subroutine preprocess_dist(self, dist_b)

Arguments

Type IntentOptional Attributes Name
class(tdsops_t), intent(inout) :: self
real(kind=dp), intent(in), dimension(:) :: dist_b

public subroutine preprocess_thom(self, b)

Arguments

Type IntentOptional Attributes Name
class(tdsops_t), intent(inout) :: self
real(kind=dp), intent(in), dimension(:) :: b