62 template<SizeType TDim, SizeType TNumNodes, SizeType TNumNodesMaster = TNumNodes>
93 static constexpr
double GapThreshold = 2.0e-3;
96 static constexpr
double ZeroTolerance = std::numeric_limits<double>::epsilon();
118 KdtreeInRadiusWithOBB = 2,
119 KdtreeInBoxWithOBB = 3,
146 NormalContactStress = 0,
147 ScalarLagrangeMultiplier = 1,
148 VectorLagrangeMultiplier = 2,
149 FrictionlessPenaltyMethod = 3,
150 FrictionalPenaltyMethod = 4,
151 OtherFrictionless = 5,
178 Properties::Pointer pPairedProperties = nullptr
200 void Execute()
override;
210 void ExecuteInitializeSolutionStep()
override;
220 void InitializeMortarConditions();
225 virtual void ClearMortarConditions();
230 virtual void CheckContactModelParts();
235 void CreatePointListMortar();
240 void UpdatePointListMortar();
245 void UpdateMortarConditions();
250 void CheckMortarConditions();
260 virtual void ResetContactOperators();
265 const Parameters GetDefaultParameters()
const override;
283 std::string
Info()
const override
285 return "BaseContactSearchProcess";
319 Properties::Pointer mpPairedProperties =
nullptr;
333 virtual void CleanModelPart(
ModelPart& rModelPart);
340 virtual void CheckPairing(
348 virtual void ComputeActiveInactiveNodes();
356 virtual void SetActiveNode(
358 const double CommonEpsilon,
366 virtual void SetInactiveNode(
Node& rNode);
380 virtual Condition::Pointer AddPairing(
383 GeometricalObject::Pointer pObjectSlave,
385 GeometricalObject::Pointer pObjectMaster,
387 IndexMap::Pointer pIndexesPairs,
388 Properties::Pointer pProperties
412 bool IsNotPureSlip();
418 bool IsMultipleSearchs();
424 bool IsNotMultipleSearchs();
430 bool IsInvertedSearch();
436 bool IsNotInvertedSearch();
469 void SearchUsingKDTree(
479 void SearchUsingOcTree(
489 void SetOriginDestinationModelParts(
ModelPart& rModelPart);
501 void ClearComponentsMortarConditions(
NodesArrayType& rNodesArray);
507 void ClearALMFrictionlessMortarConditions(
NodesArrayType& rNodesArray);
518 IndexMap::Pointer pIndexesPairs,
519 const GeometricalObject::Pointer pGeometricalObject1,
520 const GeometricalObject::Pointer pGeometricalObject2,
521 const bool InvertedSearch =
false
533 IndexMap::Pointer pIndexesPairs,
534 const Condition::Pointer pCond1,
535 const Condition::Pointer pCond2,
536 const bool InvertedSearch =
false
542 void FillPointListDestination();
548 void ClearDestinationListAndAssignFlags(
ModelPart& rSubContactModelPart);
565 const double SearchFactor = 3.5,
567 const bool Dynamic =
false
573 inline IndexType GetMaximumConditionsIds();
588 void AddPotentialPairing(
591 GeometricalObject::Pointer pObjectSlave,
593 GeometricalObject::Pointer pObjectMaster,
595 IndexMap::Pointer pIndexesPairs,
596 Properties::Pointer pProperties,
597 const double ActiveCheckFactor,
598 const bool FrictionalProblem
605 inline void ComputeMappedGap(
const bool SearchOrientation);
610 inline void ComputeWeightedReaction();
618 inline void CreateAuxiliaryConditions(
629 void CreateDebugFile(
631 const std::string& rName
638 static inline double Radius(
GeometryType& ThisGeometry);
676 template<SizeType TDim, SizeType TNumNodes, SizeType TNumNodesMaster>
683 template<SizeType TDim, SizeType TNumNodes, SizeType TNumNodesMaster>
void ExecuteFinalizeSolutionStep() override
this function will be executed at every time step AFTER performing the solve phase
Definition: periodic_interface_process.hpp:55
void ExecuteInitialize() override
Definition: periodic_interface_process.hpp:37
std::string Info() const override
Turn back information as a string.
Definition: periodic_interface_process.hpp:93
Short class definition.
Definition: bucket.h:57
std::size_t IndexType
Definition: flags.h:74
Geometry base class.
Definition: geometry.h:71
This class aims to manage meshes for multi-physics simulations.
Definition: model_part.h:77
MeshType::ConditionsContainerType ConditionsContainerType
Condintions container. A vector set of Conditions with their Id's as key.
Definition: model_part.h:183
MeshType::NodesContainerType NodesContainerType
Nodes container. Which is a vector set of nodes with their Id's as key.
Definition: model_part.h:128
This class defines the node.
Definition: node.h:65
This process computes the normal gap.
Definition: normal_gap_process.h:57
This is a base class for the conditions paired.
Definition: paired_condition.h:53
This class provides to Kratos a data structure for I/O based on the standard of JSON.
Definition: kratos_parameters.h:59
Custom Point container to be used by the search.
Definition: point_object.h:56
The base class for all processes in Kratos.
Definition: process.h:49
A generic tree data structure for spatial partitioning.
Definition: tree.h:190
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
std::size_t SizeType
The definition of the size type.
Definition: mortar_classes.h:43
std::istream & operator>>(std::istream &rIStream, LinearMasterSlaveConstraint &rThis)
input stream function
std::ostream & operator<<(std::ostream &rOStream, const LinearMasterSlaveConstraint &rThis)
output stream function
Definition: linear_master_slave_constraint.h:432
ScaleFactor
Definition: generate_frictional_mortar_condition.py:131
str
Definition: generate_gid_list_file.py:35