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.
beam_point_rigid_contact_penalty_3D_condition.hpp
Go to the documentation of this file.
1 //
2 // Project Name: KratosContactMechanicsApplication $
3 // Created by: $Author: JMCarbonell $
4 // Last modified by: $Co-Author: $
5 // Date: $Date: July 2013 $
6 // Revision: $Revision: 0.0 $
7 //
8 //
9 
10 #if !defined(KRATOS_BEAM_POINT_RIGID_CONTACT_PENALTY_3D_CONDITION_H_INCLUDED )
11 #define KRATOS_BEAM_POINT_RIGID_CONTACT_PENALTY_3D_CONDITION_H_INCLUDED
12 
13 
14 // System includes
15 
16 // External includes
17 
18 // Project includes
19 #include "custom_conditions/thermal_contact/beam_point_rigid_contact_condition.hpp"
20 
21 namespace Kratos
22 {
23 
26 
30 
34 
38 
42 
44 
46 class KRATOS_API(CONTACT_MECHANICS_APPLICATION) BeamPointRigidContactPenalty3DCondition
48 {
49 protected:
50 
51  typedef struct
52  {
53  bool Slip;
54  double Sign;
55 
56  double DeltaTime;
58 
62 
64 
65 
66 
67 public:
68 
70 
72  //typedef BoundedVector<double, 3> PointType;
74 
76  // Counted pointer of BeamPointRigidContactCondition
79 
83 
85  BeamPointRigidContactPenalty3DCondition(IndexType NewId, GeometryType::Pointer pGeometry);
86 
87  BeamPointRigidContactPenalty3DCondition(IndexType NewId, GeometryType::Pointer pGeometry, PropertiesType::Pointer pProperties);
88 
89  BeamPointRigidContactPenalty3DCondition(IndexType NewId, GeometryType::Pointer pGeometry, PropertiesType::Pointer pProperties, SpatialBoundingBox::Pointer pRigidWall);
90 
91 
94 
95 
98 
99 
103 
104 
108 
116  Condition::Pointer Create(IndexType NewId, NodesArrayType const&
117  ThisNodes, PropertiesType::Pointer pProperties) const;
118 
123  virtual void InitializeSolutionStep(ProcessInfo& rCurrentProcessInfo);
124 
125 
129  virtual void InitializeNonLinearIteration(ProcessInfo& rCurrentProcessInfo);
130 
144 
145 protected:
148 
149  // A protected default constructor necessary for serialization
151 
155 
157 
164 
165 
169  void InitializeConditionVariables(ConditionVariables& rVariables,
170  const ProcessInfo& rCurrentProcessInfo);
171 
175  virtual void CalculateKinematics(ConditionVariables& rVariables,
176  const ProcessInfo& rCurrentProcessInfo,
177  const double& rPointNumber);
178 
179 
183  virtual void CalculateAndAddKuug(MatrixType& rLeftHandSideMatrix,
184  ConditionVariables& rVariables,
185  double& rIntegrationWeight);
186 
187  virtual void CalculateAndAddKuugTangent(MatrixType& rLeftHandSideMatrix,
188  ConditionVariables& rVariables,
189  double& rIntegrationWeight);
190 
194  virtual void CalculateAndAddContactForces(Vector& rRightHandSideVector,
195  ConditionVariables& rVariables,
196  double& rIntegrationWeight );
197 
198 
199  virtual void CalculateAndAddNormalContactForce(Vector& rRightHandSideVector, ConditionVariables& rVariables, double& rIntegrationWeight);
200 
201 
202  virtual void CalculateAndAddTangentContactForce(Vector& rRightHandSideVector, ConditionVariables& rVariables, double& rIntegrationWeight);
203 
204 
205  double& CalculateNormalForceModulus( double& rNormalForceModulus, ConditionVariables& rVariables );
206 
207  double& CalculateTangentRelativeMovement( double& rTangentRelativeMovement, ConditionVariables& rVariables );
208 
209  double CalculateCoulombsFrictionLaw( double& rTangentForceModulus, double& rNormalForceModulus, ConditionVariables& rVariables );
210 
211  double CalculateFrictionCoefficient(double & rTangentRelativeMovement);
212 
213 
217  virtual void CalculateContactFactors(ConditionVariables &rContact);
218 
229 
230 private:
233 
237 
241 
242 
246 
247 
251 
252 
256 
260 
261  friend class Serializer;
262 
263  virtual void save(Serializer& rSerializer) const
264  {
266  }
267 
268  virtual void load(Serializer& rSerializer)
269  {
271  }
272 
273 
274 }; // Class BeamPointRigidContactPenalty3DCondition
275 
277 
280 
281 
285 
286 
288 /* inline std::istream& operator >> (std::istream& rIStream,
289  BeamPointRigidContactPenalty3DCondition& rThis);
290 */
292 /* inline std::ostream& operator << (std::ostream& rOStream,
293  const BeamPointRigidContactPenalty3DCondition& rThis)
294  {
295  rThis.PrintInfo(rOStream);
296  rOStream << std::endl;
297  rThis.PrintData(rOStream);
298 
299  return rOStream;
300  }*/
302 
303 } // namespace Kratos.
304 
305 #endif // KRATOS_POINT_RIGID_CONTACT_PENALTY_3D_CONDITION_H_INCLUDED defined
Beam Point Rigid Contact Condition for 3D and 2D geometries. (base class)
Definition: beam_point_rigid_contact_condition.hpp:54
Short class definition.
Definition: beam_point_rigid_contact_penalty_3D_condition.hpp:48
TangentialContactVariables mTangentialVariables
Definition: beam_point_rigid_contact_penalty_3D_condition.hpp:156
BeamPointRigidContactPenalty3DCondition()
Definition: beam_point_rigid_contact_penalty_3D_condition.hpp:150
array_1d< double, 3 > PointType
Tensor order 1 definition.
Definition: beam_point_rigid_contact_penalty_3D_condition.hpp:73
KRATOS_CLASS_INTRUSIVE_POINTER_DEFINITION(BeamPointRigidContactPenalty3DCondition)
std::size_t IndexType
Definition: flags.h:74
PointerVector is a container like stl vector but using a vector to store pointers to its data.
Definition: pointer_vector.h:72
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
Modeler::Pointer Create(const std::string &ModelerName, Model &rModel, const Parameters ModelParameters)
Checks if the modeler is registered.
Definition: modeler_factory.cpp:30
void InitializeSolutionStep(ConstructionUtility &rThisUtil, std::string ThermalSubModelPartName, std::string MechanicalSubModelPartName, std::string HeatFluxSubModelPartName, std::string HydraulicPressureSubModelPartName, bool thermal_conditions, bool mechanical_conditions, int phase)
Definition: add_custom_utilities_to_python.cpp:45
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
def load(f)
Definition: ode_solve.py:307
Definition: beam_point_rigid_contact_condition.hpp:102
Definition: beam_point_rigid_contact_penalty_3D_condition.hpp:52
bool Slip
Definition: beam_point_rigid_contact_penalty_3D_condition.hpp:53
double StaticFrictionCoefficient
Definition: beam_point_rigid_contact_penalty_3D_condition.hpp:61
double PreviousTangentForceModulus
Definition: beam_point_rigid_contact_penalty_3D_condition.hpp:57
double Sign
Definition: beam_point_rigid_contact_penalty_3D_condition.hpp:54
double DeltaTime
Definition: beam_point_rigid_contact_penalty_3D_condition.hpp:56
double FrictionCoefficient
Definition: beam_point_rigid_contact_penalty_3D_condition.hpp:59
double DynamicFrictionCoefficient
Definition: beam_point_rigid_contact_penalty_3D_condition.hpp:60