ply_poly_transformation_module Module


Uses

  • module~~ply_poly_transformation_module~~UsesGraph module~ply_poly_transformation_module ply_poly_transformation_module env_module env_module module~ply_poly_transformation_module->env_module treelmesh_module treelmesh_module module~ply_poly_transformation_module->treelmesh_module

Used by

  • module~~ply_poly_transformation_module~~UsedByGraph module~ply_poly_transformation_module ply_poly_transformation_module module~ply_sampling_module ply_sampling_module module~ply_sampling_module->module~ply_poly_transformation_module module~ply_sampled_tracking_module ply_sampled_tracking_module module~ply_sampled_tracking_module->module~ply_sampling_module module~atl_initialize_module atl_initialize_module module~atl_initialize_module->module~ply_sampled_tracking_module module~atl_solver_param_module atl_solver_param_module module~atl_initialize_module->module~atl_solver_param_module module~atl_program_module atl_program_module module~atl_program_module->module~ply_sampled_tracking_module module~atl_program_module->module~atl_initialize_module module~atl_program_module->module~atl_solver_param_module module~atl_solver_param_module->module~ply_sampled_tracking_module program~atl_harvesting atl_harvesting program~atl_harvesting->module~ply_sampled_tracking_module program~atl_harvesting->module~atl_initialize_module program~atl_harvesting->module~atl_program_module program~atl_harvesting->module~atl_solver_param_module module~atl_precice_module atl_precice_module module~atl_precice_module->module~atl_solver_param_module program~ateles ateles program~ateles->module~atl_program_module program~ateles->module~atl_solver_param_module

Derived Types

type, public ::  ply_subsample_type

Components

Type Visibility Attributes Name Initial
logical, public :: isActive = .false.

Is subsampling active

integer, public :: sampling_lvl

The current sampling lvl.

integer, public :: caplevel = 20

Maximal Level down to which subsampling should be done.

integer, public :: minsub = 0

Minimal subsampling depth:

integer, public :: maxsub = 0

Maximal subsampling depth:

real(kind=rk), public :: eps_osci

Maximum allowed oscillation of the solution. For adaptive subsampling only.

real(kind=rk), public :: dofReducFactor

Factor for the reduction of the degrees of freedom in one subsampling step (per spatial direction).

logical, public :: adaptiveDofReduction

Indicator for limitation of total memory consumption

integer, public :: AbsUpperBoundLevel

Absolute upper bound level to refine to.

type, public ::  ply_array_type

Components

Type Visibility Attributes Name Initial
real(kind=rk), public, allocatable :: dat(:)

Functions

private function ply_alpha(mode) result(alpha)

Coefficients from the recursive formulation of legendre polynomials. L_n = alpha * x * L_n-1 + beta * L_n-2

Arguments

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

The current mode in the polynomial representation.

Return Value real(kind=rk)

Alpha coefficient from the recursive formulation of legendre polynomials.

private function ply_beta(mode) result(beta)

Coefficients from the recursive formulation of legendre polynomials. L_n = alpha * x * L_n-1 + beta * L_n-2

Arguments

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

The current mode in the polynomial representation.

Return Value real(kind=rk)

Beta coefficient from the recursive formulation of legendre polynomials.

private function ply_alpha_frac(denominator, numerator) result(alpha_frac)

Quotient of two alpha values.

Arguments

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

Denominator

integer, intent(in) :: numerator

Numerator

Return Value real(kind=rk)

The quotient of two alpha values.

private function ply_alpha_beta(denominator, numerator) result(alpha_beta)

Prodcut of alpha(numerator) * beta(denominator) / alpha(denominator)

Arguments

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

Denominator

integer, intent(in) :: numerator

Numerator

Return Value real(kind=rk)

The product of alpha(n) * beta(d) / alpha(d)


Subroutines

public subroutine ply_Poly_Transformation(subsamp, dofReduction, mesh, meshData, varDofs, varComps, ndims, refine_tree, new_refine_tree, newMeshData, newVarDofs)

Projection of polynomial data from parent elements to child elements. The projection is done by a direct transformation of the modal coeffiecients to another coordinate system with z=ax+b.

Arguments

Type IntentOptional Attributes Name
type(ply_subsample_type), intent(in) :: subsamp

Parameters for the subsampling

real(kind=rk), intent(in) :: dofReduction(:)

Factor for reduction of degrees of freedom.

type(treelmesh_type), intent(in) :: mesh

The mesh related to meshData.

type(ply_array_type), intent(in) :: meshData(:)

The data for subsampling.

integer, intent(in) :: varDofs(:)

The number of degrees of freedom for every variable.

integer, intent(in) :: varComps(:)

The number of components for every variable.

integer, intent(in) :: ndims

Number of dimensions in the polynomial representation.

logical, intent(in) :: refine_tree(:)

Logical array that marks elements for refinement of the previous sampling level.

logical, intent(in) :: new_refine_tree(:)

Logical array that marks elements for refinement.

type(ply_array_type), intent(out), allocatable :: newMeshData(:)

The subsampled data for new_refine_tree.

integer, intent(out), allocatable :: newVarDofs(:)

The number of dofs for the subsampled data.

private subroutine ply_subsampleData(mesh, meshData, nDofs, nChildDofs, nComponents, refine_tree, new_refine_tree, nDims, subsamp, newMeshData)

Arguments

Type IntentOptional Attributes Name
type(treelmesh_type), intent(in) :: mesh

The mesh for the data.

real(kind=rk), intent(in) :: meshData(:)

The data to subsample

integer, intent(in) :: nDofs

The number of degrees of freedom.

integer, intent(in) :: nChildDofs

The number of degrees of freedom for the child elements.

integer, intent(in) :: nComponents

Number of Components.

logical, intent(in) :: refine_tree(:)

Logical array that marks all elements for refinement for the previous sampling level.

logical, intent(in) :: new_refine_tree(:)

Logical array that marks all elements for refinement for the current sampling level.

integer, intent(in) :: nDims

The number of dimensions in the polynomial representation.

type(ply_subsample_type), intent(in) :: subsamp

Parameters for subsampling.

real(kind=rk), intent(out), allocatable :: newMeshData(:)

The subsampled Data.

private subroutine ply_projDataToChild(parentData, nParentDofs, nChildDofs, nComponents, nDimensions, nChilds, transform_matrix, childData)

Subroutine to project element data from a parent cell to its children.

Arguments

Type IntentOptional Attributes Name
real(kind=rk), intent(in) :: parentData(:)

The polynomial data for a single parent element.

integer, intent(in) :: nParentDofs

The number of dofs of the parent element.

integer, intent(in) :: nChildDofs

The total number of dofs for the child cells.

integer, intent(in) :: nComponents

The number of componentns for the given variable.

integer, intent(in) :: nDimensions

The number of dimensions.

integer, intent(in) :: nChilds

The number of child elements.

real(kind=rk), intent(in) :: transform_matrix(:,:)

The transformation matrix for the linear coordinate transformation.

real(kind=rk), intent(out), allocatable :: childData(:)

The new data representation for all child cell of the parent cell.

private subroutine ply_transform_matrix(max_modes, v)

Compute the transformation matrix for a projection to the left and right half-interval of Legendre polynomials for the given maximal number of modes.

Read more…

Arguments

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

The maximal number of modes to compute the transformation for.

Read more…
real(kind=rk), intent(out), allocatable :: v(:,:)

The transformation matrix.

Read more…