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.
EP_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 2016 $
6 // Revision: $Revision: 0.0 $
7 //
8 //
9 
10 #if !defined(KRATOS_EP_POINT_RIGID_CONTACT_PENALTY_3D_CONDITION_H_INCLUDED )
11 #define KRATOS_EP_POINT_RIGID_CONTACT_PENALTY_3D_CONDITION_H_INCLUDED
12 
13 // System includes
14 
15 // External includes
16 
17 // Project includes
19 
20 namespace Kratos
21 {
22 
25 
29 
33 
37 
41 
43 
45 class KRATOS_API(CONTACT_MECHANICS_APPLICATION) EPPointRigidContactPenalty3DCondition
47 {
48 
49  protected:
50  typedef struct
51  {
57 
58  typedef struct
59  {
60  // ConstitutiveInformation
66 
67  public:
68 
70 
73 
75  // Counted pointer of PointRigidContactCondition
78 
81 
84 
86  EPPointRigidContactPenalty3DCondition(IndexType NewId, GeometryType::Pointer pGeometry);
87 
88  EPPointRigidContactPenalty3DCondition(IndexType NewId, GeometryType::Pointer pGeometry, PropertiesType::Pointer pProperties);
89 
90  EPPointRigidContactPenalty3DCondition(IndexType NewId, GeometryType::Pointer pGeometry, PropertiesType::Pointer pProperties, SpatialBoundingBox::Pointer pRigidWall);
91 
92 
95 
96 
99 
100 
104 
105 
109 
117  Condition::Pointer Create(IndexType NewId, NodesArrayType const&
118  ThisNodes, PropertiesType::Pointer pProperties) const override;
119 
127  Condition::Pointer Clone(IndexType NewId,
128  NodesArrayType const& ThisNodes) const override;
129 
133  virtual void InitializeSolutionStep(const ProcessInfo& rCurrentProcessInfo) override;
134 
138  virtual void FinalizeSolutionStep(const ProcessInfo& rCurrentProcessInfo) override;
139 
140 
144  virtual void InitializeNonLinearIteration(const ProcessInfo& rCurrentProcessInfo) override;
145 
158 
159 protected:
162 
166 
169 
170  double mElasticYoungModulus; // using MCC + IMPLEX, at the finalizeSolutionStep the Contact Forces are correctly ingrated with the finalized of the Young Modulus at the continuum elements, that is quite different from the one used during the implex step.
171 
172  bool mImplex;
173 
177 
181 
182  void CalculateAndAddKuugTangent(MatrixType& rLeftHandSideMatrix,
183  ConditionVariables& rVariables,
184  double& rIntegrationWeight) override;
185 
186 
187 
188 
189  virtual void CalculateAndAddTangentContactForce(Vector& rRightHandSideVector, ConditionVariables& rVariables, double& rIntegrationWeight) override;
190 
191 
192  bool CalculateFrictionLaw( ConditionVariables & rVariables, ConstitutiveVariables & rConstitutiveVariables, Vector & rTangentForce);
193 
194  virtual double CalculateSomeSortOfArea();
195 
196  double CalculateEffectiveNormalForceModulus( const double& rNormalForceModulus, const double & rArea);
197 
198  Matrix ConvertToTheAppropriateSize( const Matrix & rForceMatrix);
199 
203  virtual void CalculateContactFactors(ConditionVariables &rContact) override;
214 
215 private:
218 
222 
226 
227 
231 
232 
236 
237 
241 
245 
246  friend class Serializer;
247 
248  virtual void save(Serializer& rSerializer) const override
249  {
251  }
252 
253  virtual void load(Serializer& rSerializer) override
254  {
256  }
257 
258 
259 }; // Class EPPointRigidContactPenalty3DCondition
260 
262 
265 
266 
270 
271 
273 /* inline std::istream& operator >> (std::istream& rIStream,
274  EPPointRigidContactPenalty3DCondition& rThis);
275 */
277 /* inline std::ostream& operator << (std::ostream& rOStream,
278  const EPPointRigidContactPenalty3DCondition& rThis)
279  {
280  rThis.PrintInfo(rOStream);
281  rOStream << std::endl;
282  rThis.PrintData(rOStream);
283 
284  return rOStream;
285  }*/
287 
288 } // namespace Kratos.
289 
290 #endif // KRATOS_POINT_RIGID_CONTACT_PENALTY_3D_CONDITION_H_INCLUDED defined
Short class definition.
Definition: EP_point_rigid_contact_penalty_3D_condition.hpp:47
double mElasticYoungModulus
Definition: EP_point_rigid_contact_penalty_3D_condition.hpp:170
EPPointRigidContactPenalty3DCondition()
Serialization constructor.
Definition: EP_point_rigid_contact_penalty_3D_condition.hpp:83
GeometricalInformation mSavedInfo
Definition: EP_point_rigid_contact_penalty_3D_condition.hpp:168
GeometricalInformation mCurrentInfo
Definition: EP_point_rigid_contact_penalty_3D_condition.hpp:167
BoundedVector< double, 3 > PointType
Tensor order 1 definition.
Definition: EP_point_rigid_contact_penalty_3D_condition.hpp:72
bool mImplex
Definition: EP_point_rigid_contact_penalty_3D_condition.hpp:172
KRATOS_CLASS_INTRUSIVE_POINTER_DEFINITION(EPPointRigidContactPenalty3DCondition)
Short class definition.
Definition: point_rigid_contact_penalty_3D_condition.hpp:47
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
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
ModelPart::NodesContainerType NodesArrayType
Definition: gid_gauss_point_container.h:42
def load(f)
Definition: ode_solve.py:307
Definition: EP_point_rigid_contact_penalty_3D_condition.hpp:59
double TangentForceRatio
Definition: EP_point_rigid_contact_penalty_3D_condition.hpp:61
Vector ForceDirection
Definition: EP_point_rigid_contact_penalty_3D_condition.hpp:64
double TangentTangentMatrix
Definition: EP_point_rigid_contact_penalty_3D_condition.hpp:63
double NormalTangentMatrix
Definition: EP_point_rigid_contact_penalty_3D_condition.hpp:62
Definition: EP_point_rigid_contact_penalty_3D_condition.hpp:51
Vector t1
Definition: EP_point_rigid_contact_penalty_3D_condition.hpp:53
Vector t2
Definition: EP_point_rigid_contact_penalty_3D_condition.hpp:54
Vector PreviousStepForceVector
Definition: EP_point_rigid_contact_penalty_3D_condition.hpp:52
Vector n
Definition: EP_point_rigid_contact_penalty_3D_condition.hpp:55
Definition: point_rigid_contact_condition.hpp:100