Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
logical, | private | :: | isActive | = | .false. | Is subsampling active |
|
integer, | private | :: | sampling_lvl | The current sampling lvl. |
|||
integer, | private | :: | caplevel | = | 20 | Maximal Level down to which subsampling should be done. |
|
integer, | private | :: | minsub | = | 0 | Minimal subsampling depth: |
|
integer, | private | :: | maxsub | = | 0 | Maximal subsampling depth: |
|
real(kind=rk), | private | :: | eps_osci | Maximum allowed oscillation of the solution. For adaptive subsampling only. |
|||
real(kind=rk), | private | :: | dofReducFactor | Factor for the reduction of the degrees of freedom in one subsampling step (per spatial direction). |
|||
logical, | private | :: | adaptiveDofReduction | Indicator for limitation of total memory consumption |
|||
integer, | private | :: | AbsUpperBoundLevel | Absolute upper bound level to refine to. |
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
real(kind=rk), | private, | allocatable | :: | dat(:) |
Coefficients from the recursive formulation of legendre polynomials. L_n = alpha * x * L_n-1 + beta * L_n-2
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | mode | The current mode in the polynomial representation. |
Alpha coefficient from the recursive formulation of legendre polynomials.
Coefficients from the recursive formulation of legendre polynomials. L_n = alpha * x * L_n-1 + beta * L_n-2
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | mode | The current mode in the polynomial representation. |
Beta coefficient from the recursive formulation of legendre polynomials.
Quotient of two alpha values.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | denominator | Denominator |
||
integer, | intent(in) | :: | numerator | Numerator |
The quotient of two alpha values.
Prodcut of alpha(numerator) * beta(denominator) / alpha(denominator)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | denominator | Denominator |
||
integer, | intent(in) | :: | numerator | Numerator |
The product of alpha(n) * beta(d) / alpha(d)
Projection of polynomial data from parent elements to child elements. The projection is done by a direct transformation of the modal coeffiecients to another coordinate system with z=ax+b.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ply_subsample_type), | intent(in) | :: | subsamp | Parameters for the subsampling |
||
real(kind=rk), | intent(in) | :: | dofReduction(:) | Factor for reduction of degrees of freedom. |
||
type(treelmesh_type), | intent(in) | :: | mesh | The mesh related to meshData. |
||
type(ply_array_type), | intent(in) | :: | meshData(:) | The data for subsampling. |
||
integer, | intent(in) | :: | varDofs(:) | The number of degrees of freedom for every variable. |
||
integer, | intent(in) | :: | varComps(:) | The number of components for every variable. |
||
integer, | intent(in) | :: | ndims | Number of dimensions in the polynomial representation. |
||
logical, | intent(in) | :: | refine_tree(:) | Logical array that marks elements for refinement of the previous sampling level. |
||
logical, | intent(in) | :: | new_refine_tree(:) | Logical array that marks elements for refinement. |
||
type(ply_array_type), | intent(out), | allocatable | :: | newMeshData(:) | The subsampled data for new_refine_tree. |
|
integer, | intent(out), | allocatable | :: | newVarDofs(:) | The number of dofs for the subsampled data. |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(treelmesh_type), | intent(in) | :: | mesh | The mesh for the data. |
||
real(kind=rk), | intent(in) | :: | meshData(:) | The data to subsample |
||
integer, | intent(in) | :: | nDofs | The number of degrees of freedom. |
||
integer, | intent(in) | :: | nChildDofs | The number of degrees of freedom for the child elements. |
||
integer, | intent(in) | :: | nComponents | Number of Components. |
||
logical, | intent(in) | :: | refine_tree(:) | Logical array that marks all elements for refinement for the previous sampling level. |
||
logical, | intent(in) | :: | new_refine_tree(:) | Logical array that marks all elements for refinement for the current sampling level. |
||
integer, | intent(in) | :: | nDims | The number of dimensions in the polynomial representation. |
||
type(ply_subsample_type), | intent(in) | :: | subsamp | Parameters for subsampling. |
||
real(kind=rk), | intent(out), | allocatable | :: | newMeshData(:) | The subsampled Data. |
Subroutine to project element data from a parent cell to its children.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=rk), | intent(in) | :: | parentData(:) | The polynomial data for a single parent element. |
||
integer, | intent(in) | :: | nParentDofs | The number of dofs of the parent element. |
||
integer, | intent(in) | :: | nChildDofs | The total number of dofs for the child cells. |
||
integer, | intent(in) | :: | nComponents | The number of componentns for the given variable. |
||
integer, | intent(in) | :: | nDimensions | The number of dimensions. |
||
integer, | intent(in) | :: | nChilds | The number of child elements. |
||
real(kind=rk), | intent(in) | :: | transform_matrix(:,:) | The transformation matrix for the linear coordinate transformation. |
||
real(kind=rk), | intent(out), | allocatable | :: | childData(:) | The new data representation for all child cell of the parent cell. |
Compute the transformation matrix for a projection to the left and right half-interval of Legendre polynomials for the given maximal number of modes.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | max_modes | The maximal number of modes to compute the transformation for. The resulting matrix v will be max_modes x max_modes large and can be used for the transformation of all polynomials with up to this many modes. |
||
real(kind=rk), | intent(out), | allocatable | :: | v(:,:) | The transformation matrix. Upper triangular matrix is created for shifting and lower triangular for (-1) * shifting. For the right interval we interpret the first index as row index and the second as column. For the left interval this is reverted and we interpret the first index as columns of the matrix. |