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 |
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
real(kind=rk), | private | :: | jacobiDetStiffProj | ||||
real(kind=rk), | private | :: | scalProd1(maxPolyDegree) | ||||
integer, | private | :: | testPos | ||||
integer, | private | :: | iTest2 | ||||
integer, | private | :: | iTest1 | ||||
integer, | private | :: | iTest3 | ||||
integer, | private | :: | iTestVec(3) | ||||
integer, | private | :: | min2mpd | ||||
integer, | private | :: | iAnsVec(3) | ||||
integer, | private | :: | iVar | ||||
integer, | private | :: | ansPos(4) | ||||
real(kind=rk), | private | :: | scalProd(4) |