MFEM  v4.6.0
Finite element discretization library
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
mfem::DGDiffusionBR2Integrator Class Reference

#include <bilininteg.hpp>

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

Public Member Functions

 DGDiffusionBR2Integrator (class FiniteElementSpace &fes, double e=1.0)
 
 DGDiffusionBR2Integrator (class FiniteElementSpace &fes, Coefficient &Q_, double e=1.0)
 
MFEM_DEPRECATED DGDiffusionBR2Integrator (class FiniteElementSpace *fes, double e=1.0)
 
virtual void AssembleFaceMatrix (const FiniteElement &el1, const FiniteElement &el2, FaceElementTransformations &Trans, DenseMatrix &elmat)
 
virtual void AssembleFaceMatrix (const FiniteElement &el1, const FiniteElement &el2, FaceElementTransformations &Trans, DenseMatrix &elmat)
 
virtual void AssembleFaceMatrix (const FiniteElement &trial_face_fe, const FiniteElement &test_fe1, const FiniteElement &test_fe2, FaceElementTransformations &Trans, DenseMatrix &elmat)
 
- Public Member Functions inherited from mfem::BilinearFormIntegrator
virtual void AssemblePA (const FiniteElementSpace &fes)
 Method defining partial assembly. More...
 
virtual void AssemblePA (const FiniteElementSpace &trial_fes, const FiniteElementSpace &test_fes)
 
virtual void AssembleNURBSPA (const FiniteElementSpace &fes)
 Method defining partial assembly on NURBS patches. More...
 
virtual void AssemblePABoundary (const FiniteElementSpace &fes)
 
virtual void AssemblePAInteriorFaces (const FiniteElementSpace &fes)
 
virtual void AssemblePABoundaryFaces (const FiniteElementSpace &fes)
 
virtual void AssembleDiagonalPA (Vector &diag)
 Assemble diagonal and add it to Vector diag. More...
 
virtual void AssembleDiagonalPA_ADAt (const Vector &D, Vector &diag)
 Assemble diagonal of ADA^T (A is this integrator) and add it to diag. More...
 
virtual void AddMultPA (const Vector &x, Vector &y) const
 Method for partially assembled action. More...
 
virtual void AddMultNURBSPA (const Vector &x, Vector &y) const
 Method for partially assembled action on NURBS patches. More...
 
virtual void AddMultTransposePA (const Vector &x, Vector &y) const
 Method for partially assembled transposed action. More...
 
virtual void AssembleEA (const FiniteElementSpace &fes, Vector &emat, const bool add=true)
 Method defining element assembly. More...
 
virtual void AssembleMF (const FiniteElementSpace &fes)
 Method defining matrix-free assembly. More...
 
virtual void AddMultMF (const Vector &x, Vector &y) const
 
virtual void AddMultTransposeMF (const Vector &x, Vector &y) const
 
virtual void AssembleDiagonalMF (Vector &diag)
 Assemble diagonal and add it to Vector diag. More...
 
virtual void AssembleEAInteriorFaces (const FiniteElementSpace &fes, Vector &ea_data_int, Vector &ea_data_ext, const bool add=true)
 
virtual void AssembleEABoundaryFaces (const FiniteElementSpace &fes, Vector &ea_data_bdr, const bool add=true)
 
virtual void AssembleElementMatrix (const FiniteElement &el, ElementTransformation &Trans, DenseMatrix &elmat)
 Given a particular Finite Element computes the element matrix elmat. More...
 
virtual void AssembleElementMatrix2 (const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &elmat)
 
virtual void AssemblePatchMatrix (const int patch, const FiniteElementSpace &fes, SparseMatrix *&smat)
 
virtual void AssembleFaceMatrix (const FiniteElement &trial_face_fe, const FiniteElement &test_fe1, const FiniteElement &test_fe2, FaceElementTransformations &Trans, DenseMatrix &elmat)
 
virtual void AssembleTraceFaceMatrix (int elem, const FiniteElement &trial_face_fe, const FiniteElement &test_fe, FaceElementTransformations &Trans, DenseMatrix &elmat)
 
virtual void AssembleElementVector (const FiniteElement &el, ElementTransformation &Tr, const Vector &elfun, Vector &elvect)
 Perform the local action of the BilinearFormIntegrator. Note that the default implementation in the base class is general but not efficient. More...
 
virtual void AssembleFaceVector (const FiniteElement &el1, const FiniteElement &el2, FaceElementTransformations &Tr, const Vector &elfun, Vector &elvect)
 Perform the local action of the BilinearFormIntegrator resulting from a face integral term. Note that the default implementation in the base class is general but not efficient. More...
 
virtual void AssembleElementGrad (const FiniteElement &el, ElementTransformation &Tr, const Vector &elfun, DenseMatrix &elmat)
 Assemble the local gradient matrix. More...
 
virtual void AssembleFaceGrad (const FiniteElement &el1, const FiniteElement &el2, FaceElementTransformations &Tr, const Vector &elfun, DenseMatrix &elmat)
 Assemble the local action of the gradient of the NonlinearFormIntegrator resulting from a face integral term. More...
 
virtual void ComputeElementFlux (const FiniteElement &el, ElementTransformation &Trans, Vector &u, const FiniteElement &fluxelem, Vector &flux, bool with_coef=true, const IntegrationRule *ir=NULL)
 Virtual method required for Zienkiewicz-Zhu type error estimators. More...
 
virtual double ComputeFluxEnergy (const FiniteElement &fluxelem, ElementTransformation &Trans, Vector &flux, Vector *d_energy=NULL)
 Virtual method required for Zienkiewicz-Zhu type error estimators. More...
 
virtual ~BilinearFormIntegrator ()
 
virtual void AssemblePA (const FiniteElementSpace &fes)
 Method defining partial assembly. More...
 
virtual void AssemblePA (const FiniteElementSpace &trial_fes, const FiniteElementSpace &test_fes)
 
- Public Member Functions inherited from mfem::NonlinearFormIntegrator
virtual void SetIntRule (const IntegrationRule *ir)
 Prescribe a fixed IntegrationRule to use (when ir != NULL) or let the integrator choose (when ir == NULL). More...
 
void SetIntegrationMode (Mode m)
 
void SetNURBSPatchIntRule (NURBSMeshRules *pr)
 For patchwise integration, SetNURBSPatchIntRule must be called. More...
 
bool HasNURBSPatchIntRule () const
 
bool Patchwise () const
 
void SetIntegrationRule (const IntegrationRule &ir)
 Prescribe a fixed IntegrationRule to use. More...
 
void SetPAMemoryType (MemoryType mt)
 
const IntegrationRuleGetIntegrationRule () const
 Get the integration rule of the integrator (possibly NULL). More...
 
virtual double GetElementEnergy (const FiniteElement &el, ElementTransformation &Tr, const Vector &elfun)
 Compute the local energy. More...
 
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. More...
 
virtual double GetLocalStateEnergyPA (const Vector &x) const
 Compute the local (to the MPI rank) energy with partial assembly. More...
 
virtual void AddMultGradPA (const Vector &x, Vector &y) const
 Method for partially assembled gradient action. More...
 
virtual void AssembleGradDiagonalPA (Vector &diag) const
 Method for computing the diagonal of the gradient with partial assembly. More...
 
virtual bool SupportsCeed () const
 Indicates whether this integrator can use a Ceed backend. More...
 
ceed::OperatorGetCeedOp ()
 
virtual ~NonlinearFormIntegrator ()
 

Protected Member Functions

void PrecomputeMassInverse (class FiniteElementSpace &fes)
 Precomputes the inverses (LU factorizations) of the local mass matrices. More...
 
- Protected Member Functions inherited from mfem::BilinearFormIntegrator
 BilinearFormIntegrator (const IntegrationRule *ir=NULL)
 
- Protected Member Functions inherited from mfem::NonlinearFormIntegrator
 NonlinearFormIntegrator (const IntegrationRule *ir=NULL)
 

Protected Attributes

double eta
 
Array< double > Minv
 
Array< int > ipiv
 
Array< int > ipiv_offsets
 
Array< int > Minv_offsets
 
CoefficientQ
 
Vector shape1
 
Vector shape2
 
DenseMatrix R11
 
DenseMatrix R12
 
DenseMatrix R21
 
DenseMatrix R22
 
DenseMatrix MinvR11
 
DenseMatrix MinvR12
 
DenseMatrix MinvR21
 
DenseMatrix MinvR22
 
DenseMatrix Re
 
DenseMatrix MinvRe
 
- Protected Attributes inherited from mfem::NonlinearFormIntegrator
const IntegrationRuleIntRule
 
Mode integrationMode = Mode::ELEMENTWISE
 
NURBSMeshRulespatchRules = nullptr
 
ceed::OperatorceedOp
 
MemoryType pa_mt = MemoryType::DEFAULT
 

Additional Inherited Members

- Public Types inherited from mfem::NonlinearFormIntegrator
enum  Mode { ELEMENTWISE = 0, PATCHWISE = 1, PATCHWISE_REDUCED = 2 }
 

Detailed Description

Integrator for the "BR2" diffusion stabilization term

sum_e eta (r_e([u]), r_e([v]))

where r_e is the lifting operator defined on each edge e (potentially weighted by a coefficient Q). The parameter eta can be chosen to be one to obtain a stable discretization. The constructor for this integrator requires the finite element space because the lifting operator depends on the element-wise inverse mass matrix.

BR2 stands for the second method of Bassi and Rebay:

Definition at line 3206 of file bilininteg.hpp.

Constructor & Destructor Documentation

◆ DGDiffusionBR2Integrator() [1/3]

mfem::DGDiffusionBR2Integrator::DGDiffusionBR2Integrator ( class FiniteElementSpace fes,
double  e = 1.0 
)

◆ DGDiffusionBR2Integrator() [2/3]

mfem::DGDiffusionBR2Integrator::DGDiffusionBR2Integrator ( class FiniteElementSpace fes,
Coefficient Q_,
double  e = 1.0 
)

◆ DGDiffusionBR2Integrator() [3/3]

MFEM_DEPRECATED mfem::DGDiffusionBR2Integrator::DGDiffusionBR2Integrator ( class FiniteElementSpace fes,
double  e = 1.0 
)

Member Function Documentation

◆ AssembleFaceMatrix() [1/3]

void mfem::BilinearFormIntegrator::AssembleFaceMatrix

Definition at line 164 of file bilininteg.cpp.

◆ AssembleFaceMatrix() [2/3]

void mfem::BilinearFormIntegrator::AssembleFaceMatrix

Abstract method used for assembling TraceFaceIntegrators in a MixedBilinearForm.

Definition at line 172 of file bilininteg.cpp.

◆ AssembleFaceMatrix() [3/3]

virtual void mfem::DGDiffusionBR2Integrator::AssembleFaceMatrix ( const FiniteElement el1,
const FiniteElement el2,
FaceElementTransformations Trans,
DenseMatrix elmat 
)
virtual

Reimplemented from mfem::BilinearFormIntegrator.

◆ PrecomputeMassInverse()

void mfem::DGDiffusionBR2Integrator::PrecomputeMassInverse ( class FiniteElementSpace fes)
protected

Precomputes the inverses (LU factorizations) of the local mass matrices.

fes must be a DG space, so the mass matrix is block diagonal, and its inverse can be computed locally. This is required for the computation of the lifting operators r_e.

Member Data Documentation

◆ eta

double mfem::DGDiffusionBR2Integrator::eta
protected

Definition at line 3209 of file bilininteg.hpp.

◆ ipiv

Array<int> mfem::DGDiffusionBR2Integrator::ipiv
protected

Definition at line 3214 of file bilininteg.hpp.

◆ ipiv_offsets

Array<int> mfem::DGDiffusionBR2Integrator::ipiv_offsets
protected

Definition at line 3215 of file bilininteg.hpp.

◆ Minv

Array<double> mfem::DGDiffusionBR2Integrator::Minv
protected

Definition at line 3213 of file bilininteg.hpp.

◆ Minv_offsets

Array<int> mfem::DGDiffusionBR2Integrator::Minv_offsets
protected

Definition at line 3215 of file bilininteg.hpp.

◆ MinvR11

DenseMatrix mfem::DGDiffusionBR2Integrator::MinvR11
protected

Definition at line 3222 of file bilininteg.hpp.

◆ MinvR12

DenseMatrix mfem::DGDiffusionBR2Integrator::MinvR12
protected

Definition at line 3222 of file bilininteg.hpp.

◆ MinvR21

DenseMatrix mfem::DGDiffusionBR2Integrator::MinvR21
protected

Definition at line 3222 of file bilininteg.hpp.

◆ MinvR22

DenseMatrix mfem::DGDiffusionBR2Integrator::MinvR22
protected

Definition at line 3222 of file bilininteg.hpp.

◆ MinvRe

DenseMatrix mfem::DGDiffusionBR2Integrator::MinvRe
protected

Definition at line 3223 of file bilininteg.hpp.

◆ Q

Coefficient* mfem::DGDiffusionBR2Integrator::Q
protected

Definition at line 3217 of file bilininteg.hpp.

◆ R11

DenseMatrix mfem::DGDiffusionBR2Integrator::R11
protected

Definition at line 3221 of file bilininteg.hpp.

◆ R12

DenseMatrix mfem::DGDiffusionBR2Integrator::R12
protected

Definition at line 3221 of file bilininteg.hpp.

◆ R21

DenseMatrix mfem::DGDiffusionBR2Integrator::R21
protected

Definition at line 3221 of file bilininteg.hpp.

◆ R22

DenseMatrix mfem::DGDiffusionBR2Integrator::R22
protected

Definition at line 3221 of file bilininteg.hpp.

◆ Re

DenseMatrix mfem::DGDiffusionBR2Integrator::Re
protected

Definition at line 3223 of file bilininteg.hpp.

◆ shape1

Vector mfem::DGDiffusionBR2Integrator::shape1
protected

Definition at line 3219 of file bilininteg.hpp.

◆ shape2

Vector mfem::DGDiffusionBR2Integrator::shape2
protected

Definition at line 3219 of file bilininteg.hpp.


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