Rodin::External::MMG::ImplicitDomainMesher class

Class to perform the discretization and optimization of a surface implicitly defined by a level set function.

This class performs the discretization of a level set function $\phi : D \rightarrow \Omega $ defined over a computational mesh $ D $ which contains a regular domain $ \Omega $ .

\[ \left\{ \begin{aligned} \phi(x) < 0 && \text{if } \ x &\in \Omega\\ \phi(x) = 0 && \text{if } \ x &\in \partial \Omega\\ \phi(x) > 0 && \text{if } \ x &\in D \backslash \overline{\Omega}\\ \end{aligned} \right. \]

Base classes

class MMG5
Class representing MMG5 objects utilized in the MMG framework.

Constructors, destructors, conversion operators

ImplicitDomainMesher()
Default constructor.

Public functions

auto setLevelSet(Real ls) -> ImplicitDomainMesher&
Specifies the level set to discretize.
auto setRMC(Real rmc = 1e-5) -> ImplicitDomainMesher&
Specifies the removal of small parasitic components.
auto setBoundaryReference(const Geometry::Attribute& ref) -> ImplicitDomainMesher&
Sets the material reference for the discretized boundary $ \partial \Omega $ .
auto setSplit(const SplitMap& split) -> ImplicitDomainMesher&
Specifies how to split the materials into an interior and exterior domains.
auto split(const Geometry::Attribute& ref, const Split& s) -> ImplicitDomainMesher&
Indicates that a material reference should be split.
auto noSplit(const Geometry::Attribute& ref) -> ImplicitDomainMesher&
Indicates that a material reference should not be split.
auto discretize(const MMG::RealGridFunction& ls) -> MMG::Mesh
Discretizes and optimizes an implicitly defined surface defined by a level set function.

Function documentation

ImplicitDomainMesher& Rodin::External::MMG::ImplicitDomainMesher::setLevelSet(Real ls)

Specifies the level set to discretize.

Returns Reference to self (for method chaining)

The default value is 0.

ImplicitDomainMesher& Rodin::External::MMG::ImplicitDomainMesher::setRMC(Real rmc = 1e-5)

Specifies the removal of small parasitic components.

Returns Reference to self (for method chaining)

ImplicitDomainMesher& Rodin::External::MMG::ImplicitDomainMesher::setBoundaryReference(const Geometry::Attribute& ref)

Sets the material reference for the discretized boundary $ \partial \Omega $ .

Returns Reference to self (for method chaining)

Specifies what the label for the boundary $ \partial \Omega $ will be. By default, the value is 10.

ImplicitDomainMesher& Rodin::External::MMG::ImplicitDomainMesher::setSplit(const SplitMap& split)

Specifies how to split the materials into an interior and exterior domains.

Returns Reference to self (for method chaining)

This map specifies for each input material reference the values of the 2 new domains created by the level-set splitting. By default, the material references of the interior and exterior, are 2 and 3 respectively.

ImplicitDomainMesher& Rodin::External::MMG::ImplicitDomainMesher::split(const Geometry::Attribute& ref, const Split& s)

Indicates that a material reference should be split.

Parameters
ref in Material to split
in Interior and exterior labels
Returns Reference to self (for method chaining)

ImplicitDomainMesher& Rodin::External::MMG::ImplicitDomainMesher::noSplit(const Geometry::Attribute& ref)

Indicates that a material reference should not be split.

Parameters
ref in Material to split
Returns Reference to self (for method chaining)

MMG::Mesh Rodin::External::MMG::ImplicitDomainMesher::discretize(const MMG::RealGridFunction& ls)

Discretizes and optimizes an implicitly defined surface defined by a level set function.

Parameters
ls in Level set function

The material reference of the level set (edge) boundary will be 10.