![]() |
MFEM v4.8.0
Finite element discretization library
|
#include <nonlininteg.hpp>
Public Member Functions | |
HyperelasticNLFIntegrator (HyperelasticModel *m) | |
real_t | GetElementEnergy (const FiniteElement &el, ElementTransformation &Ttr, const Vector &elfun) override |
Computes the integral of W(Jacobian(Trt)) over a target zone. | |
void | AssembleElementVector (const FiniteElement &el, ElementTransformation &Ttr, const Vector &elfun, Vector &elvect) override |
Perform the local action of the NonlinearFormIntegrator. | |
void | AssembleElementGrad (const FiniteElement &el, ElementTransformation &Ttr, const Vector &elfun, DenseMatrix &elmat) override |
Assemble the local gradient matrix. | |
![]() | |
void | SetIntegrationMode (Mode m) |
bool | Patchwise () const |
void | SetPAMemoryType (MemoryType mt) |
virtual void | AssembleFaceVector (const FiniteElement &el1, const FiniteElement &el2, FaceElementTransformations &Tr, const Vector &elfun, Vector &elvect) |
Perform the local action of the NonlinearFormIntegrator resulting from a face integral term. | |
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. | |
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::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 Member Functions | |
const IntegrationRule * | GetDefaultIntegrationRule (const FiniteElement &trial_fe, const FiniteElement &test_fe, const ElementTransformation &trans) const override |
Subclasses should override to choose a default integration rule. | |
![]() | |
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) | |
Additional Inherited Members | |
![]() | |
enum | Mode { ELEMENTWISE = 0 , PATCHWISE = 1 , PATCHWISE_REDUCED = 2 } |
![]() | |
Mode | integrationMode = Mode::ELEMENTWISE |
ceed::Operator * | ceedOp |
MemoryType | pa_mt = MemoryType::DEFAULT |
![]() | |
const IntegrationRule * | IntRule |
NURBSMeshRules * | patchRules = nullptr |
Hyperelastic integrator for any given HyperelasticModel.
Represents \( \int W(Jpt) dx \) over a target zone, where W is the model's strain energy density function, and Jpt is the Jacobian of the target->physical coordinates transformation. The target configuration is given by the current mesh at the time of the evaluation of the integrator.
Definition at line 305 of file nonlininteg.hpp.
|
inline |
[in] | m | HyperelasticModel that will be integrated. |
Definition at line 324 of file nonlininteg.hpp.
|
overridevirtual |
Assemble the local gradient matrix.
Reimplemented from mfem::NonlinearFormIntegrator.
Definition at line 466 of file nonlininteg.cpp.
|
overridevirtual |
Perform the local action of the NonlinearFormIntegrator.
Reimplemented from mfem::NonlinearFormIntegrator.
Definition at line 426 of file nonlininteg.cpp.
|
overrideprotectedvirtual |
Subclasses should override to choose a default integration rule.
This method is intended to be overridden by subclasses to choose an appropriate integration rule based on the finite element spaces and/or element transformation. The trial_fe and test_fe should be equal for linear forms. The default base-class implementation returns null, which assumes that an appropriate rule is provided by another means, or that null integration rules are handled appropriately by the caller.
Reimplemented from mfem::Integrator.
Definition at line 386 of file nonlininteg.cpp.
|
overridevirtual |
Computes the integral of W(Jacobian(Trt)) over a target zone.
[in] | el | Type of FiniteElement. |
[in] | Ttr | Represents ref->target coordinates transformation. |
[in] | elfun | Physical coordinates of the zone. |
Reimplemented from mfem::NonlinearFormIntegrator.
Definition at line 393 of file nonlininteg.cpp.