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::AdvancedContactSearchProcess< TDim, TNumNodes, TNumNodesMaster > Class Template Reference

This utilitiy has as objective to create the contact conditions. More...

#include <advanced_contact_search_process.h>

Inheritance diagram for Kratos::AdvancedContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >:
Collaboration diagram for Kratos::AdvancedContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >:

Public Member Functions

Life Cycle
 AdvancedContactSearchProcess (ModelPart &rMainModelPart, Parameters ThisParameters=Parameters(R"({})"), Properties::Pointer pPairedProperties=nullptr)
 The constructor of the search utility uses the following inputs: More...
 
virtual ~AdvancedContactSearchProcess ()=default
 
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...
 
- Public Member Functions inherited from Kratos::BaseContactSearchProcess< TDim, TNumNodes, TNumNodes >
 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...
 
void operator() ()
 
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...
 
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...
 
 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)
 
- 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
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 ComputeActiveInactiveNodes () override
 This method computes which nodes are active or inactive after after mapping the coordinates. More...
 
void CheckPairing (ModelPart &rComputingModelPart, IndexType &rConditionId) override
 This method checks the pairing. More...
 
- Protected Member Functions inherited from Kratos::BaseContactSearchProcess< TDim, TNumNodes, TNumNodes >
virtual void CleanModelPart (ModelPart &rModelPart)
 This method cleans the model part. 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...
 
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...
 

Type Definitions

using BaseType = BaseContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >
 The definition of the base type. More...
 
using NodesArrayType = typename BaseType::NodesArrayType
 General type definitions. More...
 
using ConditionsArrayType = typename BaseType::ConditionsArrayType
 
using GeometryType = typename BaseType::GeometryType
 
using IndexType = std::size_t
 Index type definition. More...
 
static constexpr double ZeroTolerance = std::numeric_limits<double>::epsilon()
 The definition of zero tolerance. More...
 
static constexpr double GapThreshold = 2.0e-4
 The definition of zero tolerance. More...
 
 KRATOS_CLASS_POINTER_DEFINITION (AdvancedContactSearchProcess)
 Pointer definition of AdvancedContactSearchProcess. More...
 

Additional Inherited Members

- Public Types inherited from Kratos::BaseContactSearchProcess< TDim, TNumNodes, TNumNodes >
enum class  SearchTreeType
 An enumeration of the different types of search trees that can be used in the contact search process. More...
 
enum class  CheckResult
 An enumeration of the possible results of a check during the contact search process. More...
 
enum class  CheckGap
 An enumeration of the different types of gap checks that can be performed during the contact search process. More...
 
enum class  TypeSolution
 An enumeration of the different types of solutions that can be used in the contact search process. More...
 
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...
 
- 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)
 
- Static Public Attributes inherited from Kratos::BaseContactSearchProcess< TDim, TNumNodes, TNumNodes >
static constexpr double GapThreshold
 Normal gap process type definition. More...
 
static constexpr double ZeroTolerance
 The definition of zero tolerance. More...
 
- Protected Attributes inherited from Kratos::BaseContactSearchProcess< TDim, TNumNodes, TNumNodes >
ModelPartmrMainModelPart
 
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
 The solution type. More...
 
PointVector mPointListDestination
 The prototype reference condition to be created. More...
 
Properties::Pointer mpPairedProperties
 A list that contents the all the points (from nodes) from the modelpart. More...
 

Detailed Description

template<SizeType TDim, SizeType TNumNodes, SizeType TNumNodesMaster = TNumNodes>
class Kratos::AdvancedContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >

This utilitiy 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

Author
Vicente Mataix Ferrandiz
Template Parameters
TDimThe dimension of work
TNumNodesThe number of nodes of the slave
TNumNodesMasterThe number of nodes of the master

Member Typedef Documentation

◆ BaseType

template<SizeType TDim, SizeType TNumNodes, SizeType TNumNodesMaster = TNumNodes>
using Kratos::AdvancedContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >::BaseType = BaseContactSearchProcess<TDim, TNumNodes, TNumNodesMaster>

The definition of the base type.

◆ ConditionsArrayType

template<SizeType TDim, SizeType TNumNodes, SizeType TNumNodesMaster = TNumNodes>
using Kratos::AdvancedContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >::ConditionsArrayType = typename BaseType::ConditionsArrayType

◆ GeometryType

template<SizeType TDim, SizeType TNumNodes, SizeType TNumNodesMaster = TNumNodes>
using Kratos::AdvancedContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >::GeometryType = typename BaseType::GeometryType

◆ IndexType

template<SizeType TDim, SizeType TNumNodes, SizeType TNumNodesMaster = TNumNodes>
using Kratos::AdvancedContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >::IndexType = std::size_t

Index type definition.

◆ NodesArrayType

template<SizeType TDim, SizeType TNumNodes, SizeType TNumNodesMaster = TNumNodes>
using Kratos::AdvancedContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >::NodesArrayType = typename BaseType::NodesArrayType

General type definitions.

Constructor & Destructor Documentation

◆ AdvancedContactSearchProcess()

template<SizeType TDim, SizeType TNumNodes, SizeType TNumNodesMaster>
Kratos::AdvancedContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >::AdvancedContactSearchProcess ( ModelPart rMainModelPart,
Parameters  ThisParameters = Parameters(R"({})"),
Properties::Pointer  pPairedProperties = nullptr 
)

The constructor of the search utility uses the following inputs:

Parameters
rMainModelPartThe model part to be considered
ThisParametersThe configuration parameters, it includes:
  • The allocation considered in the search
  • The factor considered to check if active or not
  • The integration order considered
  • The size of the bucket
  • The proportion increased of the Radius/Bounding-box volume for the search
  • TypeSearch: 0 means search in radius, 1 means search in box
pPairedPropertiesProperties of the pair
Todo:
Add more types of bounding boxes, as kdops, look bounding_volume_tree.h
Note
Use an InterfacePreprocess object to create such a model part from a regular one:
  1. InterfaceMapper = InterfacePreprocess()
  2. InterfacePart = InterfaceMapper.GenerateInterfacePart(Complete_Model_Part)

◆ ~AdvancedContactSearchProcess()

template<SizeType TDim, SizeType TNumNodes, SizeType TNumNodesMaster = TNumNodes>
virtual Kratos::AdvancedContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >::~AdvancedContactSearchProcess ( )
virtualdefault

Member Function Documentation

◆ CheckPairing()

template<SizeType TDim, SizeType TNumNodes, SizeType TNumNodesMaster>
void Kratos::AdvancedContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >::CheckPairing ( ModelPart rComputingModelPart,
IndexType rConditionId 
)
overrideprotectedvirtual

This method checks the pairing.

Parameters
rComputingModelPartThe modelpart used in the assemble of the system
rConditionIdThe ID of the new condition to be created

Reimplemented from Kratos::BaseContactSearchProcess< TDim, TNumNodes, TNumNodes >.

◆ ComputeActiveInactiveNodes()

template<SizeType TDim, SizeType TNumNodes, SizeType TNumNodesMaster>
void Kratos::AdvancedContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >::ComputeActiveInactiveNodes
overrideprotectedvirtual

This method computes which nodes are active or inactive after after mapping the coordinates.

Reimplemented from Kratos::BaseContactSearchProcess< TDim, TNumNodes, TNumNodes >.

◆ Info()

template<SizeType TDim, SizeType TNumNodes, SizeType TNumNodesMaster = TNumNodes>
std::string Kratos::AdvancedContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >::Info ( ) const
inlineoverridevirtual

Turn back information as a string.

Reimplemented from Kratos::Process.

◆ KRATOS_CLASS_POINTER_DEFINITION()

template<SizeType TDim, SizeType TNumNodes, SizeType TNumNodesMaster = TNumNodes>
Kratos::AdvancedContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >::KRATOS_CLASS_POINTER_DEFINITION ( AdvancedContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >  )

Pointer definition of AdvancedContactSearchProcess.

◆ PrintInfo()

template<SizeType TDim, SizeType TNumNodes, SizeType TNumNodesMaster = TNumNodes>
void Kratos::AdvancedContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >::PrintInfo ( std::ostream &  rOStream) const
inlineoverridevirtual

Print information about this object.

Reimplemented from Kratos::Process.

Member Data Documentation

◆ GapThreshold

template<SizeType TDim, SizeType TNumNodes, SizeType TNumNodesMaster = TNumNodes>
constexpr double Kratos::AdvancedContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >::GapThreshold = 2.0e-4
staticconstexpr

The definition of zero tolerance.

◆ ZeroTolerance

template<SizeType TDim, SizeType TNumNodes, SizeType TNumNodesMaster = TNumNodes>
constexpr double Kratos::AdvancedContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >::ZeroTolerance = std::numeric_limits<double>::epsilon()
staticconstexpr

The definition of zero tolerance.


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