![]() |
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.
|
This process has as objective to create the contact conditions. More...
#include <base_contact_search_process.h>
Public Types | |
Enum's | |
| enum class | SearchTreeType { KdtreeInRadius = 0 , KdtreeInBox = 1 , KdtreeInRadiusWithOBB = 2 , KdtreeInBoxWithOBB = 3 , OctreeWithOBB = 4 , Kdop = 5 } |
| An enumeration of the different types of search trees that can be used in the contact search process. More... | |
| enum class | CheckResult { Fail = 0 , AlreadyInTheMap = 1 , OK = 2 } |
| An enumeration of the possible results of a check during the contact search process. More... | |
| enum class | CheckGap { NoCheck = 0 , DirectCheck = 1 , MappingCheck = 2 } |
| An enumeration of the different types of gap checks that can be performed during the contact search process. More... | |
| enum class | TypeSolution { NormalContactStress = 0 , ScalarLagrangeMultiplier = 1 , VectorLagrangeMultiplier = 2 , FrictionlessPenaltyMethod = 3 , FrictionalPenaltyMethod = 4 , OtherFrictionless = 5 , OtherFrictional = 6 } |
| An enumeration of the different types of solutions that can be used in the contact search process. More... | |
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 |
Public Member Functions | |
Life Cycle | |
| BaseContactSearchProcess (ModelPart &rMainModelPart, Parameters ThisParameters=Parameters(R"({})"), Properties::Pointer pPairedProperties=nullptr) | |
| The constructor of the search utility uses the following inputs: More... | |
| ~BaseContactSearchProcess () 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 called at the beginning of the computations right after reading the model and the groups. 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 | InitializeMortarConditions () |
| This function initializes the ALM frictionless mortar conditions already created. More... | |
| virtual void | ClearMortarConditions () |
| This function clears the mortar conditions already created. More... | |
| virtual void | CheckContactModelParts () |
| This method checks that the contact model part is unique (so the model parts contain unique contact pairs) More... | |
| void | CreatePointListMortar () |
| This function creates a lists points ready for the Mortar method. More... | |
| void | UpdatePointListMortar () |
| This function updates a lists points ready for the Mortar method. More... | |
| void | UpdateMortarConditions () |
| This function has as pourpose to find potential contact conditions and fill the mortar conditions with the necessary pointers. More... | |
| void | CheckMortarConditions () |
| It checks the current mortar conditions. More... | |
| void | InvertSearch () |
| It sets if the search is inverted. More... | |
| virtual void | ResetContactOperators () |
| This resets the contact operators. 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 |
| Returns a string with information about the contact search process. More... | |
| void | PrintInfo (std::ostream &rOStream) const override |
| Prints information about the contact search process to an output stream. 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 | ExecuteBeforeSolutionLoop () |
| This function is designed for being execute once before the solution loop but after all of the solvers where built. 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... | |
| void | PrintData (std::ostream &rOStream) const override |
| Print object's data. 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 | |
| virtual void | CleanModelPart (ModelPart &rModelPart) |
| This method cleans the model part. More... | |
| virtual void | CheckPairing (ModelPart &rComputingModelPart, IndexType &rConditionId) |
| This method checks the pairing. More... | |
| virtual void | ComputeActiveInactiveNodes () |
| This method computes which nodes are active or inactive after after mapping the coordinates. More... | |
| virtual void | SetActiveNode (Node &rNode, const double CommonEpsilon, const double ScaleFactor=1.0) |
| This method sets as active a node and it sets to an explicit approximation its LM. More... | |
| virtual void | SetInactiveNode (Node &rNode) |
| This method sets as inactive a node and it sets to zero its LM. More... | |
| virtual Condition::Pointer | AddPairing (ModelPart &rComputingModelPart, IndexType &rConditionId, GeometricalObject::Pointer pObjectSlave, const array_1d< double, 3 > &rSlaveNormal, GeometricalObject::Pointer pObjectMaster, const array_1d< double, 3 > &rMasterNormal, IndexMap::Pointer pIndexesPairs, Properties::Pointer pProperties) |
| This method add a new pair to the computing model part. More... | |
| CheckGap | ConvertCheckGap (const std::string &str) |
| This converts the framework string to an enum. More... | |
Protected Access | |
| bool | IsPureSlip () |
| This returns if we consider pure slip. More... | |
| bool | IsNotPureSlip () |
| This returns if we do not consider pure slip. More... | |
| bool | IsMultipleSearchs () |
| This returns if we consider multiple searchs. More... | |
| bool | IsNotMultipleSearchs () |
| This returns if we do not consider multiple searchs. More... | |
| bool | IsInvertedSearch () |
| This returns if we consider inverted search. More... | |
| bool | IsNotInvertedSearch () |
| This returns if we do not consider inverted search. More... | |
Protected Attributes | |
Protected member Variables | |
| ModelPart & | mrMainModelPart |
| Parameters | mThisParameters |
| The main model part. More... | |
| CheckGap | mCheckGap |
| The configuration parameters. More... | |
| TypeSolution | mTypeSolution |
| If the gap is checked during the search. More... | |
| PairedCondition const * | mpReferenceCondition = nullptr |
| The solution type. More... | |
| PointVector | mPointListDestination |
| The prototype reference condition to be created. More... | |
| Properties::Pointer | mpPairedProperties = nullptr |
| A list that contents the all the points (from nodes) from the modelpart. More... | |
Type Definitions | |
| using | NodesArrayType = ModelPart::NodesContainerType |
| Containers definition. More... | |
| using | ConditionsArrayType = ModelPart::ConditionsContainerType |
| using | GeometryType = Geometry< Node > |
| Geometry type definition. More... | |
| using | IndexType = std::size_t |
| Definition of the indextype. More... | |
| using | PointType = PointObject< Condition > |
| Type definitions for the tree. More... | |
| using | PointTypePointer = typename PointType::Pointer |
| Point type definition. More... | |
| using | PointVector = std::vector< PointTypePointer > |
| Point type pointer definition. More... | |
| using | BucketType = Bucket< 3, PointType, PointVector > |
| Point vector definition. More... | |
| using | KDTree = Tree< KDTreePartition< BucketType > > |
| Bucket type definition. More... | |
| using | NormalGapProcessType = NormalGapProcess< TDim, TNumNodes, TNumNodesMaster > |
| KDTree type definition. More... | |
| static constexpr double | GapThreshold = 2.0e-3 |
| Normal gap process type definition. More... | |
| static constexpr double | ZeroTolerance = std::numeric_limits<double>::epsilon() |
| The definition of zero tolerance. More... | |
| KRATOS_CLASS_POINTER_DEFINITION (BaseContactSearchProcess) | |
| Pointer definition of BaseContactSearchProcess. More... | |
| KRATOS_DEFINE_LOCAL_FLAG (INVERTED_SEARCH) | |
| Local Flags. More... | |
| KRATOS_DEFINE_LOCAL_FLAG (CREATE_AUXILIAR_CONDITIONS) | |
| KRATOS_DEFINE_LOCAL_FLAG (MULTIPLE_SEARCHS) | |
| KRATOS_DEFINE_LOCAL_FLAG (PREDEFINE_MASTER_SLAVE) | |
| KRATOS_DEFINE_LOCAL_FLAG (PURE_SLIP) | |
Additional Inherited Members | |
Static Public Member Functions inherited from Kratos::Flags | |
| static const Flags | AllDefined () |
| static const Flags | AllTrue () |
| static Flags | Create (IndexType ThisPosition, bool Value=true) |
This process has as objective to create the contact conditions.
The conditions that can be created are Mortar conditions (or segment to segment) conditions: The created conditions will be between two segments The utility employs the projection.h from MeshingApplication, which works internally using a kd-tree
| TDim | The dimension of work |
| TNumNodes | The number of nodes of the slave |
| TNumNodesMaster | The number of nodes of the master |
| using Kratos::BaseContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >::BucketType = Bucket<3, PointType, PointVector> |
Point vector definition.
KDtree definitions
| using Kratos::BaseContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >::ConditionsArrayType = ModelPart::ConditionsContainerType |
| using Kratos::BaseContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >::GeometryType = Geometry<Node> |
Geometry type definition.
| using Kratos::BaseContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >::IndexType = std::size_t |
Definition of the indextype.
| using Kratos::BaseContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >::KDTree = Tree<KDTreePartition<BucketType> > |
Bucket type definition.
| using Kratos::BaseContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >::NodesArrayType = ModelPart::NodesContainerType |
Containers definition.
| using Kratos::BaseContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >::NormalGapProcessType = NormalGapProcess<TDim, TNumNodes, TNumNodesMaster> |
KDTree type definition.
The type of mapper considered
| using Kratos::BaseContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >::PointType = PointObject<Condition> |
Type definitions for the tree.
| using Kratos::BaseContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >::PointTypePointer = typename PointType::Pointer |
Point type definition.
| using Kratos::BaseContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >::PointVector = std::vector<PointTypePointer> |
Point type pointer definition.
|
strong |
|
strong |
|
strong |
An enumeration of the different types of search trees that can be used in the contact search process.
|
strong |
An enumeration of the different types of solutions that can be used in the contact search process.
| Kratos::BaseContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >::BaseContactSearchProcess | ( | ModelPart & | rMainModelPart, |
| Parameters | ThisParameters = Parameters(R"({})"), |
||
| Properties::Pointer | pPairedProperties = nullptr |
||
| ) |
The constructor of the search utility uses the following inputs:
| rMainModelPart | The model part to be considered |
| ThisParameters | The configuration parameters, it includes:
|
| pPairedProperties | Properties of the pair |
|
overridedefault |
Destructor.
|
protectedvirtual |
This method add a new pair to the computing model part.
| rComputingModelPart | The modelpart used in the assemble of the system |
| rConditionId | The ID of the new condition to be created |
| pObjectSlave | The pointer to the slave condition |
| rSlaveNormal | The normal of the slave condition |
| pObjectMaster | The pointer to the master condition |
| rMasterNormal | The normal of the master condition |
| pIndexesPairs | The map of indexes considered |
| pProperties | The pointer to the Properties of the condition |
|
virtual |
This method checks that the contact model part is unique (so the model parts contain unique contact pairs)
Reimplemented in Kratos::MPCContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >.
| void Kratos::BaseContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >::CheckMortarConditions |
It checks the current mortar conditions.
|
protectedvirtual |
This method checks the pairing.
| rComputingModelPart | The modelpart used in the assemble of the system |
| rConditionId | The ID of the new condition to be created |
Reimplemented in Kratos::AdvancedContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >.
|
protectedvirtual |
This method cleans the model part.
| rModelPart | The model part of interest |
Reimplemented in Kratos::MPCContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >.
|
virtual |
This function clears the mortar conditions already created.
|
protectedvirtual |
This method computes which nodes are active or inactive after after mapping the coordinates.
Reimplemented in Kratos::AdvancedContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >.
|
protected |
This converts the framework string to an enum.
| str | The string |
| void Kratos::BaseContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >::CreatePointListMortar |
This function creates a lists points ready for the Mortar method.
|
overridevirtual |
Execute method is used to execute the Process algorithms.
Reimplemented from Kratos::Process.
|
overridevirtual |
This function will be executed at every time step AFTER performing the solve phase.
Reimplemented from Kratos::Process.
|
overridevirtual |
This function is designed for being called at the beginning of the computations right after reading the model and the groups.
Reimplemented from Kratos::Process.
|
overridevirtual |
This function will be executed at every time step BEFORE performing the solve phase.
Reimplemented from Kratos::Process.
|
overridevirtual |
This method provides the defaults parameters to avoid conflicts between the different constructors.
Reimplemented from Kratos::Process.
|
inlineoverridevirtual |
Returns a string with information about the contact search process.
Reimplemented from Kratos::Process.
| void Kratos::BaseContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >::InitializeMortarConditions |
This function initializes the ALM frictionless mortar conditions already created.
| void Kratos::BaseContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >::InvertSearch |
It sets if the search is inverted.
|
protected |
This returns if we consider inverted search.
|
protected |
This returns if we consider multiple searchs.
|
protected |
This returns if we do not consider inverted search.
|
protected |
This returns if we do not consider multiple searchs.
|
protected |
This returns if we do not consider pure slip.
|
protected |
This returns if we consider pure slip.
| Kratos::BaseContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >::KRATOS_CLASS_POINTER_DEFINITION | ( | BaseContactSearchProcess< TDim, TNumNodes, TNumNodesMaster > | ) |
Pointer definition of BaseContactSearchProcess.
| Kratos::BaseContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >::KRATOS_DEFINE_LOCAL_FLAG | ( | CREATE_AUXILIAR_CONDITIONS | ) |
| Kratos::BaseContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >::KRATOS_DEFINE_LOCAL_FLAG | ( | INVERTED_SEARCH | ) |
Local Flags.
| Kratos::BaseContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >::KRATOS_DEFINE_LOCAL_FLAG | ( | MULTIPLE_SEARCHS | ) |
| Kratos::BaseContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >::KRATOS_DEFINE_LOCAL_FLAG | ( | PREDEFINE_MASTER_SLAVE | ) |
| Kratos::BaseContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >::KRATOS_DEFINE_LOCAL_FLAG | ( | PURE_SLIP | ) |
|
inline |
|
inlineoverridevirtual |
Prints information about the contact search process to an output stream.
| rOStream | The output stream to print to. |
Reimplemented from Kratos::Process.
|
virtual |
This resets the contact operators.
Reimplemented in Kratos::MPCContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >.
|
protectedvirtual |
This method sets as active a node and it sets to an explicit approximation its LM.
| rNode | The node reference to set |
| CommonEpsilon | The penalty value |
| ScaleFactor | The scale factor |
Reimplemented in Kratos::SimpleContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >.
|
protectedvirtual |
This method sets as inactive a node and it sets to zero its LM.
| ItNode | The node reference to set |
| void Kratos::BaseContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >::UpdateMortarConditions |
This function has as pourpose to find potential contact conditions and fill the mortar conditions with the necessary pointers.
| void Kratos::BaseContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >::UpdatePointListMortar |
This function updates a lists points ready for the Mortar method.
|
staticconstexpr |
Normal gap process type definition.
The definition of zero tolerance
|
protected |
The configuration parameters.
|
protected |
The prototype reference condition to be created.
|
protected |
A list that contents the all the points (from nodes) from the modelpart.
|
protected |
The solution type.
|
protected |
|
protected |
The main model part.
|
protected |
If the gap is checked during the search.
|
staticconstexpr |
The definition of zero tolerance.