Collections of operations and datatypes related to multilevel simulations for the MODG scheme.
To workaround a buggy workshare implementation in Intel 15, we replaced array syntax constructs and workshares in the code below by collapsed do loops with OpenMP Do directives.
I n t e r p o l a t e
m o d a l
f a c e
r e p r e s e n t a t i o n
f r o m
c o a r s e
t o
n e x t
f i n e r
f a c e s
( l e v e l
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | minLevel |
The minumum level of the mesh. |
||
integer, | intent(in) | :: | maxLevel |
The maximum level of the mesh. |
||
integer, | intent(in) | :: | currentLevel |
The current level (i.e. the coarse level). |
||
type(atl_cube_elem_type), | intent(in) | :: | mesh(minLevel:maxLevel) |
The mesh representation. |
||
type(atl_facedata_type), | intent(inout) | :: | facedata(minLevel:maxLevel) |
The face representations (finer faces are interpolated from coarser ones). |
||
type(atl_scheme_type), | intent(in) | :: | scheme(minLevel:maxLevel) |
The schemes on the different levels. |
||
integer, | intent(in) | :: | nScalars |
The number of scalar variables in your equation system. |
Project coarse parent element to its 8 finer child elements by a simple L2 projection.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | minLevel |
The minumum level of the mesh. |
||
integer, | intent(in) | :: | maxLevel |
The maximum level of the mesh. |
||
integer, | intent(in) | :: | currentLevel |
The current level (i.e. the coarse level). |
||
integer, | intent(in) | :: | iDir |
The direction to project |
||
type(atl_cube_elem_type), | intent(in) | :: | mesh(minLevel:maxLevel) |
The mesh representation. |
||
type(atl_statedata_type), | intent(inout) | :: | state_stab(minLevel:maxLevel,1:3) |
The face representations (finer faces are interpolated from coarser ones). |
||
type(atl_scheme_type), | intent(in) | :: | scheme(minLevel:maxLevel) |
The schemes on the different levels. |
||
integer, | intent(in) | :: | nScalars |
The number of scalar variables in your equation system. |
Project data from 8 smaller elements to its parent element in terms of L2 projections.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | minLevel |
The minumum level of the mesh. |
||
integer, | intent(in) | :: | maxLevel |
The maximum level of the mesh. |
||
integer, | intent(in) | :: | currentLevel |
The current level (i.e. the coarse level). |
||
integer, | intent(in) | :: | iDir |
The direction to interpolate. |
||
type(atl_cube_elem_type), | intent(in) | :: | mesh(minLevel:maxLevel) |
The mesh representation. |
||
type(atl_statedata_type), | intent(inout) | :: | state_stab(minLevel:maxLevel,1:3) |
The face representations (finer faces are interpolated from coarser ones). |
||
type(atl_scheme_type), | intent(in) | :: | scheme(minLevel:maxLevel) |
The schemes on the different levels. |
||
integer, | intent(in) | :: | nScalars |
The number of scalar variables in your equation system. |
I n t e r p o l a t e
m o d a l
f a c e
r e p r e s e n t a t i o n
f r o m
n e x t
f i n e r
f a c e s
t o
c o a r s e
l e v e l
( l e v e l
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | minLevel |
The minumum level of the mesh. |
||
integer, | intent(in) | :: | maxLevel |
The maximum level of the mesh. |
||
integer, | intent(in) | :: | currentLevel |
The current level (i.e. the coarse level). |
||
type(atl_cube_elem_type), | intent(in) | :: | mesh(minLevel:maxLevel) |
The mesh representation. |
||
type(atl_facedata_type), | intent(inout) | :: | facedata(minLevel:maxLevel) |
The face representations (finer faces are interpolated from coarser ones). |
||
type(atl_scheme_type), | intent(in) | :: | scheme(minLevel:maxLevel) |
The schemes on the different levels. |
||
integer, | intent(in) | :: | nScalars |
The number of scalar variables in your equation system. |
Subroutine to semi-refine an element with modal polynomial representation into its semi-children.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=rk), | intent(in) | :: | modalRepFace(:,:) |
Modal representation of a function on the non-refined face. Dimensions are: (modg%maxPolyDegree+1)^2 for the first dimension and nScalars for the second dimension. |
||
type(ply_modg_basis_type) | :: | modg_basis |
Informations about the polynomial basis of a MODG scheme. |
|||
type(atl_modg_scheme_type), | intent(in) | :: | schemeCoarse |
The parameters of your MODG scheme on the coarse level. |
||
type(atl_modg_scheme_type), | intent(in) | :: | schemeFine |
The parameters of your MODG scheme on the fine level. |
||
integer, | intent(in) | :: | refineDir |
The direction of the semi-refinement. Either 1 or 2. Have a look at the function description. |
||
integer, | intent(in) | :: | fineElemShift |
The semi-refined element you want to obtain. |
||
real(kind=rk), | intent(inout) | :: | modalRefined(:,:) |
The modal representation of modalRepFace restricted to the semi-refined element. |
P r o j e c t
m o d a l
r e p r e s e n t a t i o n
o n
a
f a c e
t o
a
s e m i - r e f i n e d
f a c e
( i . e .
o n
a
f a c e
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=rk), | intent(in) | :: | modalRepFace(:,:) |
Modal representation of a function on the non-refined face. Dimensions are: (modg%maxPolyDegree+1)^2 for the first dimension and nScalars for the second dimension. |
||
type(ply_modg_basis_type) | :: | modg_basis |
Informations about the polynomial basis of a MODG scheme. |
|||
type(atl_modg_scheme_type), | intent(in) | :: | schemeCoarse |
The parameters of your MODG scheme on the coarse level. |
||
type(atl_modg_scheme_type), | intent(in) | :: | schemeFine |
The parameters of your MODG scheme on the fine level. |
||
integer, | intent(in) | :: | refineDir |
The direction of the semi-refinement. Either 1 or 2. Have a look at the function description. |
||
integer, | intent(in) | :: | fineFaceShift |
The semi-refined element you want to obtain. |
||
real(kind=rk), | intent(inout) | :: | modalRefined(:,:) |
The modal representation of modalRepFace restricted to the semi-refined element. |
Subroutine to semi-coarsen an element with modal polynomial representation to its semi-parent.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=rk), | intent(in) | :: | modalRepFace(:,:) |
Modal representation of a function on one of refined element. Which fine element is determined by fineFaceShift Dimensions are: (modg%maxPolyDegree+1)^3 for the first dimension and nScalars for the second dimension. |
||
type(ply_modg_basis_type) | :: | modg_basis |
Informations about the polynomial basis of a MODG scheme. |
|||
type(atl_modg_scheme_type), | intent(in) | :: | schemeCoarse |
The parameters of your MODG scheme on the coarse level. |
||
type(atl_modg_scheme_type), | intent(in) | :: | schemeFine |
The parameters of your MODG scheme on the fint level. |
||
integer, | intent(in) | :: | coarseDir |
The direction of the semi-coarsening. Either 1 or 2 or 3. Have a look at the function description. |
||
integer, | intent(in) | :: | fineElemShift |
The semi-refined element you want to obtain. |
||
real(kind=rk), | intent(inout) | :: | modalCoarsed(:,:) |
The modal representation of modalRepFace on the coarser element, restricted to the given fine element. |
P r o j e c t
m o d a l
r e p r e s e n t a t i o n
o f
a
s e m i - r e f i n e d
f a c e
( i . e .
o n
a
f a c e
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=rk), | intent(in) | :: | modalRepFace(:,:) |
Modal representation of a function on one of refined face. Which fine face is determined by fineFaceShift Dimensions are: (modg%maxPolyDegree+1)^2 for the first dimension and nScalars for the second dimension. |
||
type(ply_modg_basis_type) | :: | modg_basis |
Informations about the polynomial basis of a MODG scheme. |
|||
type(atl_modg_scheme_type), | intent(in) | :: | schemeCoarse |
The parameters of your MODG scheme on the coarse level. |
||
type(atl_modg_scheme_type), | intent(in) | :: | schemeFine |
The parameters of your MODG scheme on the fint level. |
||
integer, | intent(in) | :: | coarseDir |
The direction of the semi-coarsening. Either 1 or 2. Have a look at the function description. |
||
integer, | intent(in) | :: | fineFaceShift |
The semi-refined element you want to obtain. |
||
real(kind=rk), | intent(inout) | :: | modalCoarsed(:,:) |
The modal representation of modalRepFace on the coarser element, restricted to the given fine element. |