atl_maxwell_flux_module Module

module that holds all routines to calculate the flux for hyperbolic Maxwell equations.


Uses

  • module~~atl_maxwell_flux_module~~UsesGraph module~atl_maxwell_flux_module atl_maxwell_flux_module env_module env_module module~atl_maxwell_flux_module->env_module module~ply_oversample_module ply_oversample_module module~atl_maxwell_flux_module->module~ply_oversample_module module~ply_poly_project_module ply_poly_project_module module~atl_maxwell_flux_module->module~ply_poly_project_module module~ply_oversample_module->env_module module~ply_oversample_module->module~ply_poly_project_module module~ply_dof_module ply_dof_module module~ply_oversample_module->module~ply_dof_module module~ply_poly_project_module->env_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_module~~UsedByGraph module~atl_maxwell_flux_module atl_maxwell_flux_module module~atl_modg_maxwell_kernel_module atl_modg_maxwell_kernel_module module~atl_modg_maxwell_kernel_module->module~atl_maxwell_flux_module module~atl_modg_maxwelldivcor_kernel_module atl_modg_maxwellDivCor_kernel_module module~atl_modg_maxwelldivcor_kernel_module->module~atl_maxwell_flux_module proc~compute_rhs_cubes_modg compute_rhs_cubes_modg proc~compute_rhs_cubes_modg->module~atl_modg_maxwell_kernel_module proc~compute_rhs_cubes_modg->module~atl_modg_maxwelldivcor_kernel_module

Interfaces

public interface atl_maxwell_flux

Interface for fluxes of pure Maxwell equations.

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

    Subroutine to calculate the flux for pure Maxwell equations without any divergence cleaning on the reference cubic face.

    This subroutine calculates the flux of the Maxwell equation on the reference cubic face. This implementation is based on the this article: A three-dimensional finite-volume solver for Maxwell equations with divergence cleaning on unstructured meshes, C.D. Munz, P. Ommes, R. Schneider, Computer Physiscs communications 130, 83-117, 1999. Additionally we splitted the correction technique from the Maxwell fluxes themself to be able to use the fluxes for Maxwell in combination with an arbitrary divergence correction technique. Please notice that this flux function assumes constant material parameters in both cells.

    Arguments

    Type IntentOptional Attributes Name
    real(kind=rk), intent(in) :: left(6)

    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) \f$ where E and B denoted electric field vetor and magnetic field (also called magnetic induction) vector.

    real(kind=rk), intent(in) :: right(6)

    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) 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(6)

    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(nTotalFaces, nSides, nFaceDofs, faceRep, faceFlux, leftPos, rightPos, var, material_left, material_right)

    face-vector

    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,6,2)
    real(kind=rk), intent(inout) :: faceFlux(nTotalFaces,nFaceDofs,6,2)
    integer, intent(in) :: leftPos(nSides)
    integer, intent(in) :: rightPos(nsides)
    integer, intent(in) :: var(6)
    real(kind=rk), intent(in) :: material_left(nSides,1,2)
    real(kind=rk), intent(in) :: material_right(nSides,1,2)
  • private subroutine maxwell_flux_nonconst_cube_vec(nTotalFaces, nSides, nFaceDofs, faceRep, faceFlux, leftPos, rightPos, var, material_left, material_right, poly_proj, modalCoeffs, pntVal, nodalNumFlux, numFluxBuffer)

    face-vector

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

    The modal representation on the faces, left and right trace.

    real(kind=rk), intent(inout) :: faceFlux(nTotalFaces,nFaceDofs,6,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(6)

    Variable rotation indices

    real(kind=rk), intent(in) :: material_left(nSides,nFaceDofs,2)

    Material parameters for the left faces.

    real(kind=rk), intent(in) :: material_right(nSides,nFaceDofs,2)

    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

public interface atl_maxwell_hc_flux

Interface for fluxes of Maxwell equations with hyperbolic divergence cleaning.

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

    hyperbolic divergence cleaning on the reference cubic face.

    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)

    cleaning directly on the face-vector

    This subroutine assumes the Maxwell equations with D and B as input variables. Furthermore, it is able to handle jumping material parameters.

    Assign the same flux for left and right element

    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)

    cleaning directly on the face-vector

    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.

    ! Get the material of the left and right element at the current ! face. ! ... left material left_mu = material_left(iSide,iPoint,1) left_epsi = material_left(iSide,iPoint,2) left_gam = material_left(iSide,iPoint,3) left_chi = material_left(iSide,iPoint,4) ! ... right material right_mu = material_right(iSide,iPoint,1) right_epsi = material_right(iSide,iPoint,2) right_gam = material_right(iSide,iPoint,3) right_chi = material_right(iSide,iPoint,4)

    & left_mu = left_mu, & & left_epsi = left_epsi, & & left_gam = left_gam, & & left_chi = left_chi, & & right_mu = right_mu, & & right_epsi = right_epsi, & & right_gam = right_gam, & & right_chi = right_chi, &

    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


Functions

public function atl_physFluxMaxwellDivCor(state, material) result(flux)

Function for physical flux of the Maxwell equations in terms of D and B.

Arguments

Type IntentOptional Attributes Name
real(kind=rk), intent(in) :: state(8)

State to compute the fluxes from (D,B).

real(kind=rk), intent(in) :: material(4)

Material parameters (mu, epsilon) the flux calculation

Return Value real(kind=rk), (8)

The resulting flux in x direction


Subroutines

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

Subroutine to calculate the flux for pure Maxwell equations without any divergence cleaning on the reference cubic face.

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=rk), intent(in) :: left(6)

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) \f$ where E and B denoted electric field vetor and magnetic field (also called magnetic induction) vector.

real(kind=rk), intent(in) :: right(6)

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) 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(6)

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

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

The modal representation on the faces, left and right trace.

real(kind=rk), intent(inout) :: faceFlux(nTotalFaces,nFaceDofs,6,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(6)

Variable rotation indices

real(kind=rk), intent(in) :: material_left(nSides,nFaceDofs,2)

Material parameters for the left faces.

real(kind=rk), intent(in) :: material_right(nSides,nFaceDofs,2)

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

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,6,2)
real(kind=rk), intent(inout) :: faceFlux(nTotalFaces,nFaceDofs,6,2)
integer, intent(in) :: leftPos(nSides)
integer, intent(in) :: rightPos(nsides)
integer, intent(in) :: var(6)
real(kind=rk), intent(in) :: material_left(nSides,1,2)
real(kind=rk), intent(in) :: material_right(nSides,1,2)

private subroutine maxwell_hc_flux_cube(left, right, mat_left, mat_right, 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

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)

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

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)

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

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