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.
advanced_contact_search_process.h
Go to the documentation of this file.
1 // KRATOS ______ __ __ _____ __ __ __
2 // / ____/___ ____ / /_____ ______/ /_/ ___// /________ _______/ /___ ___________ _/ /
3 // / / / __ \/ __ \/ __/ __ `/ ___/ __/\__ \/ __/ ___/ / / / ___/ __/ / / / ___/ __ `/ /
4 // / /___/ /_/ / / / / /_/ /_/ / /__/ /_ ___/ / /_/ / / /_/ / /__/ /_/ /_/ / / / /_/ / /
5 // \____/\____/_/ /_/\__/\__,_/\___/\__//____/\__/_/ \__,_/\___/\__/\__,_/_/ \__,_/_/ MECHANICS
6 //
7 // License: BSD License
8 // license: ContactStructuralMechanicsApplication/license.txt
9 //
10 // Main authors: Vicente Mataix Ferrandiz
11 //
12 
13 #pragma once
14 
15 // System includes
16 
17 // External includes
18 
19 // Project includes
21 
22 namespace Kratos
23 {
26 
30 
32  using SizeType = std::size_t;
33 
37 
41 
45 
57 template<SizeType TDim, SizeType TNumNodes, SizeType TNumNodesMaster = TNumNodes>
58 class KRATOS_API(CONTACT_STRUCTURAL_MECHANICS_APPLICATION) AdvancedContactSearchProcess
59  : public BaseContactSearchProcess<TDim, TNumNodes, TNumNodesMaster>
60 {
61 public:
64 
67 
72 
74  using IndexType= std::size_t;
75 
77  static constexpr double ZeroTolerance = std::numeric_limits<double>::epsilon();
78 
80  static constexpr double GapThreshold = 2.0e-4;
81 
84 
88 
92 
110  ModelPart& rMainModelPart,
111  Parameters ThisParameters = Parameters(R"({})"),
112  Properties::Pointer pPairedProperties = nullptr
113  );
114 
115  virtual ~AdvancedContactSearchProcess()= default;;
116 
120 
124 
128 
132 
136 
137  /************************************ GET INFO *************************************/
138  /***********************************************************************************/
139 
140  std::string Info() const override
141  {
142  return "AdvancedContactSearchProcess";
143  }
144 
145  /************************************ PRINT INFO ***********************************/
146  /***********************************************************************************/
147 
148  void PrintInfo(std::ostream& rOStream) const override
149  {
150  rOStream << Info();
151  }
152 
156 
158 
159 protected:
160 
163 
167 
171 
175 
179  void ComputeActiveInactiveNodes() override;
180 
186  void CheckPairing(
187  ModelPart& rComputingModelPart,
188  IndexType& rConditionId
189  ) override;
190 
194 
198 
202 
204 
205 private:
208 
212 
216 
220 
226  void ComputeLinearRegressionGapPressure(
227  double& a,
228  double& b
229  );
230 
237  void SetActiveNodeWithRegression(
238  Node& rNode,
239  const double a,
240  const double b
241  );
242 
249  void CorrectScalarMortarLM(
250  Node& rNode,
251  const double a,
252  const double b
253  );
254 
261  void CorrectComponentsMortarLM(
262  Node& rNode,
263  const double a,
264  const double b
265  );
266 
273  void CorrectALMFrictionlessMortarLM(
274  Node& rNode,
275  const double a,
276  const double b
277  );
278 
285  void CorrectALMFrictionlessComponentsMortarLM(
286  Node& rNode,
287  const double a,
288  const double b
289  );
290 
297  void CorrectALMFrictionalMortarLM(
298  Node& rNode,
299  const double a,
300  const double b
301  );
302 
309  void PredictScalarMortarLM(
310  Node& rNode,
311  const double a,
312  const double b
313  );
314 
321  void PredictComponentsMortarLM(
322  Node& rNode,
323  const double a,
324  const double b
325  );
326 
333  void PredictALMFrictionlessMortarLM(
334  Node& rNode,
335  const double a,
336  const double b
337  );
338 
345  void PredictALMFrictionlessComponentsMortarLM(
346  Node& rNode,
347  const double a,
348  const double b
349  );
350 
357  void PredictALMFrictionalMortarLM(
358  Node& rNode,
359  const double a,
360  const double b
361  );
362 
366 
370 
374 
376 
377 }; // Class AdvancedContactSearchProcess
378 
380 
383 
384 
388 
389 /****************************** INPUT STREAM FUNCTION ******************************/
390 /***********************************************************************************/
391 
392 template<SizeType TDim, SizeType TNumNodes, SizeType TNumNodesMaster = TNumNodes>
393 inline std::istream& operator >> (std::istream& rIStream,
395 
396 /***************************** OUTPUT STREAM FUNCTION ******************************/
397 /***********************************************************************************/
398 
399 template<SizeType TDim, SizeType TNumNodes, SizeType TNumNodesMaster = TNumNodes>
400 inline std::ostream& operator << (std::ostream& rOStream,
402 {
403  return rOStream;
404 }
405 
407 
408 } // namespace Kratos.
std::string Info() const override
Turn back information as a string.
Definition: periodic_interface_process.hpp:93
This utilitiy has as objective to create the contact conditions.
Definition: advanced_contact_search_process.h:60
typename BaseType::NodesArrayType NodesArrayType
General type definitions.
Definition: advanced_contact_search_process.h:69
typename BaseType::GeometryType GeometryType
Definition: advanced_contact_search_process.h:71
std::string Info() const override
Turn back information as a string.
Definition: advanced_contact_search_process.h:140
void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
Definition: advanced_contact_search_process.h:148
KRATOS_CLASS_POINTER_DEFINITION(AdvancedContactSearchProcess)
Pointer definition of AdvancedContactSearchProcess.
typename BaseType::ConditionsArrayType ConditionsArrayType
Definition: advanced_contact_search_process.h:70
virtual ~AdvancedContactSearchProcess()=default
This process has as objective to create the contact conditions.
Definition: base_contact_search_process.h:65
std::size_t IndexType
Definition: flags.h:74
This class aims to manage meshes for multi-physics simulations.
Definition: model_part.h:77
This class defines the node.
Definition: node.h:65
This class provides to Kratos a data structure for I/O based on the standard of JSON.
Definition: kratos_parameters.h:59
std::size_t IndexType
The definition of the index type.
Definition: key_hash.h:35
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
ModelPart::ConditionsContainerType ConditionsArrayType
Definition: gid_gauss_point_container.h:43
Geometry< Node > GeometryType
The definition of the geometry.
Definition: mortar_classes.h:37
std::size_t SizeType
The definition of the size type.
Definition: mortar_classes.h:43
ModelPart::NodesContainerType NodesArrayType
Definition: gid_gauss_point_container.h:42
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
a
Definition: generate_stokes_twofluid_element.py:77
b
Definition: generate_total_lagrangian_mixed_volumetric_strain_element.py:31