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::SkinDetectionProcess< TDim > Class Template Reference

An algorithm that looks for neighbour elements in a mesh and creates a submodelpart containing the skin of the disconnected elements (interface elements) More...

#include <skin_detection_process.h>

Inheritance diagram for Kratos::SkinDetectionProcess< TDim >:
Collaboration diagram for Kratos::SkinDetectionProcess< TDim >:

Public Member Functions

Life Cycle
 SkinDetectionProcess (ModelPart &rModelPart, Parameters ThisParameters=Parameters(R"({})"))
 Default constructor. More...
 
virtual ~SkinDetectionProcess ()
 Destructor. More...
 
Operators
void operator() ()
 
Operations
void Execute () override
 This method executes the algorithm that looks for neighbour nodes and elements in a mesh of prismatic elements. 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 void ExecuteInitialize ()
 This function is designed for being called at the beginning of the computations right after reading the model and the groups. More...
 
virtual void ExecuteBeforeSolutionLoop ()
 This function is designed for being execute once before the solution loop but after all of the solvers where built. More...
 
virtual void ExecuteInitializeSolutionStep ()
 This function will be executed at every time step BEFORE performing the solve phase. More...
 
virtual void ExecuteFinalizeSolutionStep ()
 This function will be executed at every time step AFTER performing the solve phase. More...
 
virtual void ExecuteBeforeOutputStep ()
 This function will be executed at every time step BEFORE writing the output. More...
 
virtual void ExecuteAfterOutputStep ()
 This function will be executed at every time step AFTER writing the output. More...
 
virtual void ExecuteFinalize ()
 This function is designed for being called at the end of the computations. 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 Member Functions

Protected Operations
void GenerateFaceMaps (HashMapVectorIntType &rInverseFaceMap, HashMapVectorIntIdsType &rPropertiesFaceMap) const
 Create auxiliary data structures identifying the element faces on the outer boundary. More...
 
ModelPartSetUpAuxiliaryModelPart ()
 Create and prepare the SubModelPart containing the new face conditions. More...
 
void FillAuxiliaryModelPart (ModelPart &rAuxiliaryModelPart, HashMapVectorIntType &rInverseFaceMap, HashMapVectorIntIdsType &rPropertiesFaceMap)
 Assign new conditions to the target SubModelPart. More...
 
virtual void CreateConditions (ModelPart &rMainModelPart, ModelPart &rSkinModelPart, HashMapVectorIntType &rInverseFaceMap, HashMapVectorIntIdsType &rPropertiesFaceMap, std::unordered_set< IndexType > &rNodesInTheSkin, const std::string &rConditionName) const
 Create new Conditions based on the results of the face detection algorithm. More...
 
void SetUpAdditionalSubModelParts (const ModelPart &rAuxiliaryModelPart)
 Assing new conditions to additional ModelParts (if requested by user). More...
 
const Parameters GetDefaultParameters () const override
 This method provides the defaults parameters to avoid conflicts between the different constructors. More...
 
Protected Access
ModelPartGetModelPart () const
 
Parameters GetSettings () const
 
Protected LifeCycle
 SkinDetectionProcess (ModelPart &rModelPart, Parameters Settings, Parameters DefaultSettings)
 Protected constructor with modified default settings to be defined by derived class. More...
 

Type Definitions

using NodePointerVector = GlobalPointersVector< Node >
 
using ElementPointerVector = GlobalPointersVector< Element >
 
using VectorIndexType = std::vector< IndexType >
 Definition of the vector indexes considered. More...
 
using VectorIndexHasherType = VectorIndexHasher< VectorIndexType >
 Definition of the hasher considered. More...
 
using VectorIndexComparorType = VectorIndexComparor< VectorIndexType >
 Definition of the key comparor considered. More...
 
using HashSetVectorIntType = std::unordered_set< VectorIndexType, VectorIndexHasherType, VectorIndexComparorType >
 Define the set considered for element pointers. More...
 
using HashSetVectorIntTypeIteratorType = HashSetVectorIntType::iterator
 Define the HashSetVectorIntTypeIteratorType iterator type. More...
 
using HashMapVectorIntType = std::unordered_map< VectorIndexType, VectorIndexType, VectorIndexHasherType, VectorIndexComparorType >
 Define the map considered for face ids. More...
 
using HashMapVectorIntTypeIteratorType = HashMapVectorIntType::iterator
 Define the HashMapVectorIntTypeIteratorType iterator type. More...
 
using HashMapVectorIntIdsType = std::unordered_map< VectorIndexType, IndexType, VectorIndexHasherType, VectorIndexComparorType >
 Define the map considered for properties ids. More...
 
using HashMapVectorIntIdsTypeIteratorType = HashMapVectorIntIdsType::iterator
 Define the HashMapVectorIntIdsType iterator type. More...
 
 KRATOS_CLASS_POINTER_DEFINITION (SkinDetectionProcess)
 Pointer definition of SkinDetectionProcess. 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<SizeType TDim>
class Kratos::SkinDetectionProcess< TDim >

An algorithm that looks for neighbour elements in a mesh and creates a submodelpart containing the skin of the disconnected elements (interface elements)

For that pourpose if builds an unordered map of the surrounding elements and nodes and performs different checks.

Template Parameters
TDimThe dimension where the problem is computed
Author
Vicente Mataix Ferrandiz

Member Typedef Documentation

◆ ElementPointerVector

◆ HashMapVectorIntIdsType

Define the map considered for properties ids.

◆ HashMapVectorIntIdsTypeIteratorType

template<SizeType TDim>
using Kratos::SkinDetectionProcess< TDim >::HashMapVectorIntIdsTypeIteratorType = HashMapVectorIntIdsType::iterator

Define the HashMapVectorIntIdsType iterator type.

◆ HashMapVectorIntType

Define the map considered for face ids.

◆ HashMapVectorIntTypeIteratorType

template<SizeType TDim>
using Kratos::SkinDetectionProcess< TDim >::HashMapVectorIntTypeIteratorType = HashMapVectorIntType::iterator

Define the HashMapVectorIntTypeIteratorType iterator type.

◆ HashSetVectorIntType

Define the set considered for element pointers.

◆ HashSetVectorIntTypeIteratorType

template<SizeType TDim>
using Kratos::SkinDetectionProcess< TDim >::HashSetVectorIntTypeIteratorType = HashSetVectorIntType::iterator

Define the HashSetVectorIntTypeIteratorType iterator type.

◆ NodePointerVector

template<SizeType TDim>
using Kratos::SkinDetectionProcess< TDim >::NodePointerVector = GlobalPointersVector<Node>

◆ VectorIndexComparorType

Definition of the key comparor considered.

◆ VectorIndexHasherType

Definition of the hasher considered.

◆ VectorIndexType

template<SizeType TDim>
using Kratos::SkinDetectionProcess< TDim >::VectorIndexType = std::vector<IndexType>

Definition of the vector indexes considered.

Constructor & Destructor Documentation

◆ SkinDetectionProcess() [1/2]

template<SizeType TDim>
Kratos::SkinDetectionProcess< TDim >::SkinDetectionProcess ( ModelPart rModelPart,
Parameters  ThisParameters = Parameters(R"({})") 
)

Default constructor.

Parameters
rModelPartThe model part where the search of neighbours is performed
ThisParametersThe parameters of configuration

◆ ~SkinDetectionProcess()

template<SizeType TDim>
virtual Kratos::SkinDetectionProcess< TDim >::~SkinDetectionProcess ( )
inlinevirtual

Destructor.

◆ SkinDetectionProcess() [2/2]

template<SizeType TDim>
Kratos::SkinDetectionProcess< TDim >::SkinDetectionProcess ( ModelPart rModelPart,
Parameters  Settings,
Parameters  DefaultSettings 
)
protected

Protected constructor with modified default settings to be defined by derived class.

Member Function Documentation

◆ CreateConditions()

template<SizeType TDim>
void Kratos::SkinDetectionProcess< TDim >::CreateConditions ( ModelPart rMainModelPart,
ModelPart rSkinModelPart,
HashMapVectorIntType rInverseFaceMap,
HashMapVectorIntIdsType rPropertiesFaceMap,
std::unordered_set< IndexType > &  rNodesInTheSkin,
const std::string &  rConditionName 
) const
protectedvirtual

Create new Conditions based on the results of the face detection algorithm.

Parameters
[in/out]rMainModelPart Complete ModelPart for the domain.
[in/out]rSkinModelPart Target ModelPart that will contain the new conditions.
[in]rInverseFaceMapauxiliary data structure describing the outer faces of the domain.
[in]rPropertiesFaceMapauxiliary data structure identifying the property of the element the face belongs to.
[out]rNodesInTheSkinlist of all nodes belonging to the model skin.
[in]rConditionNamebase name for the conditions to be created (number of nodes and dimension will be added dynamically).

Reimplemented in Kratos::SubModelPartSkinDetectionProcess< TDim >.

◆ Execute()

template<SizeType TDim>
void Kratos::SkinDetectionProcess< TDim >::Execute
overridevirtual

This method executes the algorithm that looks for neighbour nodes and elements in a mesh of prismatic elements.

Reimplemented from Kratos::Process.

Reimplemented in Kratos::SubModelPartSkinDetectionProcess< TDim >.

◆ FillAuxiliaryModelPart()

template<SizeType TDim>
void Kratos::SkinDetectionProcess< TDim >::FillAuxiliaryModelPart ( ModelPart rAuxiliaryModelPart,
HashMapVectorIntType rInverseFaceMap,
HashMapVectorIntIdsType rPropertiesFaceMap 
)
protected

Assign new conditions to the target SubModelPart.

Parameters
[out]rAuxiliaryModelPartEmpty ModelPart to be filled with the new conditions.
[in]rInverseFaceMapauxiliary data structure describing the outer faces of the domain.
[in]rPropertiesFaceMapauxiliary data structure identifying the property of the element the face belongs to.

◆ GenerateFaceMaps()

template<SizeType TDim>
void Kratos::SkinDetectionProcess< TDim >::GenerateFaceMaps ( HashMapVectorIntType rInverseFaceMap,
HashMapVectorIntIdsType rPropertiesFaceMap 
) const
protected

Create auxiliary data structures identifying the element faces on the outer boundary.

Parameters
[out]rInverseFaceMapdescribes the outer faces of the domain.
[out]rPropertiesFaceMapidentifies the property of the element the face belongs to.

◆ GetDefaultParameters()

template<SizeType TDim>
const Parameters Kratos::SkinDetectionProcess< TDim >::GetDefaultParameters
overrideprotectedvirtual

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

Reimplemented from Kratos::Process.

Reimplemented in Kratos::SubModelPartSkinDetectionProcess< TDim >.

◆ GetModelPart()

template<SizeType TDim>
ModelPart & Kratos::SkinDetectionProcess< TDim >::GetModelPart
protected

◆ GetSettings()

template<SizeType TDim>
Parameters Kratos::SkinDetectionProcess< TDim >::GetSettings
protected

◆ Info()

template<SizeType TDim>
std::string Kratos::SkinDetectionProcess< TDim >::Info ( ) const
inlineoverridevirtual

Turn back information as a string.

Reimplemented from Kratos::Process.

Reimplemented in Kratos::SubModelPartSkinDetectionProcess< TDim >.

◆ KRATOS_CLASS_POINTER_DEFINITION()

template<SizeType TDim>
Kratos::SkinDetectionProcess< TDim >::KRATOS_CLASS_POINTER_DEFINITION ( SkinDetectionProcess< TDim >  )

Pointer definition of SkinDetectionProcess.

◆ operator()()

template<SizeType TDim>
void Kratos::SkinDetectionProcess< TDim >::operator() ( )
inline

◆ PrintData()

template<SizeType TDim>
void Kratos::SkinDetectionProcess< TDim >::PrintData ( std::ostream &  rOStream) const
inlineoverridevirtual

Print object's data.

Reimplemented from Kratos::Process.

Reimplemented in Kratos::SubModelPartSkinDetectionProcess< TDim >.

◆ PrintInfo()

template<SizeType TDim>
void Kratos::SkinDetectionProcess< TDim >::PrintInfo ( std::ostream &  rOStream) const
inlineoverridevirtual

Print information about this object.

Reimplemented from Kratos::Process.

Reimplemented in Kratos::SubModelPartSkinDetectionProcess< TDim >.

◆ SetUpAdditionalSubModelParts()

template<SizeType TDim>
void Kratos::SkinDetectionProcess< TDim >::SetUpAdditionalSubModelParts ( const ModelPart rAuxiliaryModelPart)
protected

Assing new conditions to additional ModelParts (if requested by user).

Parameters
[in]rAuxiliaryModelPartModelPart containing the new conditions.

◆ SetUpAuxiliaryModelPart()

template<SizeType TDim>
ModelPart & Kratos::SkinDetectionProcess< TDim >::SetUpAuxiliaryModelPart
protected

Create and prepare the SubModelPart containing the new face conditions.

Returns
A reference to the new SubModelPart.

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