# ply_modg_refine_type Derived Type

## type, public :: ply_modg_refine_type

\brief Coefficients for the projections of the elemental basis functions from coarser to finer elements and vice versa.

The MODG scheme is defined with Legendre polynomials (ansatz functions) and modified Legendre polynomials (test functions). Because of our dimension-by-dimension approach we can consider 1D elements without loss of generalty. \n For MODG scheme the reference element is always \f$[-1,+1] \f$ . In case of non-conforming element refinement we have the follwing faces overlying in the 3D case: \n \n faces of refined face of non-refined cube cube ------------------------ ------------------------ | | | | | | 3 | 4 | | | | | | | | ------------------------ <----------> | 5 | | | | | | | 1 | 2 | | | | | | | | ------------------------ ------------------------ \n To enable flux calculations and projections between the two element sizes we have to tansfer polynomial functions from one element size to another one. \n Therefore we have two tasks: \n 1. Restrict polynomial functions on 5 to each of the fine element 1 to 4. The restriction has to deliver a polynomial approximation on 1 to 4 in terms of fine element's ansatz functions. \n 2. Approximate polynomial functions on 1 to 4 by a L2-projection on 5. Again the approximation on 5 has to be delivered in terms of ansatz functions defined on 5. \n Without loss of generaltiy we can restrict ourself to the following 1D situation: \n \n \n Coarse face's ref. element \n f(x) \n | ------- \n | / \ / \n |/ \ / \n | \ / \n | ----- \n |----------------------|-------------> \n -1 +1 x \n \n /|\ | \n | | \n L2 proj. | | L2 proj. \n (approx) | | (exact) \n | |/ \n \n Fine face's ref. element \n f(x) f(x) \n | ------- | \n | / |\ / \n |/ | \ / \n | | \ / \n | | ----- \n |----------|--> |-----------|--> \n -1 0 x 0 +1 x \n \n This datatype stores all the coefficients to calculate the necessary L2 projections to transfer polynomial functions between coarser and finer elements (, faces and volumes).

1st dim: standard anzatz function [-1,1] 2nd dim: shifted anzatz function 3rd dim: shifting for coarse basis function 1: 1/2x|y|z - 1/2 2: 1/2x|y|z + 1/2

## Components

TypeVisibilityAttributesNameInitial
real(kind=rk), private, allocatable:: anz_anzShift(:,:,:)