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!


Uses

  • module~~ply_sampling_module~~UsesGraph module~ply_sampling_module ply_sampling_module module~aotus_module aotus_module module~ply_sampling_module->module~aotus_module module~tem_tracking_module tem_tracking_module module~ply_sampling_module->module~tem_tracking_module module~tem_subtree_module tem_subTree_module module~ply_sampling_module->module~tem_subtree_module module~env_module env_module module~ply_sampling_module->module~env_module module~tem_varsys_module tem_varSys_module module~ply_sampling_module->module~tem_varsys_module module~tem_bc_prop_module tem_bc_prop_module module~ply_sampling_module->module~tem_bc_prop_module module~ply_poly_transformation_module ply_poly_transformation_module module~ply_sampling_module->module~ply_poly_transformation_module module~tem_logging_module tem_logging_module module~ply_sampling_module->module~tem_logging_module module~tem_refining_module tem_refining_module module~ply_sampling_module->module~tem_refining_module module~aot_table_module aot_table_module module~ply_sampling_module->module~aot_table_module module~tem_subtree_type_module tem_subTree_type_module module~ply_sampling_module->module~tem_subtree_type_module mpi mpi module~ply_sampling_module->mpi module~tem_aux_module tem_aux_module module~ply_sampling_module->module~tem_aux_module module~tem_time_module tem_time_module module~ply_sampling_module->module~tem_time_module module~ply_modg_basis_module ply_modg_basis_module module~ply_sampling_module->module~ply_modg_basis_module iso_c_binding iso_c_binding module~ply_sampling_module->iso_c_binding module~tem_topology_module tem_topology_module module~ply_sampling_module->module~tem_topology_module module~ply_sampling_adaptive_module ply_sampling_adaptive_module module~ply_sampling_module->module~ply_sampling_adaptive_module module~ply_dof_module ply_dof_module module~ply_sampling_module->module~ply_dof_module module~treelmesh_module treelmesh_module module~ply_sampling_module->module~treelmesh_module module~tem_tools_module tem_tools_module module~ply_sampling_module->module~tem_tools_module module~ply_poly_transformation_module->module~env_module module~ply_poly_transformation_module->module~treelmesh_module module~ply_modg_basis_module->module~env_module module~ply_modg_basis_module->module~ply_dof_module module~ply_space_integration_module ply_space_integration_module module~ply_modg_basis_module->module~ply_space_integration_module module~ply_sampling_adaptive_module->module~aotus_module module~ply_sampling_adaptive_module->module~tem_tracking_module module~ply_sampling_adaptive_module->module~tem_subtree_module module~ply_sampling_adaptive_module->module~env_module module~ply_sampling_adaptive_module->module~tem_varsys_module module~ply_sampling_adaptive_module->module~tem_bc_prop_module module~ply_sampling_adaptive_module->module~tem_logging_module module~ply_sampling_adaptive_module->module~tem_refining_module module~ply_sampling_adaptive_module->module~tem_subtree_type_module module~ply_sampling_adaptive_module->mpi module~ply_sampling_adaptive_module->module~tem_aux_module module~ply_sampling_adaptive_module->module~tem_time_module module~ply_sampling_adaptive_module->iso_c_binding module~ply_sampling_adaptive_module->module~tem_topology_module module~ply_sampling_adaptive_module->module~treelmesh_module module~ply_sampling_adaptive_module->module~tem_tools_module module~ply_sampling_varsys_module ply_sampling_varsys_module module~ply_sampling_adaptive_module->module~ply_sampling_varsys_module module~ply_filter_element_module ply_filter_element_module module~ply_sampling_adaptive_module->module~ply_filter_element_module module~ply_split_element_module ply_split_element_module module~ply_sampling_adaptive_module->module~ply_split_element_module module~ply_dof_module->module~env_module module~ply_sampling_varsys_module->module~tem_tracking_module module~ply_sampling_varsys_module->module~env_module module~ply_sampling_varsys_module->module~tem_varsys_module module~ply_sampling_varsys_module->module~tem_time_module module~ply_sampling_varsys_module->module~tem_topology_module module~ply_sampling_varsys_module->module~treelmesh_module module~ply_filter_element_module->module~aotus_module module~ply_filter_element_module->module~env_module module~ply_filter_element_module->module~tem_logging_module module~ply_filter_element_module->module~aot_table_module module~ply_filter_element_module->module~tem_aux_module module~ply_filter_element_module->module~tem_tools_module module~aot_err_module aot_err_module module~ply_filter_element_module->module~aot_err_module module~ply_space_integration_module->module~env_module module~tem_param_module tem_param_module module~ply_space_integration_module->module~tem_param_module module~ply_split_element_module->module~env_module module~ply_split_element_module->module~ply_modg_basis_module module~ply_split_legendre_module ply_split_legendre_module module~ply_split_element_module->module~ply_split_legendre_module module~ply_split_legendre_module->module~env_module

Used by

  • module~~ply_sampling_module~~UsedByGraph module~ply_sampling_module ply_sampling_module module~ply_sampled_tracking_module ply_sampled_tracking_module module~ply_sampled_tracking_module->module~ply_sampling_module module~atl_program_module atl_program_module module~atl_program_module->module~ply_sampled_tracking_module module~atl_solver_param_module atl_solver_param_module module~atl_program_module->module~atl_solver_param_module module~atl_initialize_module atl_initialize_module module~atl_program_module->module~atl_initialize_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_program_module program~atl_harvesting->module~atl_solver_param_module program~atl_harvesting->module~atl_initialize_module module~atl_initialize_module->module~ply_sampled_tracking_module module~atl_initialize_module->module~atl_solver_param_module module~atl_precice_module atl_precice_module module~atl_initialize_module->module~atl_precice_module program~ateles ateles program~ateles->module~atl_program_module program~ateles->module~atl_solver_param_module module~atl_precice_module->module~atl_solver_param_module

Contents


Derived Types

type, public :: ply_sampling_type

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

Components

TypeVisibilityAttributesNameInitial
integer, private :: max_nlevels =0

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

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

Method to use for the sampling.

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

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

real(kind=rk), private :: 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, private :: adaptiveDofReduction

Indicator for the limitation of memory consumption.

integer, private :: 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

TypeVisibilityAttributesNameInitial
real(kind=rk), private, 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

TypeIntentOptionalAttributesName
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

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

Needs to be matching the variable definition in the variable system.

integer, intent(in) :: lvl_degree(:)

Maximal polynomial degree for each level.

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

Polynomial space for each variable.

Needs to be matching the variable definition in the variable system.

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

TypeIntentOptionalAttributesName
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

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

Linearized array dimension: (nComponents of resulting variable) x (nDegrees of freedom) x (nElems) Access: (iElem-1)fun%nComponentsnDofs + (iDof-1)*fun%nComponents + iComp