ply_sampling_module Module

This module provides the means to sample polynomial data to break it down into voxels for visualization.

Not to be confused with the oversample module!



Derived Types

type, public ::  ply_sampling_type

This is the data type providing the definitions for the sampling.

Components

Type Visibility Attributes Name Initial
integer, public :: max_nlevels = 0

Maximal number of levels by which any mesh element should be refined.

Read more…
character(len=labelLen), public :: method

Method to use for the sampling.

type(ply_sampling_adaptive_type), public :: adaptive
real(kind=rk), public :: eps_osci

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

real(kind=rk), public :: dofReducFactor

Factor to Reduce dofs for every sampling level. Can be used to avoid too drastic increase of memory consumption. For adaptive subsampling only.

logical, public :: adaptiveDofReduction

Indicator for the limitation of memory consumption.

integer, public :: AbsUpperBoundLevel

Absolute upper bound level to refine to.

type, private ::  vdata_type

Private data type to describe variables with varying polynomial representation from element to element for each variable.

type, private ::  capsule_array_type

Required to make use of c_loc and accessing an array.

Components

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

Subroutines

public subroutine ply_sampling_load(me, conf, parent)

This subroutine reads the sampling configuration from the Lua script provided in conf and fills the sampling data in 'me' accordingly.

Read more…

Arguments

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

Sampling definition to load.

type(flu_State), intent(in) :: conf

Configuration to read the sampling settings from.

integer, intent(in), optional :: parent

Parent table in which to look for the sampling settings.

public subroutine ply_sample_data(me, orig_mesh, orig_bcs, varsys, var_degree, lvl_degree, var_space, ndims, trackInst, trackConfig, time, new_mesh, resvars)

Sampling polynomial data from a given array and mesh to a new mesh with a new data array, where just a single degree of freedom per element is used.

Arguments

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

A ply_sampling_type to describe the sampling method.

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

The original mesh to be refined.

type(tem_BC_prop_type), intent(in) :: orig_bcs

Boundary conditions for the original mesh.

type(tem_varSys_type), intent(in) :: varsys
integer, intent(in) :: var_degree(:)

Maximal polynomial degree for each variable.

Read more…
integer, intent(in) :: lvl_degree(:)

Maximal polynomial degree for each level.

integer, intent(in) :: var_space(:)

Polynomial space for each variable.

Read more…
integer, intent(in) :: ndims

Number of dimensions in the polynomial representation.

type(tem_tracking_instance_type), intent(in) :: trackInst
type(tem_tracking_config_type), intent(in) :: trackConfig
type(tem_time_type), intent(in) :: time
type(treelmesh_type), intent(out) :: new_mesh

The new mesh with the refined elements.

type(tem_varSys_type), intent(out) :: resvars

Resulting system of variables describing the data in the arrays of subsampled elements.

public subroutine ply_sampling_free_methodData(fun)

Free previously allocated methodData of variable.

Read more…

Arguments

Type IntentOptional Attributes Name
class(tem_varSys_op_type), intent(inout) :: fun

Description of the method to free the data for.

private subroutine get_sampled_element(fun, varSys, elempos, time, tree, n, nDofs, res)

Get sampled data.

Read more…

Arguments

Type IntentOptional Attributes Name
class(tem_varSys_op_type), intent(in) :: fun

Description of the method to obtain the variables, here some preset values might be stored, like the space time function to use or the required variables.

type(tem_varSys_type), intent(in) :: varSys

The variable system to obtain the variable from.

integer, intent(in) :: elempos(:)

TreeID of the element to get the variable for.

type(tem_time_type), intent(in) :: time

Point in time at which to evaluate the variable.

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

global treelm mesh info

integer, intent(in) :: n

Number of elements to obtain for this variable (vectorized access).

integer, intent(in) :: nDofs

Number of degrees of freedom within an element.

real(kind=rk), intent(out) :: res(:)

Resulting values for the requested variable.

Read more…