Routines and datatypes related to the modal basis functions of the modal discontinuous Galerkin scheme. \author{Jens Zudrop}
\brief Coefficients for the projections of the elemental basis functions from coarser to finer elements and vice versa.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
real(kind=rk), | private, | allocatable | :: | anz_anzShift(:,:,:) |
Projection coefficients for covolume filtering.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
real(kind=rk), | private, | allocatable | :: | anz_anzShift(:,:,:) |
Datatype to represent the polynomial basis functions of the modg scheme.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
type(ply_modg_refine_type), | private | :: | refineBaseCoeff | Projections of ansatz functions of a finer element to a coarser element and vice versa. These coefficients are required for non-conforming element refinement in the MODG scheme. |
|||
type(ply_modg_covolume_type), | private | :: | covolumeBaseCoeff | Projections of ansatz functions to covolume grid and vice versa. These coefficients are required for covolume stabilizations. |
Integrate the integrand function in Legendre basis, and represent the integral again in the Legendre basis up to the maximal degree.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=rk), | intent(in) | :: | integrand(:) | Coefficients of the function to integrate in Legendre basis. |
||
integer, | intent(in) | :: | maxdegree | Maximal polynomial degree for the integral, should be larger than the degree of the integrand |
Legendre coefficients of the resulting integral.
Evaluate all 1D Legendre polynomials at a given set of points up to the given degree.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=rk), | intent(in) | :: | points(:) | 1D points to evaluate. |
||
integer, | intent(in) | :: | degree | Degree up to which to evaluate the polynomials |
Resulting vector of all mode values at all points
Returns the value of the non-normalized differentiated Legendre polynomial at the right boundary of the reference element, i.e. at +1.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | ansFunc | The ansatz function index, first ansatz function has index 1. |
The function value.
Returns the value of the non-normalized Legendre polynomial at the left boundary of the reference element, i.e. at -1.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | ansFunc | The ansatz function index, first ansatz function has index 1. |
The function value.
Returns the value of the non-normalized Legendre polynomial at the left boundary of the reference element, i.e. at -1.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | mPD | The ansatz function index, first ansatz function has index 1. |
The function value.
Returns the value of the non-normalized differentiated Legendre polynomial at the leftboundary of the reference element, i.e. at -1.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | ansFunc | The ansatz function index, first ansatz function has index 1. |
The function value.
Returns the value of the dual Legendre polynomial at the right boundary of the reference element, i.e. at +1.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | testFunc | The ansatz function index, first test function has index 1. |
The function value.
Returns the value of the dual Legendre polynomial at the right boundary of the reference element, i.e. at +1. Vectorized Version.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | mPD | The ansatz function index, first test function has index 1. |
The function value.
Returns the value of the gradient of dual Legendre polynomial at the right boundary of the reference element, i.e. at +1.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | testFunc | The ansatz function index, first test function has index 1. |
The function value.
Returns the value of the gradient of dual Legendre polynomial at the right boundary of the reference element, i.e. at +1. Vectorized version.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | mPD | The ansatz function index, first test function has index 1. |
The function value.
Returns the value of the dual Legendre polynomial at the left boundary of the reference element, i.e. at -1.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | testFunc | The ansatz function index, first test function has index 1. |
The function value.
Returns the value of the dual Legendre polynomial at the left boundary of the reference element, i.e. at -1.Vectorized version.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | mPD | The ansatz function index, first test function has index 1. |
The function value.
Returns the value of the gradient of the dual Legendre polynomial at the left boundary of the reference element, i.e. at -1.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | testFunc | The ansatz function index, first test function has index 1. |
The function value.
Returns the value of the gradient of the dual Legendre polynomial at the left boundary of the reference element, i.e. at -1.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | mPD | The ansatz function index, first test function has index 1. |
The function value.
Returns the value of the derivaitve of the dual Legendre polynomial at the left boundary of the reference element, i.e. at -1.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | testFunc | The ansatz function index, first test function has index 1. |
The function value.
Returns the value of the derivaitve of the dual Legendre polynomial at the left boundary of the reference element, i.e. at -1.Vectorized version.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | mPD | The ansatz function index, first test function has index 1. |
The function value.
Returns the value of the derivaitve of the dual Legendre polynomial at the right boundary of the reference element, i.e. at +1.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | testFunc | The ansatz function index, first test function has index 1. |
The function value.
Returns the value of the derivaitve of the dual Legendre polynomial at the right boundary of the reference element, i.e. at +1.vectoized version.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | mPD | The ansatz function index, first test function has index 1. |
The function value.
Function to calculate the L2 scalar product of a Legendre polynomial with itself on the reference element [-1,+1].
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | ansFunc | The Legendre polynomial to calculate the scalar product for. The first Legendre polynomial has index 1. |
The scalar product on the refenece element [-1,+1].
Function to calculate the scalar product between a Legendre polynomial (ansatz function) and a dual Legendre polynomial (test function) on the reference element [-1;+1].
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | ansFunc | The ansatz function index, there first ansatz function has index 1. |
||
integer, | intent(in) | :: | testFunc | The test function index, there first test function has index 1. |
The scalar product of the two functions.
Function to calculate the scalar product between a Legendre polynomial (ansatz function) and a differentiated dual Legendre polynomial (test function) on the reference element [-1;+1].
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | ansFunc | The ansatz function index, there first ansatz function has index 1. |
||
integer, | intent(in) | :: | testFunc | The test function index, there first test function has index 1. |
The scalar product of the two functions.
Vectorized Function to calculate the scalar product between a Legendre polynomial (ansatz function) and a dual Legendre polynomial (test function) on the reference element [-1;+1] and to calculate the scalar product between a Legendre polynomial (ansatz function) and a differentiated dual Legendre polynomial (test function) on the reference element [-1;+1].
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | ansFunc | The ansatz function index, there first ansatz function has index 1. |
||
integer, | intent(in) | :: | testFunc | The test function index, there first test function has index 1. |
||
integer, | intent(in) | :: | mPd | maxPolyDegree |
The scalar product of the two functions.
Integral of combination of all anzatz functions for projection onto finer element
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | nPoints | |||
integer, | intent(in) | :: | nFunc | |||
type(ply_modg_covolume_type), | intent(out) | :: | integral |
Integral of combination of all anzatz functions for projection onto finer element
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | nPoints | |||
integer, | intent(in) | :: | nFunc | |||
type(ply_modg_refine_type), | intent(out) | :: | integral |
Evaluate three-dimensional tensor product Legendre polynomials (not-normalized) at a given set of coordinates.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=rk), | intent(in) | :: | coords(:,:) | Array of coordinates (on the reference element) to evaluate the tensor product polynomials at. First dimension is nCoord, second is 3 for x,y,z component. |
||
integer, | intent(in) | :: | nCoords | The number of coordinates to evaluate the polynomials at. |
||
integer, | intent(in) | :: | maxPolyDegree | The maximum polynomail degree of the MODG scheme. |
||
integer, | intent(in) | :: | basisType | |||
real(kind=rk), | intent(out), | allocatable | :: | polyVal(:,:) | The polynomial values. First dimension is the number of tensor product polynomials and the second dimension is the number of points, i.e. nCoords. |