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.
coulomb_frictional_law.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 
34 
38 
42 
55 template< std::size_t TDim, std::size_t TNumNodes, bool TNormalVariation, std::size_t TNumNodesMaster = TNumNodes>
56 class KRATOS_API(CONTACT_STRUCTURAL_MECHANICS_APPLICATION) CoulombFrictionalLaw
57  : public FrictionalLawWithDerivative<TDim,TNumNodes,TNormalVariation, TNumNodesMaster>
58 {
59 public:
60 
63 
66 
69 
72 
74  using IndexType= std::size_t;
75 
77  using SizeType = std::size_t;
78 
80  static constexpr double ZeroTolerance = std::numeric_limits<double>::epsilon();
81 
84 
88 
93  {
94  }
95 
98  {
99  }
100 
103  {
104  }
105 
109 
113 
119  double GetThresholdValue(
120  const Node& rNode,
121  const PairedCondition& rCondition,
122  const ProcessInfo& rCurrentProcessInfo
123  ) override;
124 
135  double GetDerivativeThresholdValue(
136  const Node& rNode,
137  const PairedCondition& rCondition,
138  const ProcessInfo& rCurrentProcessInfo,
139  const DerivativeDataType& rDerivativeData,
140  const MortarConditionMatrices& rMortarConditionMatrices,
141  const IndexType IndexDerivative,
142  const IndexType IndexNode
143  ) override;
144 
148 
152 
156 
158  std::string Info() const override
159  {
160  return "CoulombFrictionalLaw";
161  }
162 
164  void PrintInfo(std::ostream& rOStream) const override
165  {
166  rOStream << Info() << std::endl;
167  }
168 
170  void PrintData(std::ostream& rOStream) const override
171  {
172  rOStream << Info() << std::endl;
173  }
174 
178 
180 protected:
181 
184 
188 
192 
196 
200 
204 
209 
210 private:
216 
220 
224 
229 
233 
234  friend class Serializer;
235 
236  void save(Serializer& rSerializer) const override
237  {
239  }
240 
241  void load(Serializer& rSerializer) override
242  {
243  KRATOS_SERIALIZE_LOAD_BASE_CLASS(rSerializer, BaseType );
244  }
245 
250 
254 }; // Class CoulombFrictionalLaw
255 
257 
260 
261 
265 
267 
268 } // namespace Kratos.
std::string Info() const override
Turn back information as a string.
Definition: periodic_interface_process.hpp:93
This class defines the Coulomb frictional laws.
Definition: coulomb_frictional_law.h:58
void PrintData(std::ostream &rOStream) const override
Print object's data.
Definition: coulomb_frictional_law.h:170
std::size_t IndexType
Index type definition.
Definition: coulomb_frictional_law.h:74
std::size_t SizeType
Size type definition.
Definition: coulomb_frictional_law.h:77
KRATOS_CLASS_POINTER_DEFINITION(CoulombFrictionalLaw)
Counted pointer of CoulombFrictionalLaw.
typename BaseType::DerivativeDataType DerivativeDataType
Definition of the derivative data.
Definition: coulomb_frictional_law.h:68
CoulombFrictionalLaw()
Default constructor.
Definition: coulomb_frictional_law.h:92
std::string Info() const override
Turn back information as a string.
Definition: coulomb_frictional_law.h:158
CoulombFrictionalLaw(const CoulombFrictionalLaw &rhs)
Copy constructor (not really required)
Definition: coulomb_frictional_law.h:97
~CoulombFrictionalLaw()
Destructor.
Definition: coulomb_frictional_law.h:102
typename BaseType::MortarConditionMatrices MortarConditionMatrices
The definition of the mortar operators.
Definition: coulomb_frictional_law.h:71
void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
Definition: coulomb_frictional_law.h:164
This class is a derived class of DerivativeData.
Definition: mortar_classes.h:934
This class defines the base class for frictional laws with derivative.
Definition: frictional_law_with_derivative.h:58
This class derives from the MortarOperator class and it includes the derived operators.
Definition: mortar_classes.h:1273
This class defines the node.
Definition: node.h:65
This is a base class for the conditions paired.
Definition: paired_condition.h:53
ProcessInfo holds the current value of different solution parameters.
Definition: process_info.h:59
The serialization consists in storing the state of an object into a storage format like data file or ...
Definition: serializer.h:123
#define KRATOS_SERIALIZE_SAVE_BASE_CLASS(Serializer, BaseType)
Definition: define.h:812
#define KRATOS_SERIALIZE_LOAD_BASE_CLASS(Serializer, BaseType)
Definition: define.h:815
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
rhs
Definition: generate_frictional_mortar_condition.py:297
def load(f)
Definition: ode_solve.py:307