ply_filter_element_module Module

This module provides methods to filter polynomial representation in elements based on their shape.

The main goal of this filtering is to smooth out Gibbs oscillations while maintaining the strong gradients at discontinuities.


Uses

  • module~~ply_filter_element_module~~UsesGraph module~ply_filter_element_module ply_filter_element_module aot_err_module aot_err_module module~ply_filter_element_module->aot_err_module aot_table_module aot_table_module module~ply_filter_element_module->aot_table_module aotus_module aotus_module module~ply_filter_element_module->aotus_module env_module env_module module~ply_filter_element_module->env_module tem_aux_module tem_aux_module module~ply_filter_element_module->tem_aux_module tem_logging_module tem_logging_module module~ply_filter_element_module->tem_logging_module tem_tools_module tem_tools_module module~ply_filter_element_module->tem_tools_module

Used by

  • module~~ply_filter_element_module~~UsedByGraph module~ply_filter_element_module ply_filter_element_module module~ply_sampling_adaptive_module ply_sampling_adaptive_module module~ply_sampling_adaptive_module->module~ply_filter_element_module

Variables

Type Visibility Attributes Name Initial
integer, private, parameter :: filter_strat_none = 0
integer, private, parameter :: filter_strat_oddfract = 1

Abstract Interfaces

abstract interface

  • public subroutine ply_filter_element(me, element_degree, element_data)

    Filter the polynomial data in a given element.

    Arguments

    Type IntentOptional Attributes Name
    class(ply_filter_element_type), intent(in) :: me

    Parameters of the filter.

    integer, intent(in) :: element_degree

    Polynomial degree in the parent element.

    real(kind=rk), intent(inout) :: element_data(:,:)

    Polynomial data in element. The first index describes the degrees of freedom. The second index refers to the elements to filter.


Derived Types

type, public ::  ply_filter_element_type

Paramaters describing the filtering to apply to elemental polynomial data.

Components

Type Visibility Attributes Name Initial
integer, public :: strategy = filter_strat_none

Filter strategy to use.

integer, public :: max_order

Maximal order for exponential spectral filtering to use where little filtering is to be done.

integer, public :: min_order

Minimal order for exponential spectral filtering to use.

integer, public :: fract_exponent

Exponent to use for the fraction.

procedure(ply_filter_element), public, pointer :: filter1D => NULL()

Function pointer for 1D filtering

procedure(ply_filter_element), public, pointer :: filter2D => NULL()

Function pointer for 2D filtering

procedure(ply_filter_element), public, pointer :: filter3D => NULL()

Function pointer for 3D filtering


Subroutines

public subroutine ply_filter_element_load(me, conf, parent)

Loading parameters for the filtering from the configuration script. This needs to be performed before any call of the actual transformation ply_split_element_1D.

Read more…

Arguments

Type IntentOptional Attributes Name
type(ply_filter_element_type), intent(out) :: me

Data structure that holds the filter parameters.

type(flu_State) :: conf

Lua script to get the filter parameters from.

integer, intent(in), optional :: parent

Table handle to a possible parent, that contains the filter table to load.

public subroutine ply_filter_element_oddfract(me, nDims, inLen, element_data, filtered_data)

Filter a polynomial representation in elements in one dimension according to its odd mode fraction.

Read more…

Arguments

Type IntentOptional Attributes Name
class(ply_filter_element_type), intent(in) :: me

Filter parameters.

integer, intent(in) :: nDims

Number of dimensions of the polynomial data.

integer, intent(in) :: inLen(nDims)

Number degrees of freedom for each direction in element_data.

Read more…
real(kind=rk), intent(in) :: element_data(:,:)

Polynomial representation in the elements.

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

The filtered polynomial modes.

Read more…

private subroutine ply_filter_oddfract_1D(me, element_degree, element_data)

Filter one-dimensional elements of degree element_degree.

Arguments

Type IntentOptional Attributes Name
class(ply_filter_element_type), intent(in) :: me

Filter parameters.

integer, intent(in) :: element_degree

Polynomial degree in the parent element.

real(kind=rk), intent(inout) :: element_data(:,:)

Polynomial data in the parent element. The first index describes the degrees of freedom. The second index refers to the elements to split.

private subroutine ply_filter_oddfract_2D(me, element_degree, element_data)

Filter two-dimensional elements of degree element_degree.

Arguments

Type IntentOptional Attributes Name
class(ply_filter_element_type), intent(in) :: me

Filter parameters.

integer, intent(in) :: element_degree

Polynomial degree in the parent element.

real(kind=rk), intent(inout) :: element_data(:,:)

Polynomial data in the parent element. The first index describes the degrees of freedom. The second index refers to the elements to split.

private subroutine ply_filter_oddfract_3D(me, element_degree, element_data)

Filter three-dimensional elements of degree element_degree.

Arguments

Type IntentOptional Attributes Name
class(ply_filter_element_type), intent(in) :: me

Filter parameters.

integer, intent(in) :: element_degree

Polynomial degree in the parent element.

real(kind=rk), intent(inout) :: element_data(:,:)

Polynomial data in the parent element. The first index describes the degrees of freedom. The second index refers to the elements to split.