MFEM
v4.6.0
Finite element discretization library
|
Base class representing target-matrix construction algorithms for mesh optimization via the target-matrix optimization paradigm (TMOP). More...
#include <tmop.hpp>
Public Types | |
enum | TargetType { IDEAL_SHAPE_UNIT_SIZE, IDEAL_SHAPE_EQUAL_SIZE, IDEAL_SHAPE_GIVEN_SIZE, GIVEN_SHAPE_AND_SIZE, GIVEN_FULL } |
Target-matrix construction algorithms supported by this class. More... | |
Public Member Functions | |
TargetConstructor (TargetType ttype) | |
Constructor for use in serial. More... | |
TargetConstructor (TargetType ttype, MPI_Comm mpicomm) | |
Constructor for use in parallel. More... | |
virtual | ~TargetConstructor () |
bool | Parallel () const |
MPI_Comm | GetComm () const |
bool | Parallel () const |
void | SetNodes (const GridFunction &n) |
Set the nodes to be used in the target-matrix construction. More... | |
const GridFunction * | GetNodes () const |
Get the nodes to be used in the target-matrix construction. More... | |
void | SetVolumeScale (double vol_scale) |
Used by target type IDEAL_SHAPE_EQUAL_SIZE. The default volume scale is 1. More... | |
TargetType | GetTargetType () const |
bool | UsesPhysicalCoordinates () const |
Return true if the methods ComputeElementTargets(), ComputeAllElementTargets(), and ComputeElementTargetsGradient() use the physical node coordinates provided by the parameters 'elfun', or 'xe'. More... | |
virtual bool | ContainsVolumeInfo () const |
Checks if the target matrices contain non-trivial size specification. More... | |
virtual void | ComputeElementTargets (int e_id, const FiniteElement &fe, const IntegrationRule &ir, const Vector &elfun, DenseTensor &Jtr) const |
Given an element and quadrature rule, computes ref->target transformation Jacobians for each quadrature point in the element. The physical positions of the element's nodes are given by elfun. More... | |
virtual void | ComputeAllElementTargets (const FiniteElementSpace &fes, const IntegrationRule &ir, const Vector &xe, DenseTensor &Jtr) const |
Computes reference-to-target transformation Jacobians for all quadrature points in all elements. More... | |
virtual void | ComputeElementTargetsGradient (const IntegrationRule &ir, const Vector &elfun, IsoparametricTransformation &Tpr, DenseTensor &dJtr) const |
Protected Member Functions | |
void | ComputeAvgVolume () const |
template<int DIM> | |
bool | ComputeAllElementTargets (const FiniteElementSpace &fes, const IntegrationRule &ir, const Vector &xe, DenseTensor &Jtr) const |
void | ComputeAllElementTargets_Fallback (const FiniteElementSpace &fes, const IntegrationRule &ir, const Vector &xe, DenseTensor &Jtr) const |
template<> | |
bool | ComputeAllElementTargets (const FiniteElementSpace &fes, const IntegrationRule &ir, const Vector &, DenseTensor &Jtr) const |
template<> | |
bool | ComputeAllElementTargets (const FiniteElementSpace &fes, const IntegrationRule &ir, const Vector &, DenseTensor &Jtr) const |
Protected Attributes | |
const GridFunction * | nodes |
double | avg_volume |
double | volume_scale |
const TargetType | target_type |
bool | uses_phys_coords |
MPI_Comm | comm |
Base class representing target-matrix construction algorithms for mesh optimization via the target-matrix optimization paradigm (TMOP).
This class is used by class TMOP_Integrator to construct the target Jacobian matrices (reference-element to target-element) at quadrature points. It supports a set of algorithms chosen by the TargetType enumeration.
New target-matrix construction algorithms can be defined by deriving new classes and overriding the methods ComputeElementTargets() and ContainsVolumeInfo().
Target-matrix construction algorithms supported by this class.
Enumerator | |
---|---|
IDEAL_SHAPE_UNIT_SIZE | Ideal shape, unit size; the nodes are not used. |
IDEAL_SHAPE_EQUAL_SIZE | Ideal shape, equal size/volume; the given nodes define the total target volume; for each mesh element, the target volume is the average volume multiplied by the volume scale, set with SetVolumeScale(). |
IDEAL_SHAPE_GIVEN_SIZE | Ideal shape, given size/volume; the given nodes define the target volume at all quadrature points. |
GIVEN_SHAPE_AND_SIZE | Given shape, given size/volume; the given nodes define the exact target Jacobian matrix at all quadrature points. |
GIVEN_FULL | Full target tensor is specified at every quadrature point. |
|
inline |
|
inline |
|
inlinevirtual |
|
protected |
Definition at line 113 of file tmop_pa_tc2.cpp.
|
protected |
Definition at line 117 of file tmop_pa_tc3.cpp.
|
protected |
|
virtual |
Computes reference-to-target transformation Jacobians for all quadrature points in all elements.
[in] | fes | The nodal FE space |
[in] | ir | The quadrature rule to use for all elements |
[in] | xe | E-vector with the current physical coordinates/positions; this parameter is used only when needed by the target constructor, see UsesPhysicalCoordinates() |
[out] | Jtr | The computed ref->target Jacobian matrices. |
Reimplemented in mfem::DiscreteAdaptTC, and mfem::AnalyticAdaptTC.
Definition at line 124 of file tmop_pa.cpp.
|
protected |
|
protected |
|
virtual |
Given an element and quadrature rule, computes ref->target transformation Jacobians for each quadrature point in the element. The physical positions of the element's nodes are given by elfun.
Reimplemented in mfem::DiscreteAdaptTC, and mfem::AnalyticAdaptTC.
|
virtual |
Reimplemented in mfem::DiscreteAdaptTC, and mfem::AnalyticAdaptTC.
|
virtual |
|
inline |
|
inline |
|
inline |
|
inline |
Set the nodes to be used in the target-matrix construction.
This method should be called every time the target nodes are updated externally and recomputation of the target average volume is needed. The nodes are used by all target types except IDEAL_SHAPE_UNIT_SIZE.
|
inline |
|
inline |
Return true if the methods ComputeElementTargets(), ComputeAllElementTargets(), and ComputeElementTargetsGradient() use the physical node coordinates provided by the parameters 'elfun', or 'xe'.
|
mutableprotected |
|
protected |
|
protected |