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.
|
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>
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 | |
Flags & | operator= (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 Flags & | operator|= (const Flags &Other) |
const Flags & | operator&= (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... | |
ModelPart & | SetUpAuxiliaryModelPart () |
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 | |
ModelPart & | GetModelPart () 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) |
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.
TDim | The dimension where the problem is computed |
using Kratos::SkinDetectionProcess< TDim >::ElementPointerVector = GlobalPointersVector<Element> |
using Kratos::SkinDetectionProcess< TDim >::HashMapVectorIntIdsType = std::unordered_map<VectorIndexType, IndexType, VectorIndexHasherType, VectorIndexComparorType> |
Define the map considered for properties ids.
using Kratos::SkinDetectionProcess< TDim >::HashMapVectorIntIdsTypeIteratorType = HashMapVectorIntIdsType::iterator |
Define the HashMapVectorIntIdsType iterator type.
using Kratos::SkinDetectionProcess< TDim >::HashMapVectorIntType = std::unordered_map<VectorIndexType, VectorIndexType, VectorIndexHasherType, VectorIndexComparorType> |
Define the map considered for face ids.
using Kratos::SkinDetectionProcess< TDim >::HashMapVectorIntTypeIteratorType = HashMapVectorIntType::iterator |
Define the HashMapVectorIntTypeIteratorType iterator type.
using Kratos::SkinDetectionProcess< TDim >::HashSetVectorIntType = std::unordered_set<VectorIndexType, VectorIndexHasherType, VectorIndexComparorType> |
Define the set considered for element pointers.
using Kratos::SkinDetectionProcess< TDim >::HashSetVectorIntTypeIteratorType = HashSetVectorIntType::iterator |
Define the HashSetVectorIntTypeIteratorType iterator type.
using Kratos::SkinDetectionProcess< TDim >::NodePointerVector = GlobalPointersVector<Node> |
using Kratos::SkinDetectionProcess< TDim >::VectorIndexComparorType = VectorIndexComparor<VectorIndexType> |
Definition of the key comparor considered.
using Kratos::SkinDetectionProcess< TDim >::VectorIndexHasherType = VectorIndexHasher<VectorIndexType> |
Definition of the hasher considered.
using Kratos::SkinDetectionProcess< TDim >::VectorIndexType = std::vector<IndexType> |
Definition of the vector indexes considered.
Kratos::SkinDetectionProcess< TDim >::SkinDetectionProcess | ( | ModelPart & | rModelPart, |
Parameters | ThisParameters = Parameters(R"({})") |
||
) |
Default constructor.
rModelPart | The model part where the search of neighbours is performed |
ThisParameters | The parameters of configuration |
|
inlinevirtual |
Destructor.
|
protected |
Protected constructor with modified default settings to be defined by derived class.
|
protectedvirtual |
Create new Conditions based on the results of the face detection algorithm.
[in/out] | rMainModelPart Complete ModelPart for the domain. | |
[in/out] | rSkinModelPart Target ModelPart that will contain the new conditions. | |
[in] | rInverseFaceMap | auxiliary data structure describing the outer faces of the domain. |
[in] | rPropertiesFaceMap | auxiliary data structure identifying the property of the element the face belongs to. |
[out] | rNodesInTheSkin | list of all nodes belonging to the model skin. |
[in] | rConditionName | base name for the conditions to be created (number of nodes and dimension will be added dynamically). |
Reimplemented in Kratos::SubModelPartSkinDetectionProcess< TDim >.
|
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 >.
|
protected |
Assign new conditions to the target SubModelPart.
[out] | rAuxiliaryModelPart | Empty ModelPart to be filled with the new conditions. |
[in] | rInverseFaceMap | auxiliary data structure describing the outer faces of the domain. |
[in] | rPropertiesFaceMap | auxiliary data structure identifying the property of the element the face belongs to. |
|
protected |
Create auxiliary data structures identifying the element faces on the outer boundary.
[out] | rInverseFaceMap | describes the outer faces of the domain. |
[out] | rPropertiesFaceMap | identifies the property of the element the face belongs to. |
|
overrideprotectedvirtual |
This method provides the defaults parameters to avoid conflicts between the different constructors.
Reimplemented from Kratos::Process.
Reimplemented in Kratos::SubModelPartSkinDetectionProcess< TDim >.
|
protected |
|
protected |
|
inlineoverridevirtual |
Turn back information as a string.
Reimplemented from Kratos::Process.
Reimplemented in Kratos::SubModelPartSkinDetectionProcess< TDim >.
Kratos::SkinDetectionProcess< TDim >::KRATOS_CLASS_POINTER_DEFINITION | ( | SkinDetectionProcess< TDim > | ) |
Pointer definition of SkinDetectionProcess.
|
inline |
|
inlineoverridevirtual |
Print object's data.
Reimplemented from Kratos::Process.
Reimplemented in Kratos::SubModelPartSkinDetectionProcess< TDim >.
|
inlineoverridevirtual |
Print information about this object.
Reimplemented from Kratos::Process.
Reimplemented in Kratos::SubModelPartSkinDetectionProcess< TDim >.
|
protected |
Assing new conditions to additional ModelParts (if requested by user).
[in] | rAuxiliaryModelPart | ModelPart containing the new conditions. |
|
protected |
Create and prepare the SubModelPart containing the new face conditions.