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.
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
20 #include "includes/node.h"
22 #include "includes/process_info.h"
24 
25 namespace Kratos
26 {
29 
33 
37 
41 
45 
53 class KRATOS_API(CONTACT_STRUCTURAL_MECHANICS_APPLICATION) FrictionalLaw
54 {
55 public:
56 
59 
61  using IndexType= std::size_t;
62 
64  using SizeType = std::size_t;
65 
67  static constexpr double ZeroTolerance = std::numeric_limits<double>::epsilon();
68 
71 
75 
80  {
81  }
82 
85  {
86  }
87 
89  virtual ~FrictionalLaw()
90  {
91  }
92 
96 
100 
107  virtual double GetFrictionCoefficient(
108  const Node& rNode,
109  const PairedCondition& rCondition,
110  const ProcessInfo& rCurrentProcessInfo
111  );
112 
119  virtual double GetThresholdValue(
120  const Node& rNode,
121  const PairedCondition& rCondition,
122  const ProcessInfo& rCurrentProcessInfo
123  );
124 
128 
132 
136 
138  virtual std::string Info() const
139  {
140  return "FrictionalLaw";
141  }
142 
144  virtual void PrintInfo(std::ostream& rOStream) const
145  {
146  rOStream << Info() << std::endl;
147  }
148 
150  virtual void PrintData(std::ostream& rOStream) const
151  {
152  rOStream << Info() << std::endl;
153  }
154 
158 
160 protected:
161 
164 
168 
172 
176 
180 
184 
189 
190 private:
196 
200 
204 
209 
213 
214  friend class Serializer;
215 
216  virtual void save(Serializer& rSerializer) const
217  {
218  }
219 
220  virtual void load(Serializer& rSerializer)
221  {
222  }
223 
228 
232 }; // Class FrictionalLaw
233 
235 
238 
239 
243 
245 
246 } // namespace Kratos.
std::string Info() const override
Turn back information as a string.
Definition: periodic_interface_process.hpp:93
This class defines the base class for frictional laws.
Definition: frictional_law.h:54
std::size_t IndexType
Index type definition.
Definition: frictional_law.h:61
FrictionalLaw()
Default constructor.
Definition: frictional_law.h:79
std::size_t SizeType
Size type definition.
Definition: frictional_law.h:64
KRATOS_CLASS_POINTER_DEFINITION(FrictionalLaw)
Counted pointer of FrictionalLaw.
FrictionalLaw(const FrictionalLaw &rhs)
Copy constructor (not really required)
Definition: frictional_law.h:84
virtual ~FrictionalLaw()
Destructor.
Definition: frictional_law.h:89
virtual void PrintData(std::ostream &rOStream) const
Print object's data.
Definition: frictional_law.h:150
virtual void PrintInfo(std::ostream &rOStream) const
Print information about this object.
Definition: frictional_law.h:144
virtual std::string Info() const
Turn back information as a string.
Definition: frictional_law.h:138
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
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