maxwell_hc_flux_nonconst_cube_vec Subroutine

private subroutine maxwell_hc_flux_nonconst_cube_vec(nTotalFaces, nSides, nFaceDofs, faceRep, faceFlux, leftPos, rightPos, var, material_left, material_right, poly_proj, left_modalCoeffs, right_modalCoeffs, left_pntVal, right_pntVal, nodalNumFlux, numFluxBuffer)

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, &

Arguments

Type IntentOptional 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