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.
contact_structural_mechanics_application.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
11 //
12 
13 #pragma once
14 
15 // System includes
16 
17 // External includes
18 
19 // Project includes
20 #include "includes/define.h"
22 #include "includes/variables.h"
23 
24 /* GEOMETRIES */
27 #include "geometries/line_2d_2.h"
28 
29 /* CONDITIONS */
30 // Mortar conditions
42 
43 /* CONSTRAINTS */
45 
46 namespace Kratos
47 {
48 
51 
55 
59 
63 
67 
75 class KRATOS_API(CONTACT_STRUCTURAL_MECHANICS_APPLICATION) KratosContactStructuralMechanicsApplication
76  : public KratosApplication
77 {
78 public:
81 
84 
86  using GeometryPointerType = typename GeometryType::Pointer;
87 
90 
93 
96 
99 
102 
106 
109 
112 
116 
117 
121 
122  void Register() override;
123 
127 
128 
132 
133 
137 
139  std::string Info() const override
140  {
141  return "KratosContactStructuralMechanicsApplication";
142  }
143 
145  void PrintInfo(std::ostream& rOStream) const override
146  {
147  rOStream << Info();
148  PrintData(rOStream);
149  }
150 
152  void PrintData(std::ostream& rOStream) const override
153  {
155  rOStream << "Variables:" << std::endl;
157  rOStream << std::endl;
158  rOStream << "Elements:" << std::endl;
159  KratosComponents<Element>().PrintData(rOStream);
160  rOStream << std::endl;
161  rOStream << "Conditions:" << std::endl;
162  KratosComponents<Condition>().PrintData(rOStream);
163  }
164 
165 
169 
171 protected:
174 
178 
182 
186 
190 
194 
198 
200 private:
203 
207 
208  /* CONDITIONS*/
209  // Mesh tying mortar condition
210  const MeshTyingMortarCondition<2, 2> mMeshTyingMortarCondition2D2N; // 2D Line/Line
211  const MeshTyingMortarCondition<3, 3> mMeshTyingMortarCondition3D3N; // 3D Triangle/Triangle
212  const MeshTyingMortarCondition<3, 4> mMeshTyingMortarCondition3D4N; // 3D Quadrilateral/Quadrilateral
213  const MeshTyingMortarCondition<3, 3, 4> mMeshTyingMortarCondition3D3N4N; // 3D Triangle/Quadrilateral
214  const MeshTyingMortarCondition<3, 4, 3> mMeshTyingMortarCondition3D4N3N; // 3D Quadrilateral/Triangle
215 
216  // ALM Mortar contact conditions
217  // Frictionless cases
218  const AugmentedLagrangianMethodFrictionlessMortarContactCondition<2, 2, false> mALMFrictionlessMortarContactCondition2D2N;
219  const AugmentedLagrangianMethodFrictionlessMortarContactCondition<2, 2, true> mALMNVFrictionlessMortarContactCondition2D2N;
220  const AugmentedLagrangianMethodFrictionlessMortarContactAxisymCondition<2, false> mALMFrictionlessAxisymMortarContactCondition2D2N;
221  const AugmentedLagrangianMethodFrictionlessMortarContactAxisymCondition<2, true> mALMNVFrictionlessAxisymMortarContactCondition2D2N;
222  const AugmentedLagrangianMethodFrictionlessMortarContactCondition<3, 3, false, 3> mALMFrictionlessMortarContactCondition3D3N;
223  const AugmentedLagrangianMethodFrictionlessMortarContactCondition<3, 3, true, 3> mALMNVFrictionlessMortarContactCondition3D3N;
224  const AugmentedLagrangianMethodFrictionlessMortarContactCondition<3, 4, false, 4> mALMFrictionlessMortarContactCondition3D4N;
225  const AugmentedLagrangianMethodFrictionlessMortarContactCondition<3, 4, true, 4> mALMNVFrictionlessMortarContactCondition3D4N;
226  const AugmentedLagrangianMethodFrictionlessMortarContactCondition<3, 3, false, 4> mALMFrictionlessMortarContactCondition3D3N4N;
227  const AugmentedLagrangianMethodFrictionlessMortarContactCondition<3, 3, true, 4> mALMNVFrictionlessMortarContactCondition3D3N4N;
228  const AugmentedLagrangianMethodFrictionlessMortarContactCondition<3, 4, false, 3> mALMFrictionlessMortarContactCondition3D4N3N;
229  const AugmentedLagrangianMethodFrictionlessMortarContactCondition<3, 4, true, 3> mALMNVFrictionlessMortarContactCondition3D4N3N;
230  // Frictionless components cases
231  const AugmentedLagrangianMethodFrictionlessComponentsMortarContactCondition<2, 2, false> mALMFrictionlessComponentsMortarContactCondition2D2N;
232  const AugmentedLagrangianMethodFrictionlessComponentsMortarContactCondition<2, 2, true> mALMNVFrictionlessComponentsMortarContactCondition2D2N;
233  const AugmentedLagrangianMethodFrictionlessComponentsMortarContactCondition<3, 3, false, 3> mALMFrictionlessComponentsMortarContactCondition3D3N;
234  const AugmentedLagrangianMethodFrictionlessComponentsMortarContactCondition<3, 3, true, 3> mALMNVFrictionlessComponentsMortarContactCondition3D3N;
235  const AugmentedLagrangianMethodFrictionlessComponentsMortarContactCondition<3, 3, false, 4> mALMFrictionlessComponentsMortarContactCondition3D3N4N;
236  const AugmentedLagrangianMethodFrictionlessComponentsMortarContactCondition<3, 3, true, 4> mALMNVFrictionlessComponentsMortarContactCondition3D3N4N;
237  const AugmentedLagrangianMethodFrictionlessComponentsMortarContactCondition<3, 4, false, 4> mALMFrictionlessComponentsMortarContactCondition3D4N;
238  const AugmentedLagrangianMethodFrictionlessComponentsMortarContactCondition<3, 4, true, 4> mALMNVFrictionlessComponentsMortarContactCondition3D4N;
239  const AugmentedLagrangianMethodFrictionlessComponentsMortarContactCondition<3, 4, false, 3> mALMFrictionlessComponentsMortarContactCondition3D4N3N;
240  const AugmentedLagrangianMethodFrictionlessComponentsMortarContactCondition<3, 4, true, 3> mALMNVFrictionlessComponentsMortarContactCondition3D4N3N;
241  // Frictional cases
242  const AugmentedLagrangianMethodFrictionalMortarContactCondition<2, 2, false> mALMFrictionalMortarContactCondition2D2N;
243  const AugmentedLagrangianMethodFrictionalMortarContactCondition<2, 2, true> mALMNVFrictionalMortarContactCondition2D2N;
244  const AugmentedLagrangianMethodFrictionalMortarContactAxisymCondition<2, false> mALMFrictionalAxisymMortarContactCondition2D2N;
245  const AugmentedLagrangianMethodFrictionalMortarContactAxisymCondition<2, true> mALMNVFrictionalAxisymMortarContactCondition2D2N;
246  const AugmentedLagrangianMethodFrictionalMortarContactCondition<3, 3, false, 3> mALMFrictionalMortarContactCondition3D3N;
247  const AugmentedLagrangianMethodFrictionalMortarContactCondition<3, 3, true, 3> mALMNVFrictionalMortarContactCondition3D3N;
248  const AugmentedLagrangianMethodFrictionalMortarContactCondition<3, 4, false, 4> mALMFrictionalMortarContactCondition3D4N;
249  const AugmentedLagrangianMethodFrictionalMortarContactCondition<3, 4, true, 4> mALMNVFrictionalMortarContactCondition3D4N;
250  const AugmentedLagrangianMethodFrictionalMortarContactCondition<3, 3, false, 4> mALMFrictionalMortarContactCondition3D3N4N;
251  const AugmentedLagrangianMethodFrictionalMortarContactCondition<3, 3, true, 4> mALMNVFrictionalMortarContactCondition3D3N4N;
252  const AugmentedLagrangianMethodFrictionalMortarContactCondition<3, 4, false, 3> mALMFrictionalMortarContactCondition3D4N3N;
253  const AugmentedLagrangianMethodFrictionalMortarContactCondition<3, 4, true, 3> mALMNVFrictionalMortarContactCondition3D4N3N;
254  // Frictionless penalty cases
255  const PenaltyMethodFrictionlessMortarContactCondition<2, 2, false> mPenaltyFrictionlessMortarContactCondition2D2N;
256  const PenaltyMethodFrictionlessMortarContactCondition<2, 2, true> mPenaltyNVFrictionlessMortarContactCondition2D2N;
257  const PenaltyMethodFrictionlessMortarContactAxisymCondition<2, false> mPenaltyFrictionlessAxisymMortarContactCondition2D2N;
258  const PenaltyMethodFrictionlessMortarContactAxisymCondition<2, true> mPenaltyNVFrictionlessAxisymMortarContactCondition2D2N;
259  const PenaltyMethodFrictionlessMortarContactCondition<3, 3, false, 3> mPenaltyFrictionlessMortarContactCondition3D3N;
260  const PenaltyMethodFrictionlessMortarContactCondition<3, 3, true, 3> mPenaltyNVFrictionlessMortarContactCondition3D3N;
261  const PenaltyMethodFrictionlessMortarContactCondition<3, 4, false, 4> mPenaltyFrictionlessMortarContactCondition3D4N;
262  const PenaltyMethodFrictionlessMortarContactCondition<3, 4, true, 4> mPenaltyNVFrictionlessMortarContactCondition3D4N;
263  const PenaltyMethodFrictionlessMortarContactCondition<3, 3, false, 4> mPenaltyFrictionlessMortarContactCondition3D3N4N;
264  const PenaltyMethodFrictionlessMortarContactCondition<3, 3, true, 4> mPenaltyNVFrictionlessMortarContactCondition3D3N4N;
265  const PenaltyMethodFrictionlessMortarContactCondition<3, 4, false, 3> mPenaltyFrictionlessMortarContactCondition3D4N3N;
266  const PenaltyMethodFrictionlessMortarContactCondition<3, 4, true, 3> mPenaltyNVFrictionlessMortarContactCondition3D4N3N;
267  // Frictional penalty cases
268  const PenaltyMethodFrictionalMortarContactCondition<2, 2, false> mPenaltyFrictionalMortarContactCondition2D2N;
269  const PenaltyMethodFrictionalMortarContactCondition<2, 2, true> mPenaltyNVFrictionalMortarContactCondition2D2N;
270  const PenaltyMethodFrictionalMortarContactAxisymCondition<2, false> mPenaltyFrictionalAxisymMortarContactCondition2D2N;
271  const PenaltyMethodFrictionalMortarContactAxisymCondition<2, true> mPenaltyNVFrictionalAxisymMortarContactCondition2D2N;
272  const PenaltyMethodFrictionalMortarContactCondition<3, 3, false, 3> mPenaltyFrictionalMortarContactCondition3D3N;
273  const PenaltyMethodFrictionalMortarContactCondition<3, 3, true, 3> mPenaltyNVFrictionalMortarContactCondition3D3N;
274  const PenaltyMethodFrictionalMortarContactCondition<3, 4, false, 4> mPenaltyFrictionalMortarContactCondition3D4N;
275  const PenaltyMethodFrictionalMortarContactCondition<3, 4, true, 4> mPenaltyNVFrictionalMortarContactCondition3D4N;
276  const PenaltyMethodFrictionalMortarContactCondition<3, 3, false, 4> mPenaltyFrictionalMortarContactCondition3D3N4N;
277  const PenaltyMethodFrictionalMortarContactCondition<3, 3, true, 4> mPenaltyNVFrictionalMortarContactCondition3D3N4N;
278  const PenaltyMethodFrictionalMortarContactCondition<3, 4, false, 3> mPenaltyFrictionalMortarContactCondition3D4N3N;
279  const PenaltyMethodFrictionalMortarContactCondition<3, 4, true, 3> mPenaltyNVFrictionalMortarContactCondition3D4N3N;
280 
281  // MPC Conditions
282  const MPCMortarContactCondition<2, 2> mMPCMortarContactCondition2D2N;
283  const MPCMortarContactCondition<3, 3, 3> mMPCMortarContactCondition3D3N;
284  const MPCMortarContactCondition<3, 4, 4> mMPCMortarContactCondition3D4N;
285  const MPCMortarContactCondition<3, 3, 4> mMPCMortarContactCondition3D3N4N;
286  const MPCMortarContactCondition<3, 4, 3> mMPCMortarContactCondition3D4N3N;
287 
289  const ContactMasterSlaveConstraint mContactMasterSlaveConstraint;
290 
294 
295 
299 
300 
304 
305 
309 
310 
314 
317 
320 
321 
323 
324 }; // Class KratosContactStructuralMechanicsApplication
325 
327 
330 
331 
335 
337 } // namespace Kratos.
338 
339 
PeriodicInterfaceProcess & operator=(const PeriodicInterfaceProcess &)=delete
std::string Info() const override
Turn back information as a string.
Definition: periodic_interface_process.hpp:93
This is a constraint for contact mechanics based in a linear kinematic MPC constriant.
Definition: contact_master_slave_constraint.h:54
Geometry base class.
Definition: geometry.h:71
PointerVector< TPointType > PointsArrayType
Definition: geometry.h:118
This class defines the interface with kernel for all applications in Kratos.
Definition: kratos_application.h:91
Definition: kratos_components.h:253
virtual void PrintData(std::ostream &rOStream) const
Print object's data.
Definition: kratos_components.h:403
KratosComponents class encapsulates a lookup table for a family of classes in a generic way.
Definition: kratos_components.h:49
This application features Elements, Conditions, Constitutive laws and Utilities for structural analys...
Definition: contact_structural_mechanics_application.h:77
typename GeometryType::PointsArrayType PointsArrayType
Definition of the points array type.
Definition: contact_structural_mechanics_application.h:89
void PrintData(std::ostream &rOStream) const override
Print object's data.
Definition: contact_structural_mechanics_application.h:152
std::string Info() const override
Turn back information as a string.
Definition: contact_structural_mechanics_application.h:139
KRATOS_CLASS_POINTER_DEFINITION(KratosContactStructuralMechanicsApplication)
Pointer definition of KratosContactStructuralMechanicsApplication.
typename GeometryType::Pointer GeometryPointerType
Definition of the geometry type.
Definition: contact_structural_mechanics_application.h:86
~KratosContactStructuralMechanicsApplication() override=default
Destructor.
void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
Definition: contact_structural_mechanics_application.h:145
An two node 2D line geometry with linear shape functions.
Definition: line_2d_2.h:65
A four node 3D quadrilateral geometry with bi-linear shape functions.
Definition: quadrilateral_3d_4.h:76
A three node 3D triangle geometry with linear shape functions.
Definition: triangle_3d_3.h:77
#define KRATOS_WATCH(variable)
Definition: define.h:806
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
KRATOS_API_EXTERN template class KratosComponents< Condition >
Definition: condition.h:1191
KRATOS_API_EXTERN template class KratosComponents< Element >
Definition: element.h:1240