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 |