Interface for fluxes of Maxwell equations with hyperbolic divergence cleaning.
S u b r o u t i n e
t o
c a l c u l a t e
t h e
f l u x
f o r
p u r e
M a x w e l l
e q u a t i o n s
w i t h
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=rk), | intent(in) | :: | left(8) |
Left state vector (as conservative variables). The order of this vector has to be \f$ (D_x, D_y, D_z, B_1, B_2, B_3, phi, psi) \f$ where E and B denoted electric field vetor and magnetic field (also called magnetic induction) vector. |
||
real(kind=rk), | intent(in) | :: | right(8) |
Right state vector (as conservative variables). The order of this vector has to be (D_x, D_y, D_z, B_1, B_2, B_3, phi, psi) where E and B denoted the electric field vetor and magnetic field (also called magnetic induction) vector. |
||
real(kind=rk), | intent(in) | :: | mat_left(4) |
Material for the left face |
||
real(kind=rk), | intent(in) | :: | mat_right(4) |
Material for the right face !> The magnetic permeability of the left element. real(kind=rk), intent(in) :: left_mu !> The electric permitivity of the left element. real(kind=rk), intent(in) :: left_epsi !> Parameter for the magnetic correction on the left element. real(kind=rk), intent(in) :: left_gam !> Parameter for the electric correction on the left element. real(kind=rk), intent(in) :: left_chi !> The magnetic permeability of the right element. real(kind=rk), intent(in) :: right_mu !> The electric permitivity of the right element. real(kind=rk), intent(in) :: right_epsi !> Parameter for the magnetic correction on the right element. real(kind=rk), intent(in) :: right_gam !> Parameter for the electric correction on the right element. real(kind=rk), intent(in) :: right_chi |
||
real(kind=rk), | intent(out) | :: | flux(8) |
The flux between left and right cell. The order of this vector is the same as the input arguments. |
c a l c u l a t e
f l u x
o f
m a x w e l l
e q u a t i o n
w i t h
h y p e r b o l i c
d i v e r g e n c e
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) | |||
real(kind=rk), | intent(inout) | :: | faceFlux(nTotalFaces,nFaceDofs,8,2) | |||
integer, | intent(in) | :: | leftPos(nSides) | |||
integer, | intent(in) | :: | rightPos(nsides) | |||
integer, | intent(in) | :: | var(8) | |||
real(kind=rk), | intent(in) | :: | material_left(nSides,1,4) | |||
real(kind=rk), | intent(in) | :: | material_right(nSides,1,4) |
integer :: iSide, left, right, iDof real(kind=rk) :: left_mu, right_mu real(kind=rk) :: left_epsi, right_epsi real(kind=rk) :: left_gam, right_gam real(kind=rk) :: left_chi, right_chi real(kind=rk) :: left_speedOfLight, right_speedOfLight real(kind=rk) :: inv_denom_mu, inv_denom_epsi ! -------------------------------------------------------------------------- |
c a l c u l a t e
f l u x
o f
m a x w e l l
e q u a t i o n
w i t h
h y p e r b o l i c
d i v e r g e n c e
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 |