cleaning directly on the face-vector
This subroutine assumes the Maxwell equations with D and B as input variables. Furthermore, it is able to handle arbitray material parameters by a pseudo-spectral technique.
! Get the material of the left and right element at the current ! face. ! ... left material left_mu = material_left(iSide,iPoint,1) left_epsi = material_left(iSide,iPoint,2) left_gam = material_left(iSide,iPoint,3) left_chi = material_left(iSide,iPoint,4) ! ... right material right_mu = material_right(iSide,iPoint,1) right_epsi = material_right(iSide,iPoint,2) right_gam = material_right(iSide,iPoint,3) right_chi = material_right(iSide,iPoint,4)
& left_mu = left_mu, & & left_epsi = left_epsi, & & left_gam = left_gam, & & left_chi = left_chi, & & right_mu = right_mu, & & right_epsi = right_epsi, & & right_gam = right_gam, & & right_chi = right_chi, &
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | nTotalFaces | |||
| integer, | intent(in) | :: | nSides | |||
| integer, | intent(in) | :: | nFaceDofs | |||
| real(kind=rk), | intent(in) | :: | faceRep(nTotalFaces,nFaceDofs,8,2) |
The modal representation on the faces, left and right trace. |
||
| real(kind=rk), | intent(inout) | :: | faceFlux(nTotalFaces,nFaceDofs,8,2) |
The fluxes for all faces, for left and right elements. |
||
| integer, | intent(in) | :: | leftPos(nSides) |
Positions for the left and right elements of all faces |
||
| integer, | intent(in) | :: | rightPos(nsides) |
Positions for the left and right elements of all faces |
||
| integer, | intent(in) | :: | var(8) |
Variable rotation indices |
||
| real(kind=rk), | intent(in) | :: | material_left(nSides,nFaceDofs,4) |
Material parameters for the left faces. |
||
| real(kind=rk), | intent(in) | :: | material_right(nSides,nFaceDofs,4) |
Material parameters for the right faces. |
||
| type(ply_poly_project_type) | :: | poly_proj |
Data for projection method !> Working array for the left and right modal coefficients real(kind=rk), intent(inout) :: left_modalCoeffs((fpt%nQuadPoints)2,8) real(kind=rk), intent(inout) :: right_modalCoeffs((fpt%nQuadPoints)2,8) !> Working array for the left and right point values real(kind=rk), intent(inout) :: left_pntVal((fpt%nQuadPoints)2,8) real(kind=rk), intent(inout) :: right_pntVal((fpt%nQuadPoints)2,8) !> Working array for the nodal flux real(kind=rk), intent(inout) :: nodalNumFlux((fpt%nQuadPoints)2,8) !> Working array for the modal numerical flux real(kind=rk), intent(inout) :: numFluxBuffer((fpt%nQuadPoints)2,8) |
|||
| real(kind=rk), | intent(inout), | allocatable | :: | left_modalCoeffs(:,:) |
Working array for the left and right modal coefficients |
|
| real(kind=rk), | intent(inout), | allocatable | :: | right_modalCoeffs(:,:) | ||
| real(kind=rk), | intent(inout), | allocatable | :: | left_pntVal(:,:) |
Working array for the left and right point values |
|
| real(kind=rk), | intent(inout), | allocatable | :: | right_pntVal(:,:) | ||
| real(kind=rk), | intent(inout), | allocatable | :: | nodalNumFlux(:,:) |
Working array for the nodal flux |
|
| real(kind=rk), | intent(inout), | allocatable | :: | numFluxBuffer(:,:) |
Working array for the modal numerical flux |