KratosMultiphysics
KRATOS Multiphysics (Kratos) is a framework for building parallel, multi-disciplinary simulation software, aiming at modularity, extensibility, and high performance. Kratos is written in C++, and counts with an extensive Python interface.
List of all members
Kratos::MmgProcess< TMMGLibrary > Class Template Reference

This class is a remesher which uses the MMG library. More...

#include <mmg_process.h>

Inheritance diagram for Kratos::MmgProcess< TMMGLibrary >:
Collaboration diagram for Kratos::MmgProcess< TMMGLibrary >:

Public Member Functions

Life Cycle
 MmgProcess (ModelPart &rThisModelPart, Parameters ThisParameters=Parameters(R"({})"))
 This is the default constructor, which is used to read the input files. More...
 
 ~MmgProcess () override=default
 Destructor. More...
 
Operators
void operator() ()
 
Operations
void Execute () override
 Execute method is used to execute the Process algorithms. More...
 
void ExecuteInitialize () override
 This function is designed for being execute once before the solution loop but after all of the solvers where built. More...
 
void ExecuteBeforeSolutionLoop () override
 This function is designed for being execute once before the solution loop but after all of the solvers where built. More...
 
void ExecuteInitializeSolutionStep () override
 This function will be executed at every time step BEFORE performing the solve phase. More...
 
void ExecuteFinalizeSolutionStep () override
 This function will be executed at every time step AFTER performing the solve phase. More...
 
void ExecuteBeforeOutputStep () override
 This function will be executed at every time step BEFORE writing the output. More...
 
void ExecuteAfterOutputStep () override
 This function will be executed at every time step AFTER writing the output. More...
 
void ExecuteFinalize () override
 This function is designed for being called at the end of the computations right after reading the model and the groups. More...
 
virtual void OutputMdpa ()
 This sets the output mesh in a .mdpa format. More...
 
void CleanSuperfluousNodes ()
 Ths function removes superfluous (defined by "not belonging to an element") nodes from the model part. More...
 
void CleanSuperfluousConditions ()
 Ths function removes superfluous (defined by "not belonging to an element") conditions from the model part. More...
 
std::string GetMmgVersion ()
 This method retrieves the current Mmg version. More...
 
const Parameters GetDefaultParameters () const override
 This method provides the defaults parameters to avoid conflicts between the different constructors. More...
 
Input and output
std::string Info () const override
 Turn back information as a string. More...
 
void PrintInfo (std::ostream &rOStream) const override
 Print information about this object. More...
 
void PrintData (std::ostream &rOStream) const override
 Print object's data. More...
 
- Public Member Functions inherited from Kratos::Process
 KRATOS_CLASS_POINTER_DEFINITION (Process)
 Pointer definition of Process. More...
 
 Process ()
 Default constructor. More...
 
 Process (const Flags options)
 
 ~Process () override
 Destructor. More...
 
void operator() ()
 This operator is provided to call the process as a function and simply calls the Execute method. More...
 
virtual Process::Pointer Create (Model &rModel, Parameters ThisParameters)
 This method creates an pointer of the process. More...
 
virtual int Check ()
 This function is designed for being called after ExecuteInitialize ONCE to verify that the input is correct. More...
 
virtual void Clear ()
 This method clears the assignation of the conditions. More...
 
- Public Member Functions inherited from Kratos::Flags
Flagsoperator= (Flags const &rOther)
 Assignment operator. More...
 
 operator bool () const
 
Flags operator~ () const
 
bool operator! () const
 
void AssignFlags (Flags const &rOther)
 
void Set (const Flags ThisFlag)
 
void Set (const Flags ThisFlag, bool Value)
 
void Reset (const Flags ThisFlag)
 
void Flip (const Flags ThisFlag)
 
void SetPosition (IndexType Position, bool Value=true)
 
bool GetPosition (IndexType Position) const
 
void FlipPosition (IndexType Position)
 
void ClearPosition (IndexType Position)
 
void Clear ()
 
Flags AsFalse () const
 
bool Is (Flags const &rOther) const
 
bool IsDefined (Flags const &rOther) const
 
bool IsNot (Flags const &rOther) const
 
bool IsNotDefined (Flags const &rOther) const
 
 KRATOS_CLASS_POINTER_DEFINITION (Flags)
 Pointer definition of Flags. More...
 
const Flagsoperator|= (const Flags &Other)
 
const Flagsoperator&= (const Flags &Other)
 
 Flags ()
 Default constructor. More...
 
 Flags (Flags const &rOther)
 Copy constructor. More...
 
virtual ~Flags ()
 Destructor. More...
 

Protected Attributes

Protected member Variables
ModelPartmrThisModelPart
 
Parameters mThisParameters
 The model part to compute. More...
 
NodeType::DofsContainerType mDofs
 The parameters (can be used for general pourposes) More...
 
std::string mFilename
 Storage for the dof of the node. More...
 
IndexType mEchoLevel
 I/O file name. More...
 
FrameworkEulerLagrange mFramework
 The echo level. More...
 
DiscretizationOption mDiscretization
 The framework. More...
 
bool mRemoveRegions
 The discretization option. More...
 
std::unordered_map< IndexType, std::vector< std::string > > mColors
 Cuttig-out specified regions during surface remeshing. More...
 
std::unordered_map< IndexType, Element::Pointer > mpRefElement
 Where the sub model parts IDs are stored. More...
 
std::unordered_map< IndexType, Condition::Pointer > mpRefCondition
 Reference element. More...
 

Type Definitions

typedef Node NodeType
 Node definition. More...
 
typedef Geometry< NodeTypeGeometryType
 
typedef std::conditional< Dimension==2, array_1d< double, 3 >, array_1d< double, 6 > >::type TensorArrayType
 The type of array considered for the tensor. More...
 
typedef std::unordered_map< IndexType, IndexTypeColorsMapType
 Colors map. More...
 
typedef std::pair< IndexType, IndexTypeIndexPairType
 Index pair. More...
 
static constexpr SizeType Dimension = (TMMGLibrary == MMGLibrary::MMG2D) ? 2 : 3
 Conditions array size. More...
 
 KRATOS_CLASS_POINTER_DEFINITION (MmgProcess)
 Pointer definition of MmgProcess. More...
 

Protected Operations

 MmgProcess (ModelPart *pThisModelPart)
 This is the default constructor, which is used to read the input files. To be called by derived classes. More...
 
virtual void InitializeMeshData ()
 This function generates the mesh MMG5 structure from a Kratos Model Part. More...
 
virtual void InitializeSolDataMetric ()
 This function generates the metric MMG5 structure from a Kratos Model Part. More...
 
virtual void InitializeSolDataDistance ()
 This function generates the MMG5 structure for the distance field from a Kratos Model Part. More...
 
virtual void InitializeDisplacementData ()
 This function generates the displacement MMG5 structure from a Kratos Model Part. More...
 
virtual void ExecuteRemeshing ()
 We execute the MMg library and build the new model part from the old model part. More...
 
virtual void InitializeElementsAndConditions ()
 After we have transfer the information from the previous modelpart we initilize the elements and conditions. More...
 
virtual void SaveSolutionToFile (const bool PostOutput)
 It saves the solution and mesh to files (for debugging pourpose g.e) More...
 
virtual void FreeMemory ()
 It frees the memory used during all the process. More...
 
template<class TContainerType >
void SetToZeroEntityData (TContainerType &rNewContainer, const TContainerType &rOldContainer)
 It sets to zero the entity data, using the variables from the orginal model part. More...
 
virtual void ClearConditionsDuplicatedGeometries ()
 This function removes the conditions with duplicated geometries. More...
 
virtual void CreateDebugPrePostRemeshOutput (ModelPart &rOldModelPart)
 This function creates an before/after remesh output file. More...
 
void ApplyLocalParameters ()
 Applies local hmin, hmax and hausd values to entitities as specified in the parameters, to locally control the size and curvature of the remeshing. More...
 
static FrameworkEulerLagrange ConvertFramework (const std::string &rString)
 This converts the framework string to an enum. More...
 
static DiscretizationOption ConvertDiscretization (const std::string &rString)
 This converts the discretization string to an enum. More...
 

Additional Inherited Members

- Public Types inherited from Kratos::Flags
enum  FlagsList {
  Flag0 = BlockType(1) , Flag1 = BlockType(1) << 1 , Flag2 = BlockType(1) << 2 , Flag3 = BlockType(1) << 3 ,
  Flag4 = BlockType(1) << 4 , Flag5 = BlockType(1) << 5 , Flag6 = BlockType(1) << 6 , Flag7 = BlockType(1) << 7 ,
  Flag8 = BlockType(1) << 8 , Flag9 = BlockType(1) << 9 , Flag10 = BlockType(1) << 10 , Flag11 = BlockType(1) << 11 ,
  Flag12 = BlockType(1) << 12 , Flag13 = BlockType(1) << 13 , Flag14 = BlockType(1) << 14 , Flag15 = BlockType(1) << 15 ,
  Flag16 = BlockType(1) << 16 , Flag17 = BlockType(1) << 17 , Flag18 = BlockType(1) << 18 , Flag19 = BlockType(1) << 19 ,
  Flag20 = BlockType(1) << 20 , Flag21 = BlockType(1) << 21 , Flag22 = BlockType(1) << 22 , Flag23 = BlockType(1) << 23 ,
  Flag24 = BlockType(1) << 24 , Flag25 = BlockType(1) << 25 , Flag26 = BlockType(1) << 26 , Flag27 = BlockType(1) << 27 ,
  Flag28 = BlockType(1) << 28 , Flag29 = BlockType(1) << 29 , Flag30 = BlockType(1) << 30
}
 
typedef int64_t BlockType
 
typedef int64_t FlagType
 
typedef std::size_t IndexType
 
- Static Public Member Functions inherited from Kratos::Flags
static const Flags AllDefined ()
 
static const Flags AllTrue ()
 
static Flags Create (IndexType ThisPosition, bool Value=true)
 

Detailed Description

template<MMGLibrary TMMGLibrary>
class Kratos::MmgProcess< TMMGLibrary >

This class is a remesher which uses the MMG library.

This class is a remesher which uses the MMG library. The class uses a class for the 2D and 3D cases. The remesher keeps the previous submodelparts and interpolates the nodal values between the old and new mesh

Author
Vicente Mataix Ferrandiz

Member Typedef Documentation

◆ ColorsMapType

template<MMGLibrary TMMGLibrary>
typedef std::unordered_map<IndexType,IndexType> Kratos::MmgProcess< TMMGLibrary >::ColorsMapType

Colors map.

◆ GeometryType

template<MMGLibrary TMMGLibrary>
typedef Geometry<NodeType> Kratos::MmgProcess< TMMGLibrary >::GeometryType

◆ IndexPairType

template<MMGLibrary TMMGLibrary>
typedef std::pair<IndexType,IndexType> Kratos::MmgProcess< TMMGLibrary >::IndexPairType

Index pair.

◆ NodeType

template<MMGLibrary TMMGLibrary>
typedef Node Kratos::MmgProcess< TMMGLibrary >::NodeType

Node definition.

◆ TensorArrayType

template<MMGLibrary TMMGLibrary>
typedef std::conditional<Dimension == 2, array_1d<double, 3>, array_1d<double, 6> >::type Kratos::MmgProcess< TMMGLibrary >::TensorArrayType

The type of array considered for the tensor.

Constructor & Destructor Documentation

◆ MmgProcess() [1/2]

template<MMGLibrary TMMGLibrary>
Kratos::MmgProcess< TMMGLibrary >::MmgProcess ( ModelPart rThisModelPart,
Parameters  ThisParameters = Parameters(R"({})") 
)

This is the default constructor, which is used to read the input files.

Parameters
rThisModelPartThe model part
ThisParametersThe parameters

◆ ~MmgProcess()

template<MMGLibrary TMMGLibrary>
Kratos::MmgProcess< TMMGLibrary >::~MmgProcess ( )
overridedefault

Destructor.

◆ MmgProcess() [2/2]

template<MMGLibrary TMMGLibrary>
Kratos::MmgProcess< TMMGLibrary >::MmgProcess ( ModelPart pThisModelPart)
protected

This is the default constructor, which is used to read the input files. To be called by derived classes.

Parameters
pThisModelPartThe pointer to the model part

Member Function Documentation

◆ ApplyLocalParameters()

template<MMGLibrary TMMGLibrary>
void Kratos::MmgProcess< TMMGLibrary >::ApplyLocalParameters
protected

Applies local hmin, hmax and hausd values to entitities as specified in the parameters, to locally control the size and curvature of the remeshing.

◆ CleanSuperfluousConditions()

template<MMGLibrary TMMGLibrary>
void Kratos::MmgProcess< TMMGLibrary >::CleanSuperfluousConditions

Ths function removes superfluous (defined by "not belonging to an element") conditions from the model part.

◆ CleanSuperfluousNodes()

template<MMGLibrary TMMGLibrary>
void Kratos::MmgProcess< TMMGLibrary >::CleanSuperfluousNodes

Ths function removes superfluous (defined by "not belonging to an element") nodes from the model part.

◆ ClearConditionsDuplicatedGeometries()

template<MMGLibrary TMMGLibrary>
void Kratos::MmgProcess< TMMGLibrary >::ClearConditionsDuplicatedGeometries
protectedvirtual

This function removes the conditions with duplicated geometries.

Reimplemented in Kratos::ParMmgProcess< TPMMGLibrary >.

◆ ConvertDiscretization()

template<MMGLibrary TMMGLibrary>
static DiscretizationOption Kratos::MmgProcess< TMMGLibrary >::ConvertDiscretization ( const std::string &  rString)
inlinestaticprotected

This converts the discretization string to an enum.

Parameters
rStringThe string
Returns
DiscretizationOption: The equivalent enum

◆ ConvertFramework()

template<MMGLibrary TMMGLibrary>
static FrameworkEulerLagrange Kratos::MmgProcess< TMMGLibrary >::ConvertFramework ( const std::string &  rString)
inlinestaticprotected

This converts the framework string to an enum.

Parameters
rStringThe string
Returns
FrameworkEulerLagrange: The equivalent enum

◆ CreateDebugPrePostRemeshOutput()

template<MMGLibrary TMMGLibrary>
void Kratos::MmgProcess< TMMGLibrary >::CreateDebugPrePostRemeshOutput ( ModelPart rOldModelPart)
protectedvirtual

This function creates an before/after remesh output file.

Parameters
rOldModelPartThe old model part before remesh

Reimplemented in Kratos::ParMmgProcess< TPMMGLibrary >.

◆ Execute()

template<MMGLibrary TMMGLibrary>
void Kratos::MmgProcess< TMMGLibrary >::Execute
overridevirtual

Execute method is used to execute the Process algorithms.

Reimplemented from Kratos::Process.

◆ ExecuteAfterOutputStep()

template<MMGLibrary TMMGLibrary>
void Kratos::MmgProcess< TMMGLibrary >::ExecuteAfterOutputStep
overridevirtual

This function will be executed at every time step AFTER writing the output.

Reimplemented from Kratos::Process.

◆ ExecuteBeforeOutputStep()

template<MMGLibrary TMMGLibrary>
void Kratos::MmgProcess< TMMGLibrary >::ExecuteBeforeOutputStep
overridevirtual

This function will be executed at every time step BEFORE writing the output.

Reimplemented from Kratos::Process.

◆ ExecuteBeforeSolutionLoop()

template<MMGLibrary TMMGLibrary>
void Kratos::MmgProcess< TMMGLibrary >::ExecuteBeforeSolutionLoop
overridevirtual

This function is designed for being execute once before the solution loop but after all of the solvers where built.

Reimplemented from Kratos::Process.

◆ ExecuteFinalize()

template<MMGLibrary TMMGLibrary>
void Kratos::MmgProcess< TMMGLibrary >::ExecuteFinalize
overridevirtual

This function is designed for being called at the end of the computations right after reading the model and the groups.

Reimplemented from Kratos::Process.

◆ ExecuteFinalizeSolutionStep()

template<MMGLibrary TMMGLibrary>
void Kratos::MmgProcess< TMMGLibrary >::ExecuteFinalizeSolutionStep
overridevirtual

This function will be executed at every time step AFTER performing the solve phase.

Reimplemented from Kratos::Process.

◆ ExecuteInitialize()

template<MMGLibrary TMMGLibrary>
void Kratos::MmgProcess< TMMGLibrary >::ExecuteInitialize
overridevirtual

This function is designed for being execute once before the solution loop but after all of the solvers where built.

Reimplemented from Kratos::Process.

◆ ExecuteInitializeSolutionStep()

template<MMGLibrary TMMGLibrary>
void Kratos::MmgProcess< TMMGLibrary >::ExecuteInitializeSolutionStep
overridevirtual

This function will be executed at every time step BEFORE performing the solve phase.

Reimplemented from Kratos::Process.

◆ ExecuteRemeshing()

template<MMGLibrary TMMGLibrary>
void Kratos::MmgProcess< TMMGLibrary >::ExecuteRemeshing
protectedvirtual

We execute the MMg library and build the new model part from the old model part.

Reimplemented in Kratos::ParMmgProcess< TPMMGLibrary >.

◆ FreeMemory()

template<MMGLibrary TMMGLibrary>
void Kratos::MmgProcess< TMMGLibrary >::FreeMemory
protectedvirtual

It frees the memory used during all the process.

Reimplemented in Kratos::ParMmgProcess< TPMMGLibrary >.

◆ GetDefaultParameters()

template<MMGLibrary TMMGLibrary>
const Parameters Kratos::MmgProcess< TMMGLibrary >::GetDefaultParameters
overridevirtual

This method provides the defaults parameters to avoid conflicts between the different constructors.

Reimplemented from Kratos::Process.

◆ GetMmgVersion()

template<MMGLibrary TMMGLibrary>
std::string Kratos::MmgProcess< TMMGLibrary >::GetMmgVersion

This method retrieves the current Mmg version.

Returns
The current version of Mmg (as a string)

◆ Info()

template<MMGLibrary TMMGLibrary>
std::string Kratos::MmgProcess< TMMGLibrary >::Info ( ) const
inlineoverridevirtual

Turn back information as a string.

Reimplemented from Kratos::Process.

◆ InitializeDisplacementData()

template<MMGLibrary TMMGLibrary>
void Kratos::MmgProcess< TMMGLibrary >::InitializeDisplacementData
protectedvirtual

This function generates the displacement MMG5 structure from a Kratos Model Part.

◆ InitializeElementsAndConditions()

template<MMGLibrary TMMGLibrary>
void Kratos::MmgProcess< TMMGLibrary >::InitializeElementsAndConditions
protectedvirtual

After we have transfer the information from the previous modelpart we initilize the elements and conditions.

Reimplemented in Kratos::ParMmgProcess< TPMMGLibrary >.

◆ InitializeMeshData()

template<MMGLibrary TMMGLibrary>
void Kratos::MmgProcess< TMMGLibrary >::InitializeMeshData
protectedvirtual

This function generates the mesh MMG5 structure from a Kratos Model Part.

Reimplemented in Kratos::ParMmgProcess< TPMMGLibrary >.

◆ InitializeSolDataDistance()

template<MMGLibrary TMMGLibrary>
void Kratos::MmgProcess< TMMGLibrary >::InitializeSolDataDistance
protectedvirtual

This function generates the MMG5 structure for the distance field from a Kratos Model Part.

◆ InitializeSolDataMetric()

template<MMGLibrary TMMGLibrary>
void Kratos::MmgProcess< TMMGLibrary >::InitializeSolDataMetric
protectedvirtual

This function generates the metric MMG5 structure from a Kratos Model Part.

Reimplemented in Kratos::ParMmgProcess< TPMMGLibrary >.

◆ KRATOS_CLASS_POINTER_DEFINITION()

template<MMGLibrary TMMGLibrary>
Kratos::MmgProcess< TMMGLibrary >::KRATOS_CLASS_POINTER_DEFINITION ( MmgProcess< TMMGLibrary >  )

Pointer definition of MmgProcess.

◆ operator()()

template<MMGLibrary TMMGLibrary>
void Kratos::MmgProcess< TMMGLibrary >::operator()

◆ OutputMdpa()

template<MMGLibrary TMMGLibrary>
void Kratos::MmgProcess< TMMGLibrary >::OutputMdpa
virtual

This sets the output mesh in a .mdpa format.

Reimplemented in Kratos::ParMmgProcess< TPMMGLibrary >.

◆ PrintData()

template<MMGLibrary TMMGLibrary>
void Kratos::MmgProcess< TMMGLibrary >::PrintData ( std::ostream &  rOStream) const
inlineoverridevirtual

Print object's data.

Reimplemented from Kratos::Process.

◆ PrintInfo()

template<MMGLibrary TMMGLibrary>
void Kratos::MmgProcess< TMMGLibrary >::PrintInfo ( std::ostream &  rOStream) const
inlineoverridevirtual

Print information about this object.

Reimplemented from Kratos::Process.

◆ SaveSolutionToFile()

template<MMGLibrary TMMGLibrary>
void Kratos::MmgProcess< TMMGLibrary >::SaveSolutionToFile ( const bool  PostOutput)
protectedvirtual

It saves the solution and mesh to files (for debugging pourpose g.e)

Parameters
PostOutputIf the file to save is after or before remeshing

Reimplemented in Kratos::ParMmgProcess< TPMMGLibrary >.

◆ SetToZeroEntityData()

template<MMGLibrary TMMGLibrary>
template<class TContainerType >
void Kratos::MmgProcess< TMMGLibrary >::SetToZeroEntityData ( TContainerType &  rNewContainer,
const TContainerType &  rOldContainer 
)
inlineprotected

It sets to zero the entity data, using the variables from the orginal model part.

Parameters
rNewModelPartThe new container
rOldModelPartThe old container
Template Parameters
TContainerTypeThe container type
Todo:
Interpolate values in the future

Member Data Documentation

◆ Dimension

template<MMGLibrary TMMGLibrary>
constexpr SizeType Kratos::MmgProcess< TMMGLibrary >::Dimension = (TMMGLibrary == MMGLibrary::MMG2D) ? 2 : 3
staticconstexpr

Conditions array size.

◆ mColors

template<MMGLibrary TMMGLibrary>
std::unordered_map<IndexType,std::vector<std::string> > Kratos::MmgProcess< TMMGLibrary >::mColors
protected

Cuttig-out specified regions during surface remeshing.

◆ mDiscretization

template<MMGLibrary TMMGLibrary>
DiscretizationOption Kratos::MmgProcess< TMMGLibrary >::mDiscretization
protected

The framework.

◆ mDofs

template<MMGLibrary TMMGLibrary>
NodeType::DofsContainerType Kratos::MmgProcess< TMMGLibrary >::mDofs
protected

The parameters (can be used for general pourposes)

◆ mEchoLevel

template<MMGLibrary TMMGLibrary>
IndexType Kratos::MmgProcess< TMMGLibrary >::mEchoLevel
protected

I/O file name.

◆ mFilename

template<MMGLibrary TMMGLibrary>
std::string Kratos::MmgProcess< TMMGLibrary >::mFilename
protected

Storage for the dof of the node.

◆ mFramework

template<MMGLibrary TMMGLibrary>
FrameworkEulerLagrange Kratos::MmgProcess< TMMGLibrary >::mFramework
protected

The echo level.

◆ mpRefCondition

template<MMGLibrary TMMGLibrary>
std::unordered_map<IndexType,Condition::Pointer> Kratos::MmgProcess< TMMGLibrary >::mpRefCondition
protected

Reference element.

◆ mpRefElement

template<MMGLibrary TMMGLibrary>
std::unordered_map<IndexType,Element::Pointer> Kratos::MmgProcess< TMMGLibrary >::mpRefElement
protected

Where the sub model parts IDs are stored.

◆ mRemoveRegions

template<MMGLibrary TMMGLibrary>
bool Kratos::MmgProcess< TMMGLibrary >::mRemoveRegions
protected

The discretization option.

◆ mrThisModelPart

template<MMGLibrary TMMGLibrary>
ModelPart& Kratos::MmgProcess< TMMGLibrary >::mrThisModelPart
protected

◆ mThisParameters

template<MMGLibrary TMMGLibrary>
Parameters Kratos::MmgProcess< TMMGLibrary >::mThisParameters
protected

The model part to compute.


The documentation for this class was generated from the following files: