![]() |
MFEM
v4.2.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 | 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... | |
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... | |
![]() | |
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 &irule) |
Prescribe a fixed IntegrationRule to use. 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 &fes) |
Method defining partial assembly. More... | |
virtual void | AssemblePA (const FiniteElementSpace &trial_fes, const FiniteElementSpace &test_fes) |
virtual void | AddMultPA (const Vector &x, Vector &y) const |
Method for partially assembled action. More... | |
virtual | ~NonlinearFormIntegrator () |
Protected Attributes | |
TMOP_QualityMetric * | metric |
const TargetConstructor * | targetC |
IntegrationRules * | IntegRules |
int | integ_order |
Coefficient * | coeff1 |
double | metric_normal |
const GridFunction * | nodes0 |
Coefficient * | coeff0 |
const GridFunction * | lim_dist |
TMOP_LimiterFunction * | lim_func |
double | lim_normal |
const GridFunction * | zeta_0 |
GridFunction * | zeta |
Coefficient * | coeff_zeta |
AdaptivityEvaluator * | adapt_eval |
DiscreteAdaptTC * | discr_tc |
bool | fdflag |
double | dx |
double | dxscale |
bool | fd_call_flag |
bool | exact_action |
Array< Vector * > | ElemDer |
Array< Vector * > | ElemPertEnergy |
DenseMatrix | DSh |
DenseMatrix | DS |
DenseMatrix | Jrt |
DenseMatrix | Jpr |
DenseMatrix | Jpt |
DenseMatrix | P |
DenseMatrix | PMatI |
DenseMatrix | PMatO |
![]() | |
const IntegrationRule * | IntRule |
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 |
|
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 |
|
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 |
|
inlineprotected |
void mfem::TMOP_Integrator::ParEnableNormalization | ( | const ParGridFunction & | x | ) |
|
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 |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |