ply_legFpt_module Module

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


Uses

  • module~~ply_legfpt_module~~UsesGraph module~ply_legfpt_module ply_legFpt_module module~tem_compileconf_module tem_compileconf_module module~ply_legfpt_module->module~tem_compileconf_module module~env_module env_module module~ply_legfpt_module->module~env_module fftw_wrap fftw_wrap module~ply_legfpt_module->fftw_wrap module~ply_fpt_header_module ply_fpt_header_module module~ply_legfpt_module->module~ply_fpt_header_module module~ply_polybaseexc_module ply_polyBaseExc_module module~ply_legfpt_module->module~ply_polybaseexc_module iso_c_binding iso_c_binding module~ply_legfpt_module->iso_c_binding module~ply_fpt_header_module->module~tem_compileconf_module module~ply_fpt_header_module->module~env_module module~tem_logging_module tem_logging_module module~ply_fpt_header_module->module~tem_logging_module module~tem_tools_module tem_tools_module module~ply_fpt_header_module->module~tem_tools_module module~aot_out_module aot_out_module module~ply_fpt_header_module->module~aot_out_module module~ply_nodes_header_module ply_nodes_header_module module~ply_fpt_header_module->module~ply_nodes_header_module module~aotus_module aotus_module module~ply_fpt_header_module->module~aotus_module module~tem_float_module tem_float_module module~ply_fpt_header_module->module~tem_float_module module~tem_aux_module tem_aux_module module~ply_fpt_header_module->module~tem_aux_module module~ply_polybaseexc_module->module~env_module module~ply_polybaseexc_module->fftw_wrap module~ply_polybaseexc_module->module~ply_fpt_header_module module~ply_polybaseexc_module->iso_c_binding module~ply_polybaseexc_module->module~tem_logging_module module~tem_gamma_module tem_gamma_module module~ply_polybaseexc_module->module~tem_gamma_module module~ply_polybaseexc_module->module~tem_float_module module~tem_param_module tem_param_module module~ply_polybaseexc_module->module~tem_param_module module~ply_nodes_header_module->module~env_module

Used by

  • module~~ply_legfpt_module~~UsedByGraph module~ply_legfpt_module ply_legFpt_module module~ply_poly_project_module ply_poly_project_module module~ply_poly_project_module->module~ply_legfpt_module module~ply_legfpt_2d_module ply_legFpt_2D_module module~ply_poly_project_module->module~ply_legfpt_2d_module module~ply_legfpt_3d_module ply_legFpt_3D_module module~ply_poly_project_module->module~ply_legfpt_3d_module module~ply_legfpt_2d_module->module~ply_legfpt_module module~ply_legfpt_3d_module->module~ply_legfpt_module module~sdr_proto2treelm_module sdr_proto2treelm_module module~sdr_proto2treelm_module->module~ply_poly_project_module module~ply_oversample_module ply_oversample_module module~sdr_proto2treelm_module->module~ply_oversample_module module~ply_oversample_module->module~ply_poly_project_module program~seeder seeder program~seeder->module~sdr_proto2treelm_module

Contents


Interfaces

public interface assignment(=)

  • private subroutine Copy_fpt(left, right)

    Arguments

    TypeIntentOptionalAttributesName
    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

    TypeIntentOptionalAttributesName
    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

    TypeIntentOptionalAttributesName
    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

TypeVisibilityAttributesNameInitial
type(ply_trafo_params_type), private :: legToChebParams

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

type(ply_trafo_params_type), private :: chebToLegParams

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

type(C_PTR), private :: planChebToPnt

FFTW plan for DCT from Chebyshev coefficients to point values.

type(C_PTR), private :: planPntToCheb

FFTW plan for DCT from point values to Chebyshev coefficients.

logical, private :: use_lobatto_points

Flag whether to use Lobatto points (include boundary points)

procedure(ply_fptm2n), private, pointer:: legtopnt=> NULL()
procedure(ply_fptn2m), private, 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

TypeIntentOptionalAttributesName
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.

Configuration to how much time to spend on finding an optimal FFT implementation in the FFTW. See: http://www.fftw.org/doc/Planner-Flags.html#Planner-Flags

Defaults to FFTW_MEASURE.

private subroutine Copy_fpt(left, right)

Arguments

TypeIntentOptionalAttributesName
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

TypeIntentOptionalAttributesName
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

TypeIntentOptionalAttributesName
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

TypeIntentOptionalAttributesName
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

TypeIntentOptionalAttributesName
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

TypeIntentOptionalAttributesName
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

TypeIntentOptionalAttributesName
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

TypeIntentOptionalAttributesName
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

TypeIntentOptionalAttributesName
class(ply_legFpt_type), intent(inout) :: fpt
real(kind=rk), intent(inout) :: pntVal(:)
real(kind=rk), intent(inout) :: legCoeffs(:)
integer, intent(in) :: nIndeps