ply_fxt_header_module Module

The FXT method offers a transformation from Legendre modes to nodes by a fast multipole approach implemented in the FXTPACK library by Reiji Suda: R. Suda, "Fast Spherical Harmonic Transform Algorithm based on Generalized Fast Multiple Method", RIMS Kokyuroku vol 1606, pp. 18-29, Jun. 2008, RIMS, Kyoto University.

Besides the oversampling factor that can be used to increase the number points in the nodal representation to achieve an de-aliasing, there is only one other option to this method: The prec parameter configures the precision up to which the FXTPACK should compute the transformation. It defaults to the square root of the epsilon for the real kind. With double precision this would something around 1.4e-8.

This transformation utilizes the Gauss Legendre integration points in the nodal representation.

Thus, the configuration for a FXT projection takes the following form:

  projection = {
    kind = 'fxt',
    prec = 1.e-10
  }

Uses

  • module~~ply_fxt_header_module~~UsesGraph module~ply_fxt_header_module ply_fxt_header_module aot_out_module aot_out_module module~ply_fxt_header_module->aot_out_module aotus_module aotus_module module~ply_fxt_header_module->aotus_module env_module env_module module~ply_fxt_header_module->env_module module~ply_nodes_header_module ply_nodes_header_module module~ply_fxt_header_module->module~ply_nodes_header_module tem_aux_module tem_aux_module module~ply_fxt_header_module->tem_aux_module tem_float_module tem_float_module module~ply_fxt_header_module->tem_float_module tem_logging_module tem_logging_module module~ply_fxt_header_module->tem_logging_module module~ply_nodes_header_module->env_module

Used by

  • module~~ply_fxt_header_module~~UsedByGraph module~ply_fxt_header_module ply_fxt_header_module module~ply_fxt_module ply_fxt_module module~ply_fxt_module->module~ply_fxt_header_module module~ply_prj_header_module ply_prj_header_module module~ply_prj_header_module->module~ply_fxt_header_module module~ply_dynarray_project_module ply_dynarray_project_module module~ply_dynarray_project_module->module~ply_prj_header_module module~ply_poly_project_module ply_poly_project_module module~ply_poly_project_module->module~ply_fxt_module module~ply_poly_project_module->module~ply_prj_header_module program~ply_project_2d_fpt_lobattopoints_test ply_project_2d_fpt_lobattoPoints_test program~ply_project_2d_fpt_lobattopoints_test->module~ply_prj_header_module program~ply_project_2d_fpt_test ply_project_2d_fpt_test program~ply_project_2d_fpt_test->module~ply_prj_header_module program~ply_project_fpt_lobattopoints_test ply_project_fpt_lobattoPoints_test program~ply_project_fpt_lobattopoints_test->module~ply_prj_header_module program~ply_project_fpt_test ply_project_fpt_test program~ply_project_fpt_test->module~ply_prj_header_module program~test_fxtd_n2m2n test_fxtd_n2m2n program~test_fxtd_n2m2n->module~ply_fxt_module program~test_fxtd_n2m2n->module~ply_prj_header_module

Interfaces

public interface assignment(=)

public interface operator(==)

  • private pure function isEqual(left, right) result(equality)

    This function provides the test for equality of two projections.

    Two fxt header are considered to be equal, if their node_header, and the factor are equal.

    Arguments

    Type IntentOptional Attributes Name
    type(ply_fxt_header_type), intent(in) :: left

    projection to compare

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

    projection to compare against

    Return Value logical

    is equal??

public interface operator(/=)

  • private pure function isUnequal(left, right) result(unequality)

    This function provides the test for unequality of two projections.

    Two fxt header are considered to be unequal, if their node_header, or the factor are not equal.

    Arguments

    Type IntentOptional Attributes Name
    type(ply_fxt_header_type), intent(in) :: left

    projection to compare

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

    projection to compare against

    Return Value logical

    is unequal??

public interface operator(<)

  • private pure function isSmaller(left, right) result(small)

    This function provides a < comparison of two projections.

    Sorting of fxt header is given by node_header and by the factor.

    Arguments

    Type IntentOptional Attributes Name
    type(ply_fxt_header_type), intent(in) :: left

    projection to compare

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

    projection to compare against

    Return Value logical

    is smaller??

public interface operator(<=)

  • private pure function isSmallerOrEqual(left, right) result(small)

    This function provides a <= comparison of two projections.

    Sorting of fxt header is given by node_header, fxt_blocksize and last by factor.

    Arguments

    Type IntentOptional Attributes Name
    type(ply_fxt_header_type), intent(in) :: left

    projection to compare

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

    projection to compare against

    Return Value logical

    is smaller??

public interface operator(>)

  • private pure function isGreater(left, right) result(great)

    This function provides a > comparison of two projections.

    Sorting of fxt header is given by node_header, fxt_blocksize and last by factor.

    Arguments

    Type IntentOptional Attributes Name
    type(ply_fxt_header_type), intent(in) :: left

    projection to compare

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

    projection to compare against

    Return Value logical

    is greater??

public interface operator(>=)

  • private pure function isGreaterOrEqual(left, right) result(great)

    This function provides a >= comparison of two projections.

    Sorting of fxt header is given by node_header, fxt_blocksize and last by factor.

    Arguments

    Type IntentOptional Attributes Name
    type(ply_fxt_header_type), intent(in) :: left

    projection to compare

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

    projection to compare against

    Return Value logical

    is greater??


Derived Types

type, public ::  ply_fxt_header_type

Fxt projection header type, consisting of the node header which give information about the type and number of points for the projection

Components

Type Visibility Attributes Name Initial
type(ply_nodes_header_type), public :: nodes_header
real(kind=rk), public :: factor = 1.0
real(kind=rk), public :: prec = epsilon(1.0)

Functions

private pure function isEqual(left, right) result(equality)

This function provides the test for equality of two projections.

Read more…

Arguments

Type IntentOptional Attributes Name
type(ply_fxt_header_type), intent(in) :: left

projection to compare

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

projection to compare against

Return Value logical

is equal??

private pure function isUnequal(left, right) result(unequality)

This function provides the test for unequality of two projections.

Read more…

Arguments

Type IntentOptional Attributes Name
type(ply_fxt_header_type), intent(in) :: left

projection to compare

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

projection to compare against

Return Value logical

is unequal??

private pure function isSmaller(left, right) result(small)

This function provides a < comparison of two projections.

Read more…

Arguments

Type IntentOptional Attributes Name
type(ply_fxt_header_type), intent(in) :: left

projection to compare

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

projection to compare against

Return Value logical

is smaller??

private pure function isSmallerOrEqual(left, right) result(small)

This function provides a <= comparison of two projections.

Read more…

Arguments

Type IntentOptional Attributes Name
type(ply_fxt_header_type), intent(in) :: left

projection to compare

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

projection to compare against

Return Value logical

is smaller??

private pure function isGreater(left, right) result(great)

This function provides a > comparison of two projections.

Read more…

Arguments

Type IntentOptional Attributes Name
type(ply_fxt_header_type), intent(in) :: left

projection to compare

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

projection to compare against

Return Value logical

is greater??

private pure function isGreaterOrEqual(left, right) result(great)

This function provides a >= comparison of two projections.

Read more…

Arguments

Type IntentOptional Attributes Name
type(ply_fxt_header_type), intent(in) :: left

projection to compare

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

projection to compare against

Return Value logical

is greater??


Subroutines

public subroutine ply_fxt_header_load(me, conf, thandle)

Load settings to describe a projection method from a Lua table.

Read more…

Arguments

Type IntentOptional Attributes Name
type(ply_fxt_header_type), intent(out) :: me
type(flu_State) :: conf
integer, intent(in) :: thandle

public subroutine ply_fxt_header_out(me, conf)

Write FXT settings into a Lua table.

Arguments

Type IntentOptional Attributes Name
type(ply_fxt_header_type), intent(in) :: me
type(aot_out_type) :: conf

public subroutine ply_fxt_header_display(me)

Arguments

Type IntentOptional Attributes Name
type(ply_fxt_header_type), intent(in) :: me

private pure subroutine Copy_fxt_header(left, right)

Arguments

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

fpt to copy to

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

fpt to copy from