![]() |
MFEM v4.8.0
Finite element discretization library
|
#include <bilininteg.hpp>
Public Member Functions | |
VectorMassIntegrator () | |
Construct an integrator with coefficient 1.0. | |
VectorMassIntegrator (Coefficient &q, int qo=0) | |
VectorMassIntegrator (Coefficient &q, const IntegrationRule *ir) | |
VectorMassIntegrator (VectorCoefficient &q, int qo=0) | |
Construct an integrator with diagonal coefficient q. | |
VectorMassIntegrator (MatrixCoefficient &q, int qo=0) | |
Construct an integrator with matrix coefficient q. | |
int | GetVDim () const |
void | SetVDim (int vdim_) |
void | AssembleElementMatrix (const FiniteElement &el, ElementTransformation &Trans, DenseMatrix &elmat) override |
Given a particular Finite Element computes the element matrix elmat. | |
void | AssembleElementMatrix2 (const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &elmat) override |
void | AssemblePA (const FiniteElementSpace &fes) override |
Method defining partial assembly. | |
void | AssembleMF (const FiniteElementSpace &fes) override |
Method defining matrix-free assembly. | |
void | AssembleDiagonalPA (Vector &diag) override |
Assemble diagonal and add it to Vector diag. | |
void | AssembleDiagonalMF (Vector &diag) override |
Assemble diagonal and add it to Vector diag. | |
void | AddMultPA (const Vector &x, Vector &y) const override |
Method for partially assembled action. | |
void | AddMultMF (const Vector &x, Vector &y) const override |
bool | SupportsCeed () const override |
Indicates whether this integrator can use a Ceed backend. | |
void | AssemblePA (const FiniteElementSpace &trial_fes, const FiniteElementSpace &test_fes) override |
![]() | |
virtual void | AssembleNURBSPA (const FiniteElementSpace &fes) |
Method defining partial assembly on NURBS patches. | |
virtual void | AssemblePABoundary (const FiniteElementSpace &fes) |
virtual void | AssemblePAInteriorFaces (const FiniteElementSpace &fes) |
virtual void | AssemblePABoundaryFaces (const FiniteElementSpace &fes) |
virtual void | AssembleDiagonalPA_ADAt (const Vector &D, Vector &diag) |
Assemble diagonal of \(A D A^T\) ( \(A\) is this integrator) and add it to diag. | |
virtual void | AddMultNURBSPA (const Vector &x, Vector &y) const |
Method for partially assembled action on NURBS patches. | |
virtual void | AddMultTransposePA (const Vector &x, Vector &y) const |
Method for partially assembled transposed action. | |
virtual void | AssembleEA (const FiniteElementSpace &fes, Vector &emat, const bool add=true) |
Method defining element assembly. | |
virtual void | AddMultTransposeMF (const Vector &x, Vector &y) const |
virtual void | AssembleEABoundary (const FiniteElementSpace &fes, Vector &ea_data_bdr, const bool add=true) |
virtual void | AssembleEAInteriorFaces (const FiniteElementSpace &fes, Vector &ea_data_int, Vector &ea_data_ext, const bool add=true) |
virtual void | AssembleEAInteriorFaces (const FiniteElementSpace &trial_fes, const FiniteElementSpace &test_fes, Vector &emat, const bool add=true) |
Method defining element assembly for mixed trace integrators. | |
virtual void | AssembleEABoundaryFaces (const FiniteElementSpace &fes, Vector &ea_data_bdr, const bool add=true) |
virtual void | AssemblePatchMatrix (const int patch, const FiniteElementSpace &fes, SparseMatrix *&smat) |
virtual void | AssembleFaceMatrix (const FiniteElement &el1, const FiniteElement &el2, FaceElementTransformations &Trans, DenseMatrix &elmat) |
virtual void | AssembleFaceMatrix (const FiniteElement &trial_fe1, const FiniteElement &test_fe1, const FiniteElement &trial_fe2, const FiniteElement &test_fe2, FaceElementTransformations &Trans, DenseMatrix &elmat) |
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) |
void | AssembleElementVector (const FiniteElement &el, ElementTransformation &Tr, const Vector &elfun, Vector &elvect) override |
Perform the local action of the BilinearFormIntegrator. Note that the default implementation in the base class is general but not efficient. | |
void | AssembleFaceVector (const FiniteElement &el1, const FiniteElement &el2, FaceElementTransformations &Tr, const Vector &elfun, Vector &elvect) override |
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. | |
void | AssembleElementGrad (const FiniteElement &el, ElementTransformation &Tr, const Vector &elfun, DenseMatrix &elmat) override |
Assemble the local gradient matrix. | |
void | AssembleFaceGrad (const FiniteElement &el1, const FiniteElement &el2, FaceElementTransformations &Tr, const Vector &elfun, DenseMatrix &elmat) override |
Assemble the local action of the gradient of the NonlinearFormIntegrator resulting from a face integral term. | |
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. | |
virtual real_t | ComputeFluxEnergy (const FiniteElement &fluxelem, ElementTransformation &Trans, Vector &flux, Vector *d_energy=NULL) |
Virtual method required for Zienkiewicz-Zhu type error estimators. | |
virtual bool | RequiresFaceNormalDerivatives () const |
For bilinear forms on element faces, specifies if the normal derivatives are needed on the faces or just the face restriction. | |
virtual void | AddMultPAFaceNormalDerivatives (const Vector &x, const Vector &dxdn, Vector &y, Vector &dydn) const |
Method for partially assembled action. | |
virtual | ~BilinearFormIntegrator () |
![]() | |
void | SetIntegrationMode (Mode m) |
bool | Patchwise () const |
void | SetPAMemoryType (MemoryType mt) |
virtual real_t | GetElementEnergy (const FiniteElement &el, ElementTransformation &Tr, const Vector &elfun) |
Compute the local energy. | |
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 | 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. | |
ceed::Operator & | GetCeedOp () |
virtual | ~NonlinearFormIntegrator () |
![]() | |
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 IntegrationRule * | GetIntRule () const |
Directly return the IntRule pointer (possibly null) without checking for NURBS patch rules or falling back on a default. | |
const IntegrationRule * | GetIntegrationRule () const |
Equivalent to GetIntRule, but retained for backward compatibility with applications. | |
Protected Attributes | |
Coefficient * | Q |
VectorCoefficient * | VQ |
MatrixCoefficient * | MQ |
Vector | pa_data |
const DofToQuad * | maps |
Not owned. | |
const GeometricFactors * | geom |
Not owned. | |
int | dim |
int | ne |
int | nq |
int | dofs1D |
int | quad1D |
![]() | |
Mode | integrationMode = Mode::ELEMENTWISE |
ceed::Operator * | ceedOp |
MemoryType | pa_mt = MemoryType::DEFAULT |
![]() | |
const IntegrationRule * | IntRule |
NURBSMeshRules * | patchRules = nullptr |
Additional Inherited Members | |
![]() | |
enum | Mode { ELEMENTWISE = 0 , PATCHWISE = 1 , PATCHWISE_REDUCED = 2 } |
![]() | |
BilinearFormIntegrator (const IntegrationRule *ir=NULL) | |
![]() | |
NonlinearFormIntegrator (const IntegrationRule *ir=NULL) | |
![]() | |
const IntegrationRule * | GetIntegrationRule (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 IntegrationRule * | GetIntegrationRule (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 IntegrationRule * | GetDefaultIntegrationRule (const FiniteElement &trial_fe, const FiniteElement &test_fe, const ElementTransformation &trans) const |
Subclasses should override to choose a default integration rule. | |
Class for integrating the bilinear form \(a(u,v) := (Q u, v)\), where \(u=(u_1,\dots,u_n)\) and \(v=(v_1,\dots,v_n)\), \(u_i\) and \(v_i\) are defined by scalar FE through standard transformation.
Definition at line 2558 of file bilininteg.hpp.
|
inline |
Construct an integrator with coefficient 1.0.
Definition at line 2579 of file bilininteg.hpp.
|
inline |
Construct an integrator with scalar coefficient q. If possible, save memory by using a scalar integrator since the resulting matrix is block diagonal with the same diagonal block repeated.
Definition at line 2584 of file bilininteg.hpp.
|
inline |
Definition at line 2586 of file bilininteg.hpp.
|
inline |
Construct an integrator with diagonal coefficient q.
Definition at line 2590 of file bilininteg.hpp.
|
inline |
Construct an integrator with matrix coefficient q.
Definition at line 2593 of file bilininteg.hpp.
Perform the action of integrator on the input x and add the result to the output y. Both x and y are E-vectors, i.e. they represent the element-wise discontinuous version of the FE space.
This method can be called only after the method AssembleMF() has been called.
Reimplemented from mfem::BilinearFormIntegrator.
Definition at line 46 of file bilininteg_vecmass_mf.cpp.
Method for partially assembled action.
Perform the action of integrator on the input x and add the result to the output y. Both x and y are E-vectors, i.e. they represent the element-wise discontinuous version of the FE space.
This method can be called only after the method AssemblePA() has been called.
Reimplemented from mfem::BilinearFormIntegrator.
Definition at line 532 of file bilininteg_vecmass_pa.cpp.
|
overridevirtual |
Assemble diagonal and add it to Vector diag.
Reimplemented from mfem::BilinearFormIntegrator.
Definition at line 59 of file bilininteg_vecmass_mf.cpp.
|
overridevirtual |
Assemble diagonal and add it to Vector diag.
Reimplemented from mfem::BilinearFormIntegrator.
Definition at line 256 of file bilininteg_vecmass_pa.cpp.
|
overridevirtual |
Given a particular Finite Element computes the element matrix elmat.
Reimplemented from mfem::BilinearFormIntegrator.
Definition at line 1596 of file bilininteg.cpp.
|
overridevirtual |
Compute the local matrix representation of a bilinear form \(a(u,v)\) defined on different trial (given by \(u\)) and test (given by \(v\)) spaces. The rows in the local matrix correspond to the test dofs and the columns – to the trial dofs.
Reimplemented from mfem::BilinearFormIntegrator.
Definition at line 1679 of file bilininteg.cpp.
|
overridevirtual |
Method defining matrix-free assembly.
Used with BilinearFormIntegrators that have different spaces. The result of fully matrix-free assembly is stored internally so that it can be used later in the methods AddMultMF() and AddMultTransposeMF().
Reimplemented from mfem::BilinearFormIntegrator.
Definition at line 19 of file bilininteg_vecmass_mf.cpp.
|
overridevirtual |
Method defining partial assembly.
The result of the partial assembly is stored internally so that it can be used later in the methods AddMultPA() and AddMultTransposePA().
Reimplemented from mfem::BilinearFormIntegrator.
Definition at line 20 of file bilininteg_vecmass_pa.cpp.
|
overridevirtual |
Used with BilinearFormIntegrators that have different spaces.
Reimplemented from mfem::BilinearFormIntegrator.
Definition at line 52 of file bilininteg.cpp.
|
inline |
Definition at line 2596 of file bilininteg.hpp.
|
inline |
Definition at line 2597 of file bilininteg.hpp.
|
inlineoverridevirtual |
Indicates whether this integrator can use a Ceed backend.
Reimplemented from mfem::NonlinearFormIntegrator.
Definition at line 2613 of file bilininteg.hpp.
|
protected |
Definition at line 2575 of file bilininteg.hpp.
|
protected |
Definition at line 2575 of file bilininteg.hpp.
|
protected |
Not owned.
Definition at line 2574 of file bilininteg.hpp.
|
protected |
Not owned.
Definition at line 2573 of file bilininteg.hpp.
|
protected |
Definition at line 2570 of file bilininteg.hpp.
|
protected |
Definition at line 2575 of file bilininteg.hpp.
|
protected |
Definition at line 2575 of file bilininteg.hpp.
|
protected |
Definition at line 2572 of file bilininteg.hpp.
|
protected |
Definition at line 2568 of file bilininteg.hpp.
|
protected |
Definition at line 2575 of file bilininteg.hpp.
|
protected |
Definition at line 2569 of file bilininteg.hpp.