![]() |
MFEM
v4.3.0
Finite element discretization library
|
A TMOP integrator class based on any given TMOP_QualityMetric and TargetConstructor. More...
#include <tmop.hpp>
Public Member Functions | |
TMOP_Integrator (TMOP_QualityMetric *m, TargetConstructor *tc) | |
~TMOP_Integrator () | |
void | ReleasePADeviceMemory () |
void | SetIntegrationRules (IntegrationRules &irules, int order) |
Prescribe a set of integration rules; relevant for mixed meshes. More... | |
void | SetCoefficient (Coefficient &w1) |
Sets a scaling Coefficient for the quality metric term of the integrator. More... | |
void | EnableLimiting (const GridFunction &n0, const GridFunction &dist, Coefficient &w0, TMOP_LimiterFunction *lfunc=NULL) |
Limiting of the mesh displacements (general version). More... | |
void | EnableLimiting (const GridFunction &n0, Coefficient &w0, TMOP_LimiterFunction *lfunc=NULL) |
Adds a limiting term to the integrator with limiting distance function (dist in the general version of the method) equal to 1. More... | |
void | EnableAdaptiveLimiting (const GridFunction &z0, Coefficient &coeff, AdaptivityEvaluator &ae) |
Restriction of the node positions to certain regions. More... | |
void | EnableAdaptiveLimiting (const ParGridFunction &z0, Coefficient &coeff, AdaptivityEvaluator &ae) |
Parallel support for adaptive limiting. More... | |
void | SetLimitingNodes (const GridFunction &n0) |
Update the original/reference nodes used for limiting. More... | |
virtual double | GetElementEnergy (const FiniteElement &el, ElementTransformation &T, const Vector &elfun) |
Computes the integral of W(Jacobian(Trt)) over a target zone. More... | |
virtual void | AssembleElementVector (const FiniteElement &el, ElementTransformation &T, const Vector &elfun, Vector &elvect) |
Perform the local action of the NonlinearFormIntegrator. More... | |
virtual void | AssembleElementGrad (const FiniteElement &el, ElementTransformation &T, const Vector &elfun, DenseMatrix &elmat) |
Assemble the local gradient matrix. More... | |
virtual void | AssemblePA (const FiniteElementSpace &) |
Method defining partial assembly. More... | |
virtual void | AssembleGradPA (const Vector &, const FiniteElementSpace &) |
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 &) const |
Compute the local (to the MPI rank) energy with partial assembly. More... | |
virtual void | AddMultPA (const Vector &, Vector &) const |
Method for partially assembled action. More... | |
virtual void | AddMultGradPA (const Vector &, Vector &) const |
Method for partially assembled gradient action. More... | |
virtual void | AssembleGradDiagonalPA (Vector &) const |
Method for computing the diagonal of the gradient with partial assembly. More... | |
DiscreteAdaptTC * | GetDiscreteAdaptTC () const |
void | EnableNormalization (const GridFunction &x) |
Computes the normalization factors of the metric and limiting integrals using the mesh position given by x. More... | |
void | ParEnableNormalization (const ParGridFunction &x) |
void | EnableFiniteDifferences (const GridFunction &x) |
Enables FD-based approximation and computes dx. More... | |
void | EnableFiniteDifferences (const ParGridFunction &x) |
void | SetFDhScale (double dxscale_) |
bool | GetFDFlag () const |
double | GetFDh () const |
void | SetExactActionFlag (bool flag_) |
Flag to control if exact action of Integration is effected. More... | |
![]() | |
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 | SetIntegrationRule (const IntegrationRule &ir) |
Prescribe a fixed IntegrationRule to use. More... | |
void | SetPAMemoryType (MemoryType mt) |
const IntegrationRule * | GetIntegrationRule () const |
Get the integration rule of the integrator (possibly NULL). More... | |
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. 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 | AssemblePA (const FiniteElementSpace &trial_fes, const FiniteElementSpace &test_fes) |
virtual bool | SupportsCeed () const |
Indicates whether this integrator can use a Ceed backend. More... | |
virtual void | AssembleMF (const FiniteElementSpace &fes) |
Method defining fully unassembled operator. More... | |
virtual void | AddMultMF (const Vector &x, Vector &y) const |
ceed::Operator & | GetCeedOp () |
virtual | ~NonlinearFormIntegrator () |
Friends | |
class | TMOPNewtonSolver |
class | TMOPComboIntegrator |
A TMOP integrator class based on any given TMOP_QualityMetric and TargetConstructor.
Represents \( \int W(Jpt) dx \) over a target zone, where W is the metric's strain energy density function, and Jpt is the Jacobian of the target->physical coordinates transformation. The virtual target zone is defined by the TargetConstructor.
|
inline |
[in] | m | TMOP_QualityMetric that will be integrated (not owned). |
[in] | tc | Target-matrix construction algorithm to use (not owned). |
|
inlineprotected |
Method for partially assembled gradient action.
All arguments are E-vectors. This method can be called only after the method AssembleGradPA() has been called.
[in] | x | The gradient Operator is applied to the Vector x. |
[in,out] | y | The result Vector: \( y += G x \). |
Reimplemented from mfem::NonlinearFormIntegrator.
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::NonlinearFormIntegrator.
|
protected |
|
protected |
|
protected |
|
protected |
|
virtual |
Assemble the local gradient matrix.
Reimplemented from mfem::NonlinearFormIntegrator.
|
protected |
|
protected |
|
virtual |
Perform the local action of the NonlinearFormIntegrator.
Reimplemented from mfem::NonlinearFormIntegrator.
|
protected |
|
protected |
|
protected |
|
protected |
|
virtual |
Method for computing the diagonal of the gradient with partial assembly.
The result Vector diag is an E-Vector. This method can be called only after the method AssembleGradPA() has been called.
[in,out] | diag | The result Vector: \( diag += diag(G) \). |
Reimplemented from mfem::NonlinearFormIntegrator.
|
virtual |
Prepare the integrator for partial assembly (PA) gradient evaluations on the given FE space fes at the state x.
The result of the partial assembly is stored internally so that it can be used later in the methods AddMultGradPA() and AssembleGradDiagonalPA(). The state Vector x is an E-vector.
Reimplemented from mfem::NonlinearFormIntegrator.
|
protected |
|
protected |
|
protected |
|
protected |
|
virtual |
Method defining partial assembly.
The result of the partial assembly is stored internally so that it can be used later in the methods AddMultPA().
Reimplemented from mfem::NonlinearFormIntegrator.
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
inlineprotected |
void mfem::TMOP_Integrator::EnableAdaptiveLimiting | ( | const GridFunction & | z0, |
Coefficient & | coeff, | ||
AdaptivityEvaluator & | ae | ||
) |
Restriction of the node positions to certain regions.
Adds the term \( \int c (z(x) - z_0(x_0))^2 \), where z0(x0) is a given function on the starting mesh, and z(x) is its image on the new mesh. Minimizing this, means that a node at x0 is allowed to move to a position x(x0) only if z(x) ~ z0(x0). Such term can be used for tangential mesh relaxation.
[in] | z0 | Function z0 that controls the adaptive limiting. |
[in] | coeff | Coefficient c for the above integral. |
[in] | ae | AdaptivityEvaluator to compute z(x) from z0(x0). |
void mfem::TMOP_Integrator::EnableAdaptiveLimiting | ( | const ParGridFunction & | z0, |
Coefficient & | coeff, | ||
AdaptivityEvaluator & | ae | ||
) |
void mfem::TMOP_Integrator::EnableFiniteDifferences | ( | const GridFunction & | x | ) |
void mfem::TMOP_Integrator::EnableFiniteDifferences | ( | const ParGridFunction & | x | ) |
void mfem::TMOP_Integrator::EnableLimiting | ( | const GridFunction & | n0, |
const GridFunction & | dist, | ||
Coefficient & | w0, | ||
TMOP_LimiterFunction * | lfunc = NULL |
||
) |
Limiting of the mesh displacements (general version).
Adds the term \( \int w_0 f(x, x_0, d) dx \), where f is a measure of the displacement between x and x_0, given the max allowed displacement d.
[in] | n0 | Original mesh node coordinates (x0 above). |
[in] | dist | Allowed displacement in physical space (d above). |
[in] | w0 | Coefficient scaling the limiting integral. |
[in] | lfunc | TMOP_LimiterFunction defining the function f. If NULL, a TMOP_QuadraticLimiter will be used. The TMOP_Integrator assumes ownership of this pointer. |
void mfem::TMOP_Integrator::EnableLimiting | ( | const GridFunction & | n0, |
Coefficient & | w0, | ||
TMOP_LimiterFunction * | lfunc = NULL |
||
) |
void mfem::TMOP_Integrator::EnableNormalization | ( | const GridFunction & | x | ) |
|
inlineprotected |
|
inline |
|
virtual |
Computes the integral of W(Jacobian(Trt)) over a target zone.
[in] | el | Type of FiniteElement. |
[in] | T | Mesh element transformation. |
[in] | elfun | Physical coordinates of the zone. |
Reimplemented from mfem::NonlinearFormIntegrator.
|
protected |
|
virtual |
Compute the local (to the MPI rank) energy with partial assembly.
Here the state x is an E-vector. This method can be called only after the method AssemblePA() has been called.
Reimplemented from mfem::NonlinearFormIntegrator.
|
protected |
|
protected |
|
protected |
|
protected |
|
inlineprotected |
void mfem::TMOP_Integrator::ParEnableNormalization | ( | const ParGridFunction & | x | ) |
void mfem::TMOP_Integrator::ReleasePADeviceMemory | ( | ) |
|
inline |
Sets a scaling Coefficient for the quality metric term of the integrator.
With this addition, the integrator becomes \( \int w1 W(Jpt) dx \).
Note that the Coefficient is evaluated in the physical configuration and not in the target configuration which may be undefined.
|
inline |
|
inline |
|
inline |
Prescribe a set of integration rules; relevant for mixed meshes.
This function has priority over SetIntRule(), if both are called.
|
inline |
|
protected |
|
friend |
|
friend |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
const FiniteElementSpace* mfem::TMOP_Integrator::fes |
const GeometricFactors* mfem::TMOP_Integrator::geom |
|
protected |
const IntegrationRule* mfem::TMOP_Integrator::ir |
|
protected |
|
protected |
|
protected |
|
mutable |
|
protected |
|
protected |
const DofToQuad* mfem::TMOP_Integrator::maps_lim = nullptr |
|
protected |
|
protected |
|
protected |
struct { ... } mfem::TMOP_Integrator::PA |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |