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


Uses

  • module~~atl_maxwell_flux_2d_module~~UsesGraph module~atl_maxwell_flux_2d_module atl_maxwell_flux_2d_module env_module env_module module~atl_maxwell_flux_2d_module->env_module module~ply_poly_project_module ply_poly_project_module module~atl_maxwell_flux_2d_module->module~ply_poly_project_module module~ply_poly_project_module->env_module module~ply_dof_module ply_dof_module module~ply_poly_project_module->module~ply_dof_module module~ply_dynarray_project_module ply_dynarray_project_module module~ply_poly_project_module->module~ply_dynarray_project_module module~ply_fxt_module ply_fxt_module module~ply_poly_project_module->module~ply_fxt_module module~ply_l2p_module ply_l2p_module module~ply_poly_project_module->module~ply_l2p_module module~ply_legfpt_2d_module ply_legFpt_2D_module module~ply_poly_project_module->module~ply_legfpt_2d_module module~ply_legfpt_3d_module ply_legFpt_3D_module module~ply_poly_project_module->module~ply_legfpt_3d_module module~ply_legfpt_module ply_legFpt_module module~ply_poly_project_module->module~ply_legfpt_module module~ply_nodes_header_module ply_nodes_header_module module~ply_poly_project_module->module~ply_nodes_header_module module~ply_nodes_module ply_nodes_module module~ply_poly_project_module->module~ply_nodes_module module~ply_prj_header_module ply_prj_header_module module~ply_poly_project_module->module~ply_prj_header_module tem_aux_module tem_aux_module module~ply_poly_project_module->tem_aux_module tem_logging_module tem_logging_module module~ply_poly_project_module->tem_logging_module tem_tools_module tem_tools_module module~ply_poly_project_module->tem_tools_module module~ply_dof_module->env_module module~ply_dynarray_project_module->env_module module~ply_dynarray_project_module->module~ply_prj_header_module module~ply_dynarray_project_module->tem_logging_module aotus_module aotus_module module~ply_dynarray_project_module->aotus_module module~ply_fxt_module->env_module module~fxt_fwrap fxt_fwrap module~ply_fxt_module->module~fxt_fwrap module~ply_fxt_header_module ply_fxt_header_module module~ply_fxt_module->module~ply_fxt_header_module module~ply_l2p_module->env_module module~ply_l2p_module->tem_aux_module module~ply_l2p_module->tem_logging_module module~ply_l2p_header_module ply_l2p_header_module module~ply_l2p_module->module~ply_l2p_header_module module~ply_lagrange_module ply_lagrange_module module~ply_l2p_module->module~ply_lagrange_module module~ply_modg_basis_module ply_modg_basis_module module~ply_l2p_module->module~ply_modg_basis_module module~ply_nodeset_module ply_nodeset_module module~ply_l2p_module->module~ply_nodeset_module module~ply_space_integration_module ply_space_integration_module module~ply_l2p_module->module~ply_space_integration_module tem_compileconf_module tem_compileconf_module module~ply_l2p_module->tem_compileconf_module module~ply_legfpt_2d_module->env_module module~ply_legfpt_2d_module->module~ply_legfpt_module iso_c_binding iso_c_binding module~ply_legfpt_2d_module->iso_c_binding module~fftw_wrap fftw_wrap module~ply_legfpt_2d_module->module~fftw_wrap module~ply_legfpt_3d_module->env_module module~ply_legfpt_3d_module->module~ply_legfpt_module module~ply_legfpt_3d_module->iso_c_binding module~ply_legfpt_3d_module->module~fftw_wrap module~ply_legfpt_module->env_module module~ply_legfpt_module->iso_c_binding module~ply_legfpt_module->module~fftw_wrap module~ply_fpt_header_module ply_fpt_header_module module~ply_legfpt_module->module~ply_fpt_header_module module~ply_polybaseexc_module ply_polyBaseExc_module module~ply_legfpt_module->module~ply_polybaseexc_module module~ply_legfpt_module->tem_compileconf_module module~ply_nodes_header_module->env_module module~ply_nodes_module->env_module module~ply_nodes_module->module~ply_nodes_header_module module~ply_nodes_module->tem_aux_module module~ply_nodes_module->aotus_module module~ply_nodes_module->module~fftw_wrap module~ply_nodes_module->module~ply_nodeset_module module~ply_prj_header_module->env_module module~ply_prj_header_module->tem_aux_module module~ply_prj_header_module->tem_logging_module module~ply_prj_header_module->tem_tools_module aot_out_module aot_out_module module~ply_prj_header_module->aot_out_module module~ply_prj_header_module->aotus_module module~ply_prj_header_module->module~fftw_wrap module~ply_prj_header_module->module~ply_fpt_header_module module~ply_prj_header_module->module~ply_fxt_header_module module~ply_prj_header_module->module~ply_l2p_header_module

Used by

  • module~~atl_maxwell_flux_2d_module~~UsedByGraph module~atl_maxwell_flux_2d_module atl_maxwell_flux_2d_module module~atl_modg_2d_maxwell_kernel_module atl_modg_2d_maxwell_kernel_module module~atl_modg_2d_maxwell_kernel_module->module~atl_maxwell_flux_2d_module proc~compute_rhs_cubes_modg_2d compute_rhs_cubes_modg_2d proc~compute_rhs_cubes_modg_2d->module~atl_modg_2d_maxwell_kernel_module

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)

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

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)

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

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)

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

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)