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.
ALM_frictionless_mortar_contact_axisym_condition.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 {
24 
27 
31 
32  using PointType = Point;
33  using GeometryType = Geometry<Node>;
34  using GeometryPointType = Geometry<PointType>;
37 
41 
45 
49 
57 template< std::size_t TNumNodes, bool TNormalVariation >
58 class KRATOS_API(CONTACT_STRUCTURAL_MECHANICS_APPLICATION) AugmentedLagrangianMethodFrictionlessMortarContactAxisymCondition
59  : public AugmentedLagrangianMethodFrictionlessMortarContactCondition<2, TNumNodes, TNormalVariation>
60 {
61 public:
64 
67 
70 
73 
76 
79 
81  using AeData = typename MortarBaseType::AeData;
82 
85 
88 
91 
94 
96  using GeometryPointerType = typename ConditionBaseType::GeometryType::Pointer;
97 
100 
102  using PropertiesPointerType = typename ConditionBaseType::PropertiesType::Pointer;
103 
106 
109 
111  using ConditionArrayListType = std::vector<array_1d<PointType,2>>;
112 
115 
118 
120  static constexpr IndexType MatrixSize = 2 * (TNumNodes + TNumNodes) + TNumNodes;
121 
125 
128  {
129  }
130 
131  // Constructor 1
133  IndexType NewId,
134  GeometryPointerType pGeometry
135  ):BaseType(NewId, pGeometry)
136  {
137  }
138 
139  // Constructor 2
141  IndexType NewId,
142  GeometryPointerType pGeometry,
143  PropertiesPointerType pProperties
144  ):BaseType( NewId, pGeometry, pProperties )
145  {
146  }
147 
148  // Constructor 3
150  IndexType NewId,
151  GeometryPointerType pGeometry,
152  PropertiesPointerType pProperties,
153  GeometryType::Pointer pMasterGeometry
154  ):BaseType( NewId, pGeometry, pProperties, pMasterGeometry )
155  {
156  }
157 
160  {
161  }
162 
165 
169 
170 
174 
182  Condition::Pointer Create(
183  IndexType NewId,
184  NodesArrayType const& rThisNodes,
185  PropertiesPointerType pProperties
186  ) const override;
187 
195  Condition::Pointer Create(
196  IndexType NewId,
197  GeometryPointerType pGeom,
198  PropertiesPointerType pProperties
199  ) const override;
200 
209  Condition::Pointer Create(
210  IndexType NewId,
211  GeometryPointerType pGeom,
212  PropertiesPointerType pProperties,
213  GeometryPointerType pMasterGeom
214  ) const override;
215 
216  /******************************************************************/
217  /********** AUXILLIARY METHODS FOR GENERAL CALCULATIONS ***********/
218  /******************************************************************/
219 
224  bool IsAxisymmetric() const override;
225 
230  double GetAxisymmetricCoefficient(const GeneralVariables& rVariables) const override;
231 
238  double CalculateRadius(const GeneralVariables& rVariables) const;
239 
243 
247 
251 
253  std::string Info() const override
254  {
255  std::stringstream buffer;
256  buffer << "AugmentedLagrangianMethodFrictionlessMortarContactAxisymCondition #" << this->Id();
257  return buffer.str();
258  }
259 
261  void PrintInfo(std::ostream& rOStream) const override
262  {
263  rOStream << "AugmentedLagrangianMethodFrictionlessMortarContactAxisymCondition #" << this->Id();
264  }
265 
267  void PrintData(std::ostream& rOStream) const override
268  {
269  PrintInfo(rOStream);
270  this->GetParentGeometry().PrintData(rOStream);
271  this->GetPairedGeometry().PrintData(rOStream);
272  }
273 
277 
279 
280 protected:
283 
287 
291 
295 
299 
303 
307 
309 private:
312 
316 
320 
324 
328 
332 
336 
337  // Serialization
338 
339  friend class Serializer;
340 
341  void save(Serializer& rSerializer) const override
342  {
344  }
345 
346  void load(Serializer& rSerializer) override
347  {
348  KRATOS_SERIALIZE_LOAD_BASE_CLASS( rSerializer, BaseType );
349  }
350 
352 
353 }; // Class AugmentedLagrangianMethodFrictionlessMortarContactAxisymCondition
354 
356 
359 
363 
365 
366 }// namespace Kratos.
AugmentedLagrangianMethodFrictionlessMortarContactAxisymCondition.
Definition: ALM_frictionless_mortar_contact_axisym_condition.h:60
AugmentedLagrangianMethodFrictionlessMortarContactAxisymCondition(IndexType NewId, GeometryPointerType pGeometry, PropertiesPointerType pProperties, GeometryType::Pointer pMasterGeometry)
Definition: ALM_frictionless_mortar_contact_axisym_condition.h:149
typename MortarBaseType::AeData AeData
Type for the AeData used in the mortar contact condition.
Definition: ALM_frictionless_mortar_contact_axisym_condition.h:81
std::vector< array_1d< PointType, 2 > > ConditionArrayListType
Type for the array list of conditions with points.
Definition: ALM_frictionless_mortar_contact_axisym_condition.h:111
typename MortarBaseType::GeneralVariables GeneralVariables
Type for the general variables used in the mortar contact condition.
Definition: ALM_frictionless_mortar_contact_axisym_condition.h:78
Condition::Pointer Create(IndexType NewId, GeometryPointerType pGeom, PropertiesPointerType pProperties, GeometryPointerType pMasterGeom) const override
Creates a new element pointer from an existing geometry.
void PrintData(std::ostream &rOStream) const override
Print object's data.
Definition: ALM_frictionless_mortar_contact_axisym_condition.h:267
typename ConditionBaseType::GeometryType::Pointer GeometryPointerType
Pointer type for the geometry used in the condition.
Definition: ALM_frictionless_mortar_contact_axisym_condition.h:96
typename MortarBaseType::MortarConditionMatrices MortarConditionMatrices
Type for the matrices used in the mortar contact condition.
Definition: ALM_frictionless_mortar_contact_axisym_condition.h:75
KRATOS_CLASS_INTRUSIVE_POINTER_DEFINITION(AugmentedLagrangianMethodFrictionlessMortarContactAxisymCondition)
Counted pointer of AugmentedLagrangianMethodFrictionlessMortarContactAxisymCondition.
AugmentedLagrangianMethodFrictionlessMortarContactAxisymCondition(IndexType NewId, GeometryPointerType pGeometry, PropertiesPointerType pProperties)
Definition: ALM_frictionless_mortar_contact_axisym_condition.h:140
void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
Definition: ALM_frictionless_mortar_contact_axisym_condition.h:261
AugmentedLagrangianMethodFrictionlessMortarContactAxisymCondition(IndexType NewId, GeometryPointerType pGeometry)
Definition: ALM_frictionless_mortar_contact_axisym_condition.h:132
AugmentedLagrangianMethodFrictionlessMortarContactAxisymCondition(AugmentedLagrangianMethodFrictionlessMortarContactAxisymCondition const &rOther)
Copy constructor.
Definition: ALM_frictionless_mortar_contact_axisym_condition.h:159
std::string Info() const override
Turn back information as a string.
Definition: ALM_frictionless_mortar_contact_axisym_condition.h:253
typename ConditionBaseType::IndexType IndexType
Type for the index used in the condition.
Definition: ALM_frictionless_mortar_contact_axisym_condition.h:93
AugmentedLagrangianMethodFrictionlessMortarContactAxisymCondition()
Default constructor.
Definition: ALM_frictionless_mortar_contact_axisym_condition.h:127
typename ConditionBaseType::PropertiesType::Pointer PropertiesPointerType
Pointer type for the properties used in the condition.
Definition: ALM_frictionless_mortar_contact_axisym_condition.h:102
AugmentedLagrangianMethodFrictionlessMortarContactCondition.
Definition: ALM_frictionless_mortar_contact_condition.h:63
Base class for all Conditions.
Definition: condition.h:59
std::vector< std::size_t > EquationIdVectorType
Definition: condition.h:98
std::vector< DofType::Pointer > DofsVectorType
Definition: condition.h:100
This data will be used to compute the derivatives.
Definition: mortar_classes.h:638
This is the definition dual lagrange multiplier operators including the derivatives.
Definition: mortar_classes.h:1718
This defines the geometrical object, base definition of the element and condition entities.
Definition: geometrical_object.h:58
IntegrationMethod
Definition: geometry_data.h:76
An two node 2D line geometry with linear shape functions.
Definition: line_2d_2.h:65
MortarContactCondition.
Definition: mortar_contact_condition.h:78
MortarKinematicVariablesWithDerivatives.
Definition: mortar_classes.h:490
This class derives from the MortarOperator class and it includes the derived operators.
Definition: mortar_classes.h:1273
PointerVector is a container like stl vector but using a vector to store pointers to its data.
Definition: pointer_vector.h:72
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
double CalculateRadius(const PairedCondition *pCondition, const Vector &rNSlave)
Calculates the radius of axisymmetry.
Definition: mortar_explicit_contribution_utilities.cpp:675
double GetAxisymmetricCoefficient(const PairedCondition *pCondition, const Vector &rNSlave)
This functions computes the integration weight to consider.
Definition: mortar_explicit_contribution_utilities.cpp:662
std::size_t IndexType
Definition: binary_expression.cpp:25
Vector VectorType
Definition: geometrical_transformation_utilities.h:56
Matrix MatrixType
Definition: geometrical_transformation_utilities.h:55
Modeler::Pointer Create(const std::string &ModelerName, Model &rModel, const Parameters ModelParameters)
Checks if the modeler is registered.
Definition: modeler_factory.cpp:30
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
GeometryData::IntegrationMethod IntegrationMethod
Type definition for integration methods.
Definition: exact_mortar_segmentation_utility.h:57
Geometry< PointType > GeometryPointType
Definition: exact_mortar_segmentation_utility.h:54
Geometry< Node > GeometryType
The definition of the geometry.
Definition: mortar_classes.h:37
ModelPart::NodesContainerType NodesArrayType
Definition: gid_gauss_point_container.h:42
def load(f)
Definition: ode_solve.py:307
Configure::PointType PointType
Definition: transfer_utility.h:245