Managing the variable system description for sampled data.
Small helping type to allow arrays of arrays for the variable data.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | private | :: | nDeviating | ||||
integer, | private, | allocatable | :: | degree(:) | |||
integer, | private, | allocatable | :: | first(:) | |||
real(kind=rk), | private, | pointer | :: | dat(:) | |||
logical, | private, | allocatable | :: | deviates(:) |
Create a variable system for the given tracking instance.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
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. |
Allocate memory for a sampled variable.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
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. |
Move the variable data from source to destination.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
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. |
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.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
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. |