atl_maxwell_flux_2d_module Module

module that holds all routines to calculate the flux for hyperbolic Maxwell equations (2d, transverse electric mode formulation -TE).



Interfaces

public interface atl_maxwell_flux_2d

Interface for fluxes of pure Maxwell equations.

  • private subroutine maxwell_flux_cube_2d(left, right, left_mu, left_epsi, right_mu, right_epsi, flux)

    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.

    Arguments

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

  • private subroutine maxwell_flux_cube_vec_2d(nTotalFaces, nSides, nFaceDofs, faceRep, faceFlux, leftPos, rightPos, var, material_left, material_right)

    (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.

    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,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)
  • private subroutine maxwell_flux_nonconst_cube_vec_2d(nTotalFaces, nSides, nFaceDofs, faceRep, faceFlux, leftPos, rightPos, var, material_left, material_right, poly_proj, modalCoeffs, pntVal, nodalNumFlux, numFluxBuffer)

    (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.

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

    Read more…
    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


Subroutines

private subroutine maxwell_flux_cube_2d(left, right, left_mu, left_epsi, right_mu, right_epsi, flux)

Subroutine to calculate the flux for pure Maxwell equations without

Read more…

Arguments

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

private subroutine maxwell_flux_nonconst_cube_vec_2d(nTotalFaces, nSides, nFaceDofs, faceRep, faceFlux, leftPos, rightPos, var, material_left, material_right, poly_proj, modalCoeffs, pntVal, nodalNumFlux, numFluxBuffer)

calculate flux of pure maxwell equation directly on the face-vector

Read more…

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

Read more…
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

private subroutine maxwell_flux_cube_vec_2d(nTotalFaces, nSides, nFaceDofs, faceRep, faceFlux, leftPos, rightPos, var, material_left, material_right)

calculate flux of pure maxwell equation directly on the face-vector

Read more…

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