ply_legFpt_module Module

Module providing datatypes and routines for a fast transformation of Legendre expansion to point values. \author{Jens Zudrop}



Interfaces

public interface assignment(=)

  • private subroutine Copy_fpt(left, right)

    Arguments

    Type IntentOptional Attributes Name
    type(ply_legFpt_type), intent(out) :: left

    fpt to copy to

    type(ply_legFpt_type), intent(in) :: right

    fpt to copy from

interface

  • private subroutine ply_fptm2n(fpt, legCoeffs, pntVal, nIndeps)

    Arguments

    Type IntentOptional Attributes Name
    class(ply_legFpt_type), intent(inout) :: fpt
    real(kind=rk), intent(inout) :: legCoeffs(:)
    real(kind=rk), intent(inout) :: pntVal(:)
    integer, intent(in) :: nIndeps

interface

  • private subroutine ply_fptn2m(fpt, pntVal, legCoeffs, nIndeps)

    Arguments

    Type IntentOptional Attributes Name
    class(ply_legFpt_type), intent(inout) :: fpt
    real(kind=rk), intent(inout) :: pntVal(:)
    real(kind=rk), intent(inout) :: legCoeffs(:)
    integer, intent(in) :: nIndeps

Derived Types

type, public ::  ply_legFpt_type

Datatype for parameters of the FPT used for 1d, 2d and 3d.

Read more…

Components

Type Visibility Attributes Name Initial
type(ply_trafo_params_type), public :: legToChebParams

FPT params for the fast base exchange from Legendre to Chebyshev expansion.

type(ply_trafo_params_type), public :: chebToLegParams

FPT params for the fast base exchange from Chebyshev to Legendre expansion.

type(C_PTR), public :: planChebToPnt

FFTW plan for DCT from Chebyshev coefficients to point values.

type(C_PTR), public :: planPntToCheb

FFTW plan for DCT from point values to Chebyshev coefficients.

logical, public :: use_lobatto_points

Flag whether to use Lobatto points (include boundary points)

procedure(ply_fptm2n), public, pointer :: legtopnt => NULL()
procedure(ply_fptn2m), public, pointer :: pnttoleg => NULL()

Subroutines

public subroutine ply_init_legFpt(maxPolyDegree, nIndeps, fpt, header, fft_flags)

Subroutine to initialize the fast polynomial transformation for Legendre expansion.

Read more…

Arguments

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

Maximal polynomial degree for the transformation.

integer, intent(in) :: nIndeps

Number of independent values that can be computed simultaneously.

type(ply_legFpt_type), intent(inout) :: fpt

The Fast Polynomial Transformation setting to initialize.

type(ply_fpt_header_type), intent(in) :: header

Configuration settings for the projection.

integer, intent(in), optional :: fft_flags

Planning flags for the FFT.

Read more…

private subroutine Copy_fpt(left, right)

Arguments

Type IntentOptional Attributes Name
type(ply_legFpt_type), intent(out) :: left

fpt to copy to

type(ply_legFpt_type), intent(in) :: right

fpt to copy from

private subroutine ply_legToPnt_single(fpt, legCoeffs, pntVal, nIndeps)

Subroutine to transform Legendre expansion to point values at Chebyshev nodes.

Arguments

Type IntentOptional Attributes Name
class(ply_legFpt_type), intent(inout) :: fpt
real(kind=rk), intent(inout) :: legCoeffs(:)
real(kind=rk), intent(inout) :: pntVal(:)
integer, intent(in) :: nIndeps

private subroutine ply_legToPnt_vec(fpt, legCoeffs, pntVal, nIndeps)

Vectorizing subroutine to transform Legendre expansion to point values at Chebyshev nodes.

Arguments

Type IntentOptional Attributes Name
class(ply_legFpt_type), intent(inout) :: fpt
real(kind=rk), intent(inout) :: legCoeffs(:)
real(kind=rk), intent(inout) :: pntVal(:)
integer, intent(in) :: nIndeps

private subroutine ply_legToPnt_lobatto_single(fpt, legCoeffs, pntVal, nIndeps)

Subroutine to transform Legendre expansion to point values at Chebyshev-Lobatto nodes.

Arguments

Type IntentOptional Attributes Name
class(ply_legFpt_type), intent(inout) :: fpt
real(kind=rk), intent(inout) :: legCoeffs(:)
real(kind=rk), intent(inout) :: pntVal(:)
integer, intent(in) :: nIndeps

private subroutine ply_legToPnt_lobatto_vec(fpt, legCoeffs, pntVal, nIndeps)

Vectorizing subroutine to transform Legendre expansion to point values at Chebyshev-Lobatto nodes.

Arguments

Type IntentOptional Attributes Name
class(ply_legFpt_type), intent(inout) :: fpt
real(kind=rk), intent(inout) :: legCoeffs(:)
real(kind=rk), intent(inout) :: pntVal(:)
integer, intent(in) :: nIndeps

private subroutine ply_pntToLeg_single(fpt, pntVal, legCoeffs, nIndeps)

Subroutine to transform point values at Chebyshev nodes to a Legendre expansion.

Arguments

Type IntentOptional Attributes Name
class(ply_legFpt_type), intent(inout) :: fpt
real(kind=rk), intent(inout) :: pntVal(:)
real(kind=rk), intent(inout) :: legCoeffs(:)
integer, intent(in) :: nIndeps

private subroutine ply_pntToLeg_vec(fpt, pntVal, legCoeffs, nIndeps)

Vectorizing subroutine to transform point values at Chebyshev nodes to a Legendre expansion.

Arguments

Type IntentOptional Attributes Name
class(ply_legFpt_type), intent(inout) :: fpt
real(kind=rk), intent(inout) :: pntVal(:)
real(kind=rk), intent(inout) :: legCoeffs(:)
integer, intent(in) :: nIndeps

private subroutine ply_pntToLeg_lobatto_single(fpt, pntVal, legCoeffs, nIndeps)

Subroutine to transform point values at Chebyshev-Lobatto nodes to a Legendre expansion.

Arguments

Type IntentOptional Attributes Name
class(ply_legFpt_type), intent(inout) :: fpt
real(kind=rk), intent(inout) :: pntVal(:)
real(kind=rk), intent(inout) :: legCoeffs(:)
integer, intent(in) :: nIndeps

private subroutine ply_pntToLeg_lobatto_vec(fpt, pntVal, legCoeffs, nIndeps)

Vectorizing subroutine to transform point values at Chebyshev-Lobatto nodes to a Legendre expansion.

Arguments

Type IntentOptional Attributes Name
class(ply_legFpt_type), intent(inout) :: fpt
real(kind=rk), intent(inout) :: pntVal(:)
real(kind=rk), intent(inout) :: legCoeffs(:)
integer, intent(in) :: nIndeps