atl_maxwell_hc_flux Interface

public interface atl_maxwell_hc_flux

Interface for fluxes of Maxwell equations with hyperbolic divergence cleaning.

Calls

interface~~atl_maxwell_hc_flux~~CallsGraph interface~atl_maxwell_hc_flux atl_maxwell_hc_flux proc~maxwell_hc_flux_cube maxwell_hc_flux_cube interface~atl_maxwell_hc_flux->proc~maxwell_hc_flux_cube proc~maxwell_hc_flux_nonconst_cube_vec maxwell_hc_flux_nonconst_cube_vec interface~atl_maxwell_hc_flux->proc~maxwell_hc_flux_nonconst_cube_vec proc~maxwell_hc_flux_cube_vec maxwell_hc_flux_cube_vec interface~atl_maxwell_hc_flux->proc~maxwell_hc_flux_cube_vec proc~atl_physfluxmaxwelldivcor atl_physFluxMaxwellDivCor proc~maxwell_hc_flux_cube->proc~atl_physfluxmaxwelldivcor proc~maxwell_hc_flux_nonconst_cube_vec->proc~maxwell_hc_flux_cube interface~ply_poly_project_m2n ply_poly_project_m2n proc~maxwell_hc_flux_nonconst_cube_vec->interface~ply_poly_project_m2n proc~ply_convertfromoversample ply_convertFromOversample proc~maxwell_hc_flux_nonconst_cube_vec->proc~ply_convertfromoversample proc~ply_convert2oversample ply_convert2oversample proc~maxwell_hc_flux_nonconst_cube_vec->proc~ply_convert2oversample interface~ply_poly_project_n2m ply_poly_project_n2m proc~maxwell_hc_flux_nonconst_cube_vec->interface~ply_poly_project_n2m proc~maxwell_hc_flux_cube_vec->proc~atl_physfluxmaxwelldivcor proc~ply_poly_project_m2n_multivar ply_poly_project_m2n_multiVar interface~ply_poly_project_m2n->proc~ply_poly_project_m2n_multivar proc~ply_convertfromoversample_3d ply_convertFromOversample_3d proc~ply_convertfromoversample->proc~ply_convertfromoversample_3d proc~ply_convertfromoversample_2d ply_convertFromOversample_2d proc~ply_convertfromoversample->proc~ply_convertfromoversample_2d proc~ply_convertfromoversample_1d ply_convertFromOversample_1d proc~ply_convertfromoversample->proc~ply_convertfromoversample_1d proc~ply_convert2oversample_1d ply_convert2oversample_1d proc~ply_convert2oversample->proc~ply_convert2oversample_1d proc~ply_convert2oversample_3d ply_convert2oversample_3d proc~ply_convert2oversample->proc~ply_convert2oversample_3d proc~ply_convert2oversample_2d ply_convert2oversample_2d proc~ply_convert2oversample->proc~ply_convert2oversample_2d proc~ply_poly_project_n2m_multivar ply_poly_project_n2m_multiVar interface~ply_poly_project_n2m->proc~ply_poly_project_n2m_multivar proc~ply_l2p_trafo_2d ply_l2p_trafo_2D proc~ply_poly_project_m2n_multivar->proc~ply_l2p_trafo_2d interface~ply_legtopnt_3d ply_LegTopnt_3D proc~ply_poly_project_m2n_multivar->interface~ply_legtopnt_3d proc~ply_fxt_m2n_1d ply_fxt_m2n_1D proc~ply_poly_project_m2n_multivar->proc~ply_fxt_m2n_1d proc~ply_l2p_trafo_3d ply_l2p_trafo_3D proc~ply_poly_project_m2n_multivar->proc~ply_l2p_trafo_3d proc~ply_l2p_trafo_1d ply_l2p_trafo_1D proc~ply_poly_project_m2n_multivar->proc~ply_l2p_trafo_1d interface~ply_legtopnt_2d ply_legToPnt_2D proc~ply_poly_project_m2n_multivar->interface~ply_legtopnt_2d proc~ply_fxt_m2n_3d ply_fxt_m2n_3D proc~ply_poly_project_m2n_multivar->proc~ply_fxt_m2n_3d proc~ply_fxt_m2n_2d ply_fxt_m2n_2D proc~ply_poly_project_m2n_multivar->proc~ply_fxt_m2n_2d proc~ply_poly_project_n2m_multivar->proc~ply_l2p_trafo_2d interface~ply_pnttoleg_2d ply_pntToLeg_2D proc~ply_poly_project_n2m_multivar->interface~ply_pnttoleg_2d interface~ply_pnttoleg_3d ply_pntToLeg_3D proc~ply_poly_project_n2m_multivar->interface~ply_pnttoleg_3d proc~ply_poly_project_n2m_multivar->proc~ply_l2p_trafo_3d proc~ply_poly_project_n2m_multivar->proc~ply_l2p_trafo_1d proc~ply_fxt_n2m_3d ply_fxt_n2m_3D proc~ply_poly_project_n2m_multivar->proc~ply_fxt_n2m_3d proc~ply_fxt_n2m_2d ply_fxt_n2m_2D proc~ply_poly_project_n2m_multivar->proc~ply_fxt_n2m_2d proc~ply_fxt_n2m_1d ply_fxt_n2m_1D proc~ply_poly_project_n2m_multivar->proc~ply_fxt_n2m_1d

Called by

interface~~atl_maxwell_hc_flux~~CalledByGraph interface~atl_maxwell_hc_flux atl_maxwell_hc_flux proc~atl_modg_maxwelldivcor_numflux atl_modg_maxwellDivCor_numFlux proc~atl_modg_maxwelldivcor_numflux->interface~atl_maxwell_hc_flux proc~compute_rhs_cubes_modg compute_rhs_cubes_modg proc~compute_rhs_cubes_modg->proc~atl_modg_maxwelldivcor_numflux proc~compute_rhs_cubes compute_rhs_cubes proc~compute_rhs_cubes->proc~compute_rhs_cubes_modg interface~atl_compute_rhs atl_compute_rhs interface~atl_compute_rhs->proc~compute_rhs_cubes

Contents


Module Procedures

private subroutine maxwell_hc_flux_cube(left, right, mat_left, mat_right, flux)

Subroutine to calculate the flux for pure Maxwell equations with

Read more…

Arguments

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

Read more…

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

calculate flux of maxwell equation with hyperbolic divergence

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

Read more…

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)

calculate flux of maxwell equation with hyperbolic divergence

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