20#ifndef LIBMESH_DG_FEM_CONTEXT_H
21#define LIBMESH_DG_FEM_CONTEXT_H
24#include "libmesh/fem_context.h"
238 template<
typename OutputShape>
299template<
typename OutputShape>
This class extends FEMContext in order to provide extra data required to perform local element residu...
DenseSubMatrix< Number > & get_elem_neighbor_jacobian(unsigned int var1, unsigned int var2)
Non-const accessor for element-neighbor Jacobian of particular variables corresponding to the variabl...
DenseMatrix< Number > & get_neighbor_elem_jacobian()
Non-const accessor for element Jacobian.
void set_neighbor(const Elem &neighbor)
Set the neighbor element which we will use to assemble DG terms.
std::vector< std::vector< std::unique_ptr< DenseSubMatrix< Number > > > > _elem_elem_subjacobians
DenseMatrix< Number > _elem_elem_jacobian
The DG Jacobian terms.
std::vector< std::vector< dof_id_type > > _neighbor_dof_indices_var
const DenseSubMatrix< Number > & get_neighbor_neighbor_jacobian(unsigned int var1, unsigned int var2) const
Const accessor for neighbor-neighbor Jacobian of particular variables corresponding to the variable i...
bool _dg_terms_active
Boolean flag to indicate whether or not the DG terms have been assembled and should be used in the gl...
std::vector< std::vector< std::unique_ptr< DenseSubMatrix< Number > > > > _elem_neighbor_subjacobians
DenseMatrix< Number > _neighbor_neighbor_jacobian
const std::vector< dof_id_type > & get_neighbor_dof_indices() const
Accessor for neighbor dof indices.
virtual void side_fe_reinit() override
Override side_fe_reinit to set a boolean flag so that by default DG terms are assumed to be inactive.
virtual ~DGFEMContext()
Destructor.
const DenseSubMatrix< Number > & get_elem_elem_jacobian(unsigned int var1, unsigned int var2) const
Const accessor for element-element Jacobian of particular variables corresponding to the variable ind...
DenseVector< Number > _neighbor_residual
Residual vector of the neighbor component.
std::map< FEType, std::unique_ptr< FEAbstract > > _neighbor_side_fe
Finite element objects for each variable's sides on the neighbor element.
std::vector< dof_id_type > _neighbor_dof_indices
Global Degree of freedom index lists for the neighbor element.
DenseMatrix< Number > & get_elem_elem_jacobian()
Non-const accessor for element-element Jacobian.
std::vector< std::vector< std::unique_ptr< DenseSubMatrix< Number > > > > _neighbor_neighbor_subjacobians
DenseMatrix< Number > & get_elem_neighbor_jacobian()
Non-const accessor for element -neighborJacobian.
void get_neighbor_side_fe(unsigned int var, FEGenericBase< OutputShape > *&fe) const
Accessor for neighbor edge/face (2D/3D) finite element object for variable var.
const std::vector< dof_id_type > & get_neighbor_dof_indices(unsigned int var) const
Accessor for element dof indices of a particular variable corresponding to the index argument.
const DenseSubMatrix< Number > & get_elem_neighbor_jacobian(unsigned int var1, unsigned int var2) const
Const accessor for element-neighbor Jacobian of particular variables corresponding to the variable in...
DenseSubMatrix< Number > & get_elem_elem_jacobian(unsigned int var1, unsigned int var2)
Non-const accessor for element-element Jacobian of particular variables corresponding to the variable...
const DenseMatrix< Number > & get_neighbor_neighbor_jacobian() const
Const accessor for element-neighbor Jacobian.
const Elem * _neighbor
Current neighbor element for assembling DG terms.
std::vector< std::unique_ptr< DenseSubVector< Number > > > _neighbor_subresiduals
Element residual subvectors and Jacobian submatrices.
const DenseMatrix< Number > & get_elem_elem_jacobian() const
Const accessor for element-element Jacobian.
DenseMatrix< Number > _neighbor_elem_jacobian
void neighbor_side_fe_reinit()
Initialize neighbor side data needed to assemble DG terms.
const DenseSubMatrix< Number > & get_neighbor_elem_jacobian(unsigned int var1, unsigned int var2) const
Const accessor for neighbor-element Jacobian of particular variables corresponding to the variable in...
std::vector< std::vector< std::unique_ptr< DenseSubMatrix< Number > > > > _neighbor_elem_subjacobians
const DenseVector< Number > & get_neighbor_residual() const
Const accessor for neighbor residual.
DenseSubMatrix< Number > & get_neighbor_neighbor_jacobian(unsigned int var1, unsigned int var2)
Non-const accessor for neighbor-neighbor Jacobian of particular variables corresponding to the variab...
DenseSubVector< Number > & get_neighbor_residual(unsigned int var)
Non-const accessor for neighbor residual of a particular variable corresponding to the variable index...
DenseMatrix< Number > _elem_neighbor_jacobian
DenseVector< Number > & get_neighbor_residual()
Non-const accessor for neighbor residual.
const Elem & get_neighbor() const
Accessor for current neighbor Elem object for assembling DG terms.
DenseMatrix< Number > & get_neighbor_neighbor_jacobian()
Non-const accessor for element Jacobian.
DenseSubMatrix< Number > & get_neighbor_elem_jacobian(unsigned int var1, unsigned int var2)
Non-const accessor for neighbor-element Jacobian of particular variables corresponding to the variabl...
bool dg_terms_are_active() const
Are the DG terms active, i.e.
const DenseMatrix< Number > & get_neighbor_elem_jacobian() const
Const accessor for element-neighbor Jacobian.
const DenseMatrix< Number > & get_elem_neighbor_jacobian() const
Const accessor for element-neighbor Jacobian.
std::vector< FEAbstract * > _neighbor_side_fe_var
Pointers to the same finite element objects on the neighbor element, but indexed by variable number.
const DenseSubVector< Number > & get_neighbor_residual(unsigned int var) const
Const accessor for neighbor residual of a particular variable corresponding to the variable index arg...
Defines a dense matrix for use in Finite Element-type computations.
Defines a dense submatrix for use in Finite Element-type computations.
Defines a dense subvector for use in finite element computations.
Defines a dense vector for use in Finite Element-type computations.
This is the base class from which all geometric element types are derived.
This class forms the foundation from which generic finite elements may be derived.
This class provides all data required for a physics package (e.g.
Manages consistently variables, degrees of freedom, and coefficient vectors.
The libMesh namespace provides an interface to certain functionality in the library.