MFEM v4.9.0
Finite element discretization library
Loading...
Searching...
No Matches
mfem::BdrHyperbolicDirichletIntegrator Class Reference

Abstract boundary hyperbolic form integrator, assembling <F̂(u⁻,u_b,x) n, [v]> term for scalar finite elements at the boundary. More...

#include <hyperbolic.hpp>

Inheritance diagram for mfem::BdrHyperbolicDirichletIntegrator:
[legend]
Collaboration diagram for mfem::BdrHyperbolicDirichletIntegrator:
[legend]

Public Member Functions

 BdrHyperbolicDirichletIntegrator (const NumericalFlux &numFlux, VectorCoefficient &bdrState, const int IntOrderOffset=0, const real_t sign=1.)
 Construct a new BdrHyperbolicDirichletIntegrator object.
 
void ResetMaxCharSpeed ()
 Reset the maximum characteristic speed to zero.
 
real_t GetMaxCharSpeed () const
 Get the maximum characteristic speed.
 
const FluxFunctionGetFluxFunction () const
 Get the associated flux function.
 
void AssembleFaceVector (const FiniteElement &el1, const FiniteElement &el2, FaceElementTransformations &Tr, const Vector &elfun, Vector &elvect) override
 Implements <-F̂(u⁻,u_b,x) n, [v]> with abstract F̂ computed by NumericalFlux::Eval() of the numerical flux object.
 
void AssembleFaceGrad (const FiniteElement &el1, const FiniteElement &el2, FaceElementTransformations &Tr, const Vector &elfun, DenseMatrix &elmat) override
 Implements <-Ĵ(u⁻,u_b,x) n, [v]> with abstract Ĵ computed by NumericalFlux::Grad() of the numerical flux object.
 
- Public Member Functions inherited from mfem::NonlinearFormIntegrator
void SetIntegrationMode (Mode m)
 
bool Patchwise () const
 
void SetPAMemoryType (MemoryType mt)
 
virtual void AssembleElementVector (const FiniteElement &el, ElementTransformation &Tr, const Vector &elfun, Vector &elvect)
 Perform the local action of the NonlinearFormIntegrator.
 
virtual void AssembleElementGrad (const FiniteElement &el, ElementTransformation &Tr, const Vector &elfun, DenseMatrix &elmat)
 Assemble the local gradient matrix.
 
virtual real_t GetElementEnergy (const FiniteElement &el, ElementTransformation &Tr, const Vector &elfun)
 Compute the local energy.
 
virtual void AssemblePA (const FiniteElementSpace &fes)
 Method defining partial assembly.
 
virtual void AssemblePA (const FiniteElementSpace &trial_fes, const FiniteElementSpace &test_fes)
 
virtual void AssembleGradPA (const Vector &x, const FiniteElementSpace &fes)
 Prepare the integrator for partial assembly (PA) gradient evaluations on the given FE space fes at the state x.
 
virtual real_t GetLocalStateEnergyPA (const Vector &x) const
 Compute the local (to the MPI rank) energy with partial assembly.
 
virtual void AddMultPA (const Vector &x, Vector &y) const
 Method for partially assembled action.
 
virtual void AddMultGradPA (const Vector &x, Vector &y) const
 Method for partially assembled gradient action.
 
virtual void AssembleGradDiagonalPA (Vector &diag) const
 Method for computing the diagonal of the gradient with partial assembly.
 
virtual bool SupportsCeed () const
 Indicates whether this integrator can use a Ceed backend.
 
virtual void AssembleMF (const FiniteElementSpace &fes)
 Method defining fully unassembled operator.
 
virtual void AddMultMF (const Vector &x, Vector &y) const
 
ceed::OperatorGetCeedOp ()
 
virtual ~NonlinearFormIntegrator ()
 
- Public Member Functions inherited from mfem::Integrator
 Integrator (const IntegrationRule *ir=NULL)
 Create a new Integrator, optionally providing a prescribed quadrature rule to use in assembly.
 
virtual void SetIntRule (const IntegrationRule *ir)
 Prescribe a fixed IntegrationRule to use, or set to null to let the integrator choose an appropriate rule.
 
void SetIntegrationRule (const IntegrationRule &ir)
 Prescribe a fixed IntegrationRule to use. Sets the NURBS patch integration rule to null.
 
void SetNURBSPatchIntRule (NURBSMeshRules *pr)
 Sets an integration rule for use on NURBS patches.
 
bool HasNURBSPatchIntRule () const
 Check if a NURBS patch integration rule has been set.
 
const IntegrationRuleGetIntRule () const
 Directly return the IntRule pointer (possibly null) without checking for NURBS patch rules or falling back on a default.
 
const IntegrationRuleGetIntegrationRule () const
 Equivalent to GetIntRule, but retained for backward compatibility with applications.
 

Public Attributes

const int num_equations
 

Additional Inherited Members

- Public Types inherited from mfem::NonlinearFormIntegrator
enum  Mode { ELEMENTWISE = 0 , PATCHWISE = 1 , PATCHWISE_REDUCED = 2 }
 
- Protected Member Functions inherited from mfem::NonlinearFormIntegrator
 NonlinearFormIntegrator (const IntegrationRule *ir=NULL)
 
- Protected Member Functions inherited from mfem::Integrator
const IntegrationRuleGetIntegrationRule (const FiniteElement &trial_fe, const FiniteElement &test_fe, const ElementTransformation &trans) const
 Returns an integration rule based on the arguments and internal state of the Integrator object.
 
const IntegrationRuleGetIntegrationRule (const FiniteElement &el, const ElementTransformation &trans) const
 Returns an integration rule based on the arguments and internal state. (Version for identical trial_fe and test_fe)
 
virtual const IntegrationRuleGetDefaultIntegrationRule (const FiniteElement &trial_fe, const FiniteElement &test_fe, const ElementTransformation &trans) const
 Subclasses should override to choose a default integration rule.
 
- Protected Attributes inherited from mfem::NonlinearFormIntegrator
Mode integrationMode = Mode::ELEMENTWISE
 
ceed::OperatorceedOp
 
MemoryType pa_mt = MemoryType::DEFAULT
 
- Protected Attributes inherited from mfem::Integrator
const IntegrationRuleIntRule
 
NURBSMeshRulespatchRules = nullptr
 

Detailed Description

Abstract boundary hyperbolic form integrator, assembling <F̂(u⁻,u_b,x) n, [v]> term for scalar finite elements at the boundary.

This form integrator is coupled with a NumericalFlux that implements the numerical flux F̂ at the boundary faces. The flux F is obtained from the FluxFunction assigned to the aforementioned NumericalFlux with the given boundary coefficient for the state u_b.

Note the class can be used for imposing conditions on interior interfaces.

Definition at line 426 of file hyperbolic.hpp.

Constructor & Destructor Documentation

◆ BdrHyperbolicDirichletIntegrator()

mfem::BdrHyperbolicDirichletIntegrator::BdrHyperbolicDirichletIntegrator ( const NumericalFlux & numFlux,
VectorCoefficient & bdrState,
const int IntOrderOffset = 0,
const real_t sign = 1. )

Construct a new BdrHyperbolicDirichletIntegrator object.

Parameters
[in]numFluxnumerical flux
[in]bdrStateboundary state coefficient
[in]IntOrderOffsetintegration order offset
[in]signsign of the convection term

Definition at line 420 of file hyperbolic.cpp.

Member Function Documentation

◆ AssembleFaceGrad()

void mfem::BdrHyperbolicDirichletIntegrator::AssembleFaceGrad ( const FiniteElement & el1,
const FiniteElement & el2,
FaceElementTransformations & Tr,
const Vector & elfun,
DenseMatrix & elmat )
overridevirtual

Implements <-Ĵ(u⁻,u_b,x) n, [v]> with abstract Ĵ computed by NumericalFlux::Grad() of the numerical flux object.

Parameters
[in]el1finite element of the interior element
[in]el2not used
[in]Trface element transformations
[in]elfunlocal coefficient of basis for the interior element
[out]elmatevaluated Jacobian matrix <-Ĵ(u⁻,u_b,x) n, [v]>

Reimplemented from mfem::NonlinearFormIntegrator.

Definition at line 524 of file hyperbolic.cpp.

◆ AssembleFaceVector()

void mfem::BdrHyperbolicDirichletIntegrator::AssembleFaceVector ( const FiniteElement & el1,
const FiniteElement & el2,
FaceElementTransformations & Tr,
const Vector & elfun,
Vector & elvect )
overridevirtual

Implements <-F̂(u⁻,u_b,x) n, [v]> with abstract F̂ computed by NumericalFlux::Eval() of the numerical flux object.

Parameters
[in]el1finite element of the interior element
[in]el2not used
[in]Trface element transformations
[in]elfunlocal coefficient of basis for the interior element
[out]elvectevaluated dual vector <-F̂(u⁻,u_b,x) n, [v]>

Reimplemented from mfem::NonlinearFormIntegrator.

Definition at line 445 of file hyperbolic.cpp.

◆ GetFluxFunction()

const FluxFunction & mfem::BdrHyperbolicDirichletIntegrator::GetFluxFunction ( ) const
inline

Get the associated flux function.

Definition at line 472 of file hyperbolic.hpp.

◆ GetMaxCharSpeed()

real_t mfem::BdrHyperbolicDirichletIntegrator::GetMaxCharSpeed ( ) const
inline

Get the maximum characteristic speed.

Definition at line 469 of file hyperbolic.hpp.

◆ ResetMaxCharSpeed()

void mfem::BdrHyperbolicDirichletIntegrator::ResetMaxCharSpeed ( )
inline

Reset the maximum characteristic speed to zero.

Definition at line 466 of file hyperbolic.hpp.

Member Data Documentation

◆ num_equations

const int mfem::BdrHyperbolicDirichletIntegrator::num_equations

Definition at line 449 of file hyperbolic.hpp.


The documentation for this class was generated from the following files: