ply_sampling_varsys_module Module

Managing the variable system description for sampled data.


  • module~~ply_sampling_varsys_module~~UsesGraph module~ply_sampling_varsys_module ply_sampling_varsys_module module~tem_time_module tem_time_module module~ply_sampling_varsys_module->module~tem_time_module module~tem_topology_module tem_topology_module module~ply_sampling_varsys_module->module~tem_topology_module module~treelmesh_module treelmesh_module module~ply_sampling_varsys_module->module~treelmesh_module module~env_module env_module module~ply_sampling_varsys_module->module~env_module module~tem_varsys_module tem_varSys_module module~ply_sampling_varsys_module->module~tem_varsys_module module~tem_tracking_module tem_tracking_module module~ply_sampling_varsys_module->module~tem_tracking_module

Used by

  • module~~ply_sampling_varsys_module~~UsedByGraph module~ply_sampling_varsys_module ply_sampling_varsys_module module~ply_sampling_adaptive_module ply_sampling_adaptive_module module~ply_sampling_adaptive_module->module~ply_sampling_varsys_module module~ply_sampling_module ply_sampling_module module~ply_sampling_module->module~ply_sampling_adaptive_module module~ply_sampled_tracking_module ply_sampled_tracking_module module~ply_sampled_tracking_module->module~ply_sampling_module program~sdr_harvesting sdr_harvesting program~sdr_harvesting->module~ply_sampled_tracking_module module~sdr_hvs_config_module sdr_hvs_config_module module~sdr_hvs_config_module->module~ply_sampled_tracking_module


Derived Types

type, public :: ply_sampling_var_type

Small helping type to allow arrays of arrays for the variable data.


integer, private :: nDeviating
integer, private, allocatable:: degree(:)
integer, private, allocatable:: first(:)
real(kind=rk), private, pointer:: dat(:)
logical, private, allocatable:: deviates(:)


public subroutine ply_sampling_varsys_for_track(varsys, trackInst, mesh, nDims, lvl_degree, sample_varsys, var, time)

Create a variable system for the given tracking instance.


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

Variable system describing the access to the original data to sample.

type(tem_tracking_instance_type), intent(in) :: trackInst

The tracking object that should be sampled.

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

Original mesh describing the spatial organisation of the data to sample.

integer, intent(in) :: nDims

Dimensionality of the data to sample.

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

Maximal polynomial degree for each level.

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

Variable system for the sampled data.

type(ply_sampling_var_type), pointer:: var(:)

Extracted data for all the variables requested in the given tracking instance.

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

Point in time to get the data for.

public subroutine ply_sampling_var_allocate(var, nElems, datalen)

Allocate memory for a sampled variable.


type(ply_sampling_var_type), intent(inout) :: var

The variable to allocate the space for.

integer, intent(in) :: nElems

Number of elements the data lives in.

integer, intent(in) :: datalen

Size of the container to use for representation of the polynomial data across all elements.

public subroutine ply_sampling_var_move(source, destination)

Move the variable data from source to destination.

Read more…


type(ply_sampling_var_type), pointer:: source(:)

Variable data to move (and make accessible via destination).

Source itself will be null after moving.

type(ply_sampling_var_type), pointer:: destination(:)

Pointer to refer to the data in source. If destination already contains data, this data will be discarded.

public subroutine ply_sampling_var_compute_elemdev(var, threshold, min_mean)

This routine computes for each element whether the solution in it is considered to be deviating from the mean above the given threshold or not. The logical result is stored in var%deviates for each element.

Read more…


type(ply_sampling_var_type), intent(inout) :: var

Variable data to compute the deviation for.

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

Relative threshold to use as decision whether an element has a high deviation or not.

If the absolute value of higher modes sums to a larger value than threshold times the first mode (integral mean), the element is marked as deviating.

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

A minimal mean value to use as comparison (to cut off changes that are too close to 0).

This should be small but has to be larger than 0.