module that holds all routines to calculate the flux for hyperbolic Maxwell equations (2d, transverse electric mode formulation -TE).
Interface for fluxes of pure Maxwell equations.
any divergence cleaning on the reference cubic face in 2D.
This subroutine calculates the flux of the Maxwell equation on the reference cubic face. The underlying 2D formulation is transverse electric mode formulation - TE mode.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=rk), | intent(in) | :: | left(7) |
Left state vector (as conservative variables). The order of this vector has to be \f$ (D_x, D_y, B_3) \f$ where E and B denoted electric field vetor and magnetic field (also called magnetic induction) vector. |
||
real(kind=rk), | intent(in) | :: | right(7) |
Right state vector (as conservative variables). The order of this vector has to be (D_x, D_y, B_3) where E and B denoted the electric field vetor and magnetic field (also called magnetic induction) vector. |
||
real(kind=rk), | intent(in) | :: | left_mu |
The magnetic permeability of the left element. |
||
real(kind=rk), | intent(in) | :: | left_epsi |
The electric permitivity of the left element. |
||
real(kind=rk), | intent(in) | :: | right_mu |
The magnetic permeability of the right element. |
||
real(kind=rk), | intent(in) | :: | right_epsi |
The electric permitivity of the right element. |
||
real(kind=rk), | intent(out) | :: | flux(7) |
The flux between left and right cell. The order of this vector is the same as the input arguments. |
(formulation is based on TE mode formulation for 2D).
This subroutine assumes the Maxwell equations with D and B as input variables. Furthermore, it is able to handle jumping material parameters.
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,7,2) | |||
real(kind=rk), | intent(inout) | :: | faceFlux(nTotalFaces,nFaceDofs,7,2) | |||
integer, | intent(in) | :: | leftPos(nSides) | |||
integer, | intent(in) | :: | rightPos(nsides) | |||
integer, | intent(in) | :: | var(7) | |||
real(kind=rk), | intent(in) | :: | material_left(nSides,1,3) | |||
real(kind=rk), | intent(in) | :: | material_right(nSides,1,3) |
(formulation is based on TE mode formulation for 2D).
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.
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,7,2) |
The modal representation on the faces, left and right trace. |
||
real(kind=rk), | intent(inout) | :: | faceFlux(nTotalFaces,nFaceDofs,7,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(7) |
Variable rotation indices |
||
real(kind=rk), | intent(in) | :: | material_left(nSides,nFaceDofs,3) |
Material parameters for the left faces. |
||
real(kind=rk), | intent(in) | :: | material_right(nSides,nFaceDofs,3) |
Material parameters for the right faces. |
||
type(ply_poly_project_type) | :: | poly_proj |
Data for projection method |
|||
real(kind=rk), | intent(inout) | :: | modalCoeffs(:,:,:) |
Working array for the left and right modal coefficients |
||
real(kind=rk), | intent(inout) | :: | pntVal(:,:,:) |
Working array for the left and right point values |
||
real(kind=rk), | intent(inout) | :: | nodalNumFlux(:,:) |
Working array for the nodal flux |
||
real(kind=rk), | intent(inout) | :: | numFluxBuffer(:,:) |
Working array for the modal numerical flux |
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 o u t
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=rk), | intent(in) | :: | left(7) |
Left state vector (as conservative variables). The order of this vector has to be \f$ (D_x, D_y, B_3) \f$ where E and B denoted electric field vetor and magnetic field (also called magnetic induction) vector. |
||
real(kind=rk), | intent(in) | :: | right(7) |
Right state vector (as conservative variables). The order of this vector has to be (D_x, D_y, B_3) where E and B denoted the electric field vetor and magnetic field (also called magnetic induction) vector. |
||
real(kind=rk), | intent(in) | :: | left_mu |
The magnetic permeability of the left element. |
||
real(kind=rk), | intent(in) | :: | left_epsi |
The electric permitivity of the left element. |
||
real(kind=rk), | intent(in) | :: | right_mu |
The magnetic permeability of the right element. |
||
real(kind=rk), | intent(in) | :: | right_epsi |
The electric permitivity of the right element. |
||
real(kind=rk), | intent(out) | :: | flux(7) |
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
p u r e
m a x w e l l
e q u a t i o n
d i r e c t l y
o n
t h e
f a c e - v e c t o r
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,7,2) |
The modal representation on the faces, left and right trace. |
||
real(kind=rk), | intent(inout) | :: | faceFlux(nTotalFaces,nFaceDofs,7,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(7) |
Variable rotation indices |
||
real(kind=rk), | intent(in) | :: | material_left(nSides,nFaceDofs,3) |
Material parameters for the left faces. |
||
real(kind=rk), | intent(in) | :: | material_right(nSides,nFaceDofs,3) |
Material parameters for the right faces. |
||
type(ply_poly_project_type) | :: | poly_proj |
Data for projection method |
|||
real(kind=rk), | intent(inout) | :: | modalCoeffs(:,:,:) |
Working array for the left and right modal coefficients |
||
real(kind=rk), | intent(inout) | :: | pntVal(:,:,:) |
Working array for the left and right point values |
||
real(kind=rk), | intent(inout) | :: | nodalNumFlux(:,:) |
Working array for the nodal flux |
||
real(kind=rk), | intent(inout) | :: | numFluxBuffer(:,:) |
Working array for the modal numerical flux |
c a l c u l a t e
f l u x
o f
p u r e
m a x w e l l
e q u a t i o n
d i r e c t l y
o n
t h e
f a c e - v e c t o r
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,7,2) | |||
real(kind=rk), | intent(inout) | :: | faceFlux(nTotalFaces,nFaceDofs,7,2) | |||
integer, | intent(in) | :: | leftPos(nSides) | |||
integer, | intent(in) | :: | rightPos(nsides) | |||
integer, | intent(in) | :: | var(7) | |||
real(kind=rk), | intent(in) | :: | material_left(nSides,1,3) | |||
real(kind=rk), | intent(in) | :: | material_right(nSides,1,3) |