dirVec(:,1) = [ 1,2,3 ] dirVec(:,2) = [ 2,1,3 ] dirVec(:,3) = [ 2,3,1 ]
Subroutine to project modal representations of physical flux, numerical flux and source terms onto test functions.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(atl_cube_elem_type), | intent(in) | :: | mesh |
Descritption of the cubical elements in the mesh |
||
type(atl_Equations_type), | intent(in) | :: | equation |
The equation description. |
||
type(atl_kerneldata_type), | intent(inout) | :: | kerneldata |
The data of the kernel. Holds the physical fluxes. |
||
type(atl_modg_scheme_type), | intent(in) | :: | scheme |
The parameters of the MODG scheme |
||
integer, | intent(in) | :: | iDir |
The direction |
||
real(kind=rk), | intent(in) | :: | dl_prod(2,scheme%maxPolyDegree+1) |
stored scalar products of the testfunction and ansatz function |
||
integer, | intent(in) | :: | dirVec(3,3) |
vector for direction indicators |
||
integer, | intent(in) | :: | iElem | |||
real(kind=rk), | intent(in) | :: | state_der(kerneldata%nDofs,equation%varSys%nScalars) |
Subroutine to project modal representations of physical flux, numerical flux and source terms onto test functions.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(atl_cube_elem_type), | intent(in) | :: | mesh |
Descritption of the cubical elements in the mesh |
||
type(atl_Equations_type), | intent(in) | :: | equation |
The equation description. |
||
type(atl_kerneldata_type), | intent(inout) | :: | kerneldata |
The data of the kernel. Holds the physical fluxes. |
||
integer, | intent(in) | :: | iElem |
The element index |
||
real(kind=rk), | intent(in) | :: | dl_prod(2,scheme%maxPolyDegree+1) | |||
integer, | intent(in) | :: | iDir |
The direction |
||
type(atl_modg_2d_scheme_type), | intent(in) | :: | scheme |
The parameters of the MODG scheme |
||
real(kind=rk), | intent(in) | :: | state_data(nDofs,equation%varSys%nScalars) |
The physical fluxes that needs to be projected |
||
integer, | intent(in) | :: | nDofs |
The total degrees of freedom |
Projection of the physical flux onto the testfunctions, with unrolled loops
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | nScalars |
The number of scalar variables in your equation system. |
||
integer, | intent(in) | :: | maxPolyDegree |
The maximal polynomial degree in each spatial direction. |
||
real(kind=rk), | intent(in) | :: | length |
The length of the cubes. |
||
real(kind=rk), | intent(inout) | :: | state(:,:,:) |
The state to alter. |
||
real(kind=rk), | intent(in) | :: | dl_prod(2,maxPolyDegree+1) |
Precomputed dual Legendre products: |
||
integer, | intent(in) | :: | dirVec(3) |
ordering of xyz for current direction |
||
integer, | intent(in) | :: | iElem | |||
real(kind=rk), | intent(in) | :: | state_der(:,:) |
The state to be used to project the physical fluxes |
Projection of the physical flux onto the testfunctions, with unrolled loops => fewer loop-overhead/instructions, but more "random" memory accesses MZ: perhaps this version is faster for low order (or always, depending on the machine?)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | nScalars |
The number of scalar variables in your equation system. |
||
integer, | intent(in) | :: | iElem |
The element index |
||
integer, | intent(in) | :: | maxPolyDegree |
The maximal polynomial degree in each spatial direction. |
||
real(kind=rk), | intent(in) | :: | length |
The length of the cubes. |
||
real(kind=rk), | intent(inout) | :: | state(:,:,:) |
The state to alter. |
||
real(kind=rk), | intent(in) | :: | dl_prod(2,maxPolyDegree+1) |
Precomputed dual Legendre products: |
||
integer, | intent(in) | :: | dirVec(3) |
ordering of xyz for current direction |
||
real(kind=rk), | intent(in) | :: | state_der(:,:) |
The state to be used to project the physical fluxes |
Projection of the physical flux in x direction onto the testfunctions.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | nScalars |
The number of scalar variables in your equation system. |
||
integer, | intent(in) | :: | maxPolyDegree |
The maximal polynomial degree in each spatial direction. |
||
real(kind=rk), | intent(in) | :: | length |
The length of the cubes. |
||
real(kind=rk), | intent(in) | :: | dl_prod(2,maxPolyDegree+1) |
Precomputed dual Legendre products: |
||
real(kind=rk), | intent(inout) | :: | state(:,:,:) |
The state to alter. |
||
integer, | intent(in) | :: | iElem |
The element index |
||
real(kind=rk), | intent(in) | :: | state_der((maxPolyDegree+1)**2,nScalars) |
The state data for the element |
Projection of the physical flux in y direction onto the testfunctions.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | nScalars |
The number of scalar variables in your equation system. |
||
integer, | intent(in) | :: | maxPolyDegree |
The maximal polynomial degree in each spatial direction. |
||
real(kind=rk), | intent(in) | :: | length |
The length of the cubes. |
||
real(kind=rk), | intent(in) | :: | dl_prod(2,maxPolyDegree+1) |
Precomputed dual Legendre products: |
||
real(kind=rk), | intent(inout) | :: | state(:,:,:) |
The state to alter. |
||
integer, | intent(in) | :: | iElem |
The element index |
||
real(kind=rk), | intent(in) | :: | state_der((maxPolyDegree+1)**2,nScalars) |
The state data for the element |
Projection of the physical flux in x direction onto the testfunctions.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | nScalars |
The number of scalar variables in your equation system. |
||
integer, | intent(in) | :: | maxPolyDegree |
The maximal polynomial degree in each spatial direction. |
||
real(kind=rk), | intent(in) | :: | length |
The length of the cubes. |
||
real(kind=rk), | intent(in) | :: | dl_prod(2,maxPolyDegree+1) |
Precomputed dual Legendre products: |
||
real(kind=rk), | intent(inout) | :: | state(:,:,:) |
The state to alter. |
||
integer, | intent(in) | :: | iElem |
The element index |
||
integer, | intent(in) | :: | nDofs |
Number of degrees of freedom |
||
real(kind=rk), | intent(in) | :: | state_der(nDofs,nScalars) |
The state data for the element |
Projection of the physical flux in y direction onto the testfunctions.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | nScalars |
The number of scalar variables in your equation system. |
||
integer, | intent(in) | :: | maxPolyDegree |
The maximal polynomial degree in each spatial direction. |
||
real(kind=rk), | intent(in) | :: | length |
The length of the cubes. |
||
real(kind=rk), | intent(in) | :: | dl_prod(2,maxPolyDegree+1) |
Precomputed dual Legendre products: |
||
real(kind=rk), | intent(inout) | :: | state(:,:,:) |
The state to alter. |
||
integer, | intent(in) | :: | iElem |
The element index |
||
integer, | intent(in) | :: | nDofs |
Number of degrees of freedom |
||
real(kind=rk), | intent(in) | :: | state_der(nDofs,nScalars) |
The state data for the element |
X direction for 6 scalars projection of the physical flux onto the testfunctions, with unrolled loops
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | maxpolydegree |
the maximal polynomial degree in each spatial direction. |
||
real(kind=rk), | intent(in) | :: | length |
the length of the cubes. |
||
real(kind=rk), | intent(inout) | :: | state(:,:,:) |
the state to alter. |
||
real(kind=rk), | intent(in) | :: | dl_prod(2,maxpolydegree+1) |
precomputed dual legendre products: |
||
integer, | intent(in) | :: | ielem | |||
real(kind=rk), | intent(in) | :: | state_der(:,:) |
the state to be used to project the physical fluxes |
Y direction for 6 scalars projection of the physical flux onto the testfunctions, with unrolled loops
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | maxpolydegree |
the maximal polynomial degree in each spatial direction. |
||
real(kind=rk), | intent(in) | :: | length |
the length of the cubes. |
||
real(kind=rk), | intent(inout) | :: | state(:,:,:) |
the state to alter. |
||
real(kind=rk), | intent(in) | :: | dl_prod(2,maxpolydegree+1) |
precomputed dual legendre products: |
||
integer, | intent(in) | :: | ielem | |||
real(kind=rk), | intent(in) | :: | state_der(:,:) |
the state to be used to project the physical fluxes |
Z direction for 6 scalars projection of the physical flux onto the testfunctions, with unrolled loops
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | maxpolydegree |
the maximal polynomial degree in each spatial direction. |
||
real(kind=rk), | intent(in) | :: | length |
the length of the cubes. |
||
real(kind=rk), | intent(inout) | :: | state(:,:,:) |
the state to alter. |
||
real(kind=rk), | intent(in) | :: | dl_prod(2,maxpolydegree+1) |
precomputed dual legendre products: |
||
integer, | intent(in) | :: | ielem | |||
real(kind=rk), | intent(in) | :: | state_der(:,:) |
the state to be used to project the physical fluxes |
X direction for 5 scalars projection of the physical flux onto the testfunctions, with unrolled loops
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | maxpolydegree |
the maximal polynomial degree in each spatial direction. |
||
real(kind=rk), | intent(in) | :: | length |
the length of the cubes. |
||
real(kind=rk), | intent(inout) | :: | state(:,:,:) |
the state to alter. |
||
real(kind=rk), | intent(in) | :: | dl_prod(2,maxpolydegree+1) |
precomputed dual legendre products: |
||
integer, | intent(in) | :: | ielem | |||
real(kind=rk), | intent(in) | :: | state_der(:,:) |
the state to be used to project the physical fluxes |
Y direction for 5 scalars projection of the physical flux onto the testfunctions, with unrolled loops
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | maxpolydegree |
the maximal polynomial degree in each spatial direction. |
||
real(kind=rk), | intent(in) | :: | length |
the length of the cubes. |
||
real(kind=rk), | intent(inout) | :: | state(:,:,:) |
the state to alter. |
||
real(kind=rk), | intent(in) | :: | dl_prod(2,maxpolydegree+1) |
precomputed dual legendre products: |
||
integer, | intent(in) | :: | ielem | |||
real(kind=rk), | intent(in) | :: | state_der(:,:) |
the state to be used to project the physical fluxes |
Z direction for 5 scalars projection of the physical flux onto the testfunctions, with unrolled loops
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | maxpolydegree |
the maximal polynomial degree in each spatial direction. |
||
real(kind=rk), | intent(in) | :: | length |
the length of the cubes. |
||
real(kind=rk), | intent(inout) | :: | state(:,:,:) |
the state to alter. |
||
real(kind=rk), | intent(in) | :: | dl_prod(2,maxpolydegree+1) |
precomputed dual legendre products: |
||
integer, | intent(in) | :: | ielem | |||
real(kind=rk), | intent(in) | :: | state_der(:,:) |
the state to be used to project the physical fluxes |