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_domain_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_CONTACT_DOMAIN_CONDITION_H_INCLUDED )
11 #define KRATOS_CONTACT_DOMAIN_CONDITION_H_INCLUDED
12 
13 // System includes
14 
15 // External includes
16 
17 // Project includes
19 #include "includes/checks.h"
20 #include "includes/element.h"
21 #include "includes/condition.h"
22 #include "includes/kratos_flags.h"
23 
26 
27 namespace Kratos
28 {
37 
41 
45 
46 
47 class KRATOS_API(CONTACT_MECHANICS_APPLICATION) ContactDomainCondition
48  : public Condition
49 {
50 public:
51 
52 
58  typedef ConstitutiveLawType::Pointer ConstitutiveLawPointerType;
61 
63  typedef Node NodeType;
68 
69 
78 
82 
86 
87 protected:
88 
93  typedef struct
94  {
95  //Geometrical surface tangent gaps:
96  ScalarBaseType CurrentGap; //tangential gap
97 
98  //Contact constraint parameters
99  double Multiplier; //Lagrange Multipliyer tangent
100  double Penalty; //Penalty Parameter tangent
101 
102  //Variables of the contact domain elements
103  Vector dN_dt; //Discrete variacion of the shape function in the current tangent direction
104  std::vector<Vector > Tsigma;
105 
107  double GapSign;
108 
110 
111 
112 
113  typedef struct
114  {
117 
120 
121  //geometrical variables
123  double CurrentArea;
124 
125  double FactorArea;
126 
128 
129  double ElementSize;
130 
132 
133 
134  typedef struct
135  {
136  Flags Options; //calculation options
137 
138  //Geometrical gaps:
139  SurfaceScalar CurrentGap; //normal and tangential gap
140 
141  //The stabilization factor or penalty factor
143 
144  //Friction:
145  double FrictionCoefficient; //total friction coeffitient mu
146  double TangentialGapSign; //sign or direction of the tangential gap
147 
148  SurfaceScalar Multiplier; //Lagrange Multipliyer normal and tangent
149  SurfaceScalar Penalty; //Penalty Parameter normal and tangent
150 
151 
152  //variables of the contact element 2D
153  Vector dN_dn; //Discrete variacion of the shape function in the current normal direction
154  Vector dN_dt; //Discrete variacion of the shape function in the current tangent direction
155  Vector dN_drn; //Discrete variacion of the shape function in the reference normal direction
156 
157  std::vector<Vector > Nsigma;
158  std::vector<Vector > Tsigma;
159 
160  //Geometric variables
162 
163  std::vector<BaseLengths> CurrentBase; //Current Base Lengths variables
164  std::vector<BaseLengths> ReferenceBase; //Reference Base Lengths variables
165 
166  //Resultant mechanical tractions
167  SurfaceScalar CurrentTensil; //Tangential and Normal modulus of the traction vector components
168 
169 
170  //Tangent parameters used in 3D
172 
173 
175 
176 
177 
178  typedef struct
179  {
182 
185 
187 
188 
190  {
191  double detF;
192  double detJ;
199 
201 
202  //Axisymmetric
205 
206  //variables including all integration points
209 
213 
219  {
220  pDN_De=&rDN_De;
221  };
222 
223  void SetShapeFunctions(const Matrix& rNcontainer)
224  {
225  pNcontainer=&rNcontainer;
226  };
227 
228 
234  {
235  return *pDN_De;
236  };
237 
239  {
240  return *pNcontainer;
241  };
242 
243  };
244 
245 
247  {
248 
249  //Iteration counter:
250  int IterationCounter; //the number of the step iteration
251 
252  //The stabilization parameter and penalty parameter
255 
256  //Geometrical gaps:
257  SurfaceScalar PreviousGap; //effective normal and tangential gap in previous time step configuration
258 
259  //Geometric variables
262 
263  //Tangent variables in 3D
265 
266  //Contact condition conectivities
267  std::vector<unsigned int> nodes;
268  std::vector<unsigned int> order;
269  std::vector<unsigned int> slaves;
270 
271  //Resultant mechanical tractions
272  PointType TractionVector; //Traction Vector in the reference configuration
273 
274  //Pointer Variables
279 
284  void SetMasterGeometry (GeometryType& rGeometry){ mpMasterGeometry = &rGeometry; }
285  void SetMasterElement (ElementType& rElement){ mpMasterElement = &rElement; }
286  void SetMasterCondition (ConditionType& rCondition){ mpMasterCondition = &rCondition; }
287  void SetMasterNode (NodeType& rNode){ mpMasterNode = &rNode; }
288 
293  GeometryType& GetMasterGeometry() { return (*mpMasterGeometry); }
294  ElementType& GetMasterElement() { return (*mpMasterElement); }
295  ConditionType& GetMasterCondition() { return (*mpMasterCondition); }
296  NodeType& GetMasterNode() { return (*mpMasterNode); }
297 
298 
299  };
300 
301 
302 
303 
312  {
313  private:
314 
315  //for calculation local system with compacted LHS and RHS
316  MatrixType *mpLeftHandSideMatrix;
317  VectorType *mpRightHandSideVector;
318 
319  //for calculation local system with LHS and RHS components
320  std::vector<MatrixType> *mpLeftHandSideMatrices;
321  std::vector<VectorType> *mpRightHandSideVectors;
322 
323  //LHS variable components
324  const std::vector< Variable< MatrixType > > *mpLeftHandSideVariables;
325 
326  //RHS variable components
327  const std::vector< Variable< VectorType > > *mpRightHandSideVariables;
328 
329 
330  public:
331 
332  //calculation flags
334 
338  void SetLeftHandSideMatrix( MatrixType& rLeftHandSideMatrix ) { mpLeftHandSideMatrix = &rLeftHandSideMatrix; };
339  void SetLeftHandSideMatrices( std::vector<MatrixType>& rLeftHandSideMatrices ) { mpLeftHandSideMatrices = &rLeftHandSideMatrices; };
340  void SetLeftHandSideVariables(const std::vector< Variable< MatrixType > >& rLeftHandSideVariables ) { mpLeftHandSideVariables = &rLeftHandSideVariables; };
341 
342  void SetRightHandSideVector( VectorType& rRightHandSideVector ) { mpRightHandSideVector = &rRightHandSideVector; };
343  void SetRightHandSideVectors( std::vector<VectorType>& rRightHandSideVectors ) { mpRightHandSideVectors = &rRightHandSideVectors; };
344  void SetRightHandSideVariables(const std::vector< Variable< VectorType > >& rRightHandSideVariables ) { mpRightHandSideVariables = &rRightHandSideVariables; };
345 
346 
350  MatrixType& GetLeftHandSideMatrix() { return *mpLeftHandSideMatrix; };
351  std::vector<MatrixType>& GetLeftHandSideMatrices() { return *mpLeftHandSideMatrices; };
352  const std::vector< Variable< MatrixType > >& GetLeftHandSideVariables() { return *mpLeftHandSideVariables; };
353 
354  VectorType& GetRightHandSideVector() { return *mpRightHandSideVector; };
355  std::vector<VectorType>& GetRightHandSideVectors() { return *mpRightHandSideVectors; };
356  const std::vector< Variable< VectorType > >& GetRightHandSideVariables() { return *mpRightHandSideVariables; };
357 
358  };
359 
360 
361 public:
362 
365 
366 
370 
371 
374 
375  ContactDomainCondition(IndexType NewId, GeometryType::Pointer pGeometry);
376 
377  ContactDomainCondition(IndexType NewId, GeometryType::Pointer pGeometry, PropertiesType::Pointer pProperties);
378 
381 
382 
384  virtual ~ContactDomainCondition();
385 
389 
392 
393 
397 
405  Condition::Pointer Create(IndexType NewId, NodesArrayType const& ThisNodes, PropertiesType::Pointer pProperties) const override;
406 
414  Condition::Pointer Clone(IndexType NewId,
415  NodesArrayType const& ThisNodes) const override;
416 
417  //************* GETTING METHODS
418 
423  IntegrationMethod GetIntegrationMethod() const override;
424 
428  void GetDofList(DofsVectorType& rConditionalDofList, const ProcessInfo& rCurrentProcessInfo) const override;
429 
433  void EquationIdVector(EquationIdVectorType& rResult, const ProcessInfo& rCurrentProcessInfo) const override;
434 
438  void GetValuesVector(Vector& rValues, int Step = 0) const override;
439 
443  void GetFirstDerivativesVector(Vector& rValues, int Step = 0) const override;
444 
448  void GetSecondDerivativesVector(Vector& rValues, int Step = 0) const override;
449 
450 
451 
452  //on integration points:
464  //SET
468  void SetValuesOnIntegrationPoints(const Variable<double>& rVariable, const std::vector<double>& rValues, const ProcessInfo& rCurrentProcessInfo) override;
472  void SetValuesOnIntegrationPoints(const Variable<Vector>& rVariable, const std::vector<Vector>& rValues, const ProcessInfo& rCurrentProcessInfo) override;
473 
477  void SetValuesOnIntegrationPoints(const Variable<Matrix>& rVariable, const std::vector<Matrix>& rValues, const ProcessInfo& rCurrentProcessInfo) override;
478 
479 
480 
481  //************* STARTING - ENDING METHODS
482 
487  void Initialize(const ProcessInfo& CurrentProcessInfo) override;
488 
489 
493  void InitializeSolutionStep(const ProcessInfo& CurrentProcessInfo) override;
494 
498  void InitializeNonLinearIteration(const ProcessInfo& CurrentProcessInfo) override;
499 
500 
504  void FinalizeNonLinearIteration(const ProcessInfo& CurrentProcessInfo) override;
505 
506 
510  void FinalizeSolutionStep(const ProcessInfo& CurrentProcessInfo) override;
511 
512 
513 
514  //************* COMPUTING METHODS
515 
525  void CalculateLocalSystem(MatrixType& rLeftHandSideMatrix, VectorType& rRightHandSideVector,const ProcessInfo& rCurrentProcessInfo) override;
526 
536  void CalculateLocalSystem(std::vector< MatrixType >& rLeftHandSideMatrices,
537  const std::vector< Variable< MatrixType > >& rLHSVariables,
538  std::vector< VectorType >& rRightHandSideVectors,
539  const std::vector< Variable< VectorType > >& rRHSVariables,
540  const ProcessInfo& rCurrentProcessInfo);
541 
548  void CalculateRightHandSide(VectorType& rRightHandSideVector,const ProcessInfo& rCurrentProcessInfo) override;
549 
550 
558  void CalculateRightHandSide(std::vector< VectorType >& rRightHandSideVectors,
559  const std::vector< Variable< VectorType > >& rRHSVariables,
560  const ProcessInfo& rCurrentProcessInfo);
561 
568  void CalculateLeftHandSide (MatrixType& rLeftHandSideMatrix, const ProcessInfo& rCurrentProcessInfo) override;
569 
570 
580  virtual void AddExplicitContribution(const VectorType& rRHSVector,
581  const Variable<VectorType>& rRHSVariable,
582  const Variable<array_1d<double,3> >& rDestinationVariable,
583  const ProcessInfo& rCurrentProcessInfo) override;
584 
585 
586  //on integration points:
590  void CalculateOnIntegrationPoints(const Variable<double>& rVariable, std::vector<double>& rOutput, const ProcessInfo& rCurrentProcessInfo) override;
591 
595  void CalculateOnIntegrationPoints(const Variable<Vector>& rVariable, std::vector<Vector>& rOutput, const ProcessInfo& rCurrentProcessInfo) override;
596 
600  void CalculateOnIntegrationPoints(const Variable<Matrix >& rVariable, std::vector< Matrix >& rOutput, const ProcessInfo& rCurrentProcessInfo) override;
601 
602 
603  //************************************************************************************
604  //************************************************************************************
612  int Check(const ProcessInfo& rCurrentProcessInfo) const override;
613 
614  //std::string Info() const;
615 
619 
626 
628  // virtual String Info() const;
629 
631  // virtual void PrintInfo(std::ostream& rOStream) const;
632 
634  // virtual void PrintData(std::ostream& rOStream) const;
639 
640 protected:
646 
651 
656 
661 
665 
669  virtual void SetMasterGeometry()
670  {
671  KRATOS_THROW_ERROR( std::invalid_argument, "Calling base class in contact domain", "" )
672  };
673 
674 
678  virtual void CalculateContactFactor(const ProcessInfo& rCurrentProcessInfo)
679  {
680  KRATOS_THROW_ERROR( std::invalid_argument, "Calling base class in contact domain", "" )
681  };
682 
686  virtual void CalculatePreviousGap()
687  {
688  KRATOS_THROW_ERROR( std::invalid_argument, "Calling base class in contact domain", "" )
689 
690  };
691 
692 
696  virtual void InitializeConditionVariables (ConditionVariables& rVariables,
697  const ProcessInfo& rCurrentProcessInfo);
698 
702  virtual void CalculateConditionSystem(LocalSystemComponents& rLocalSystem,
703  const ProcessInfo& rCurrentProcessInfo);
707  void ClearNodalForces ();
708 
709 
713  void CalculateNodalForces (const ProcessInfo& CurrentProcessInfo);
714 
715 
719  void ClearMasterElementNodalForces(ElementType& rMasterElement);
720 
721 
725  void SetContactIntegrationVariable (Vector & rContactVariable,
726  std::vector<Vector> & rMasterVariables,
727  const unsigned int& rPointNumber);
728 
732  virtual void CalculateKinematics(ConditionVariables& rVariables,
733  const ProcessInfo& rCurrentProcessInfo,
734  const unsigned int& rPointNumber);
735 
739  Matrix& CalculateDeltaPosition(Matrix & rDeltaPosition);
740 
745  const ProcessInfo& rCurrentProcessInfo)
746  {
747  KRATOS_THROW_ERROR( std::invalid_argument, "Calling base class in contact domain", "" )
748 
749  };
753  virtual void CalculateDomainShapeN(ConditionVariables& rVariables)
754  {
755  KRATOS_THROW_ERROR( std::invalid_argument, "Calling base class in contact domain", "" )
756 
757  };
758 
759 
760 
764  virtual void CalculateRelativeVelocity(ConditionVariables& rVariables,
765  PointType & TangentVelocity,
766  const ProcessInfo& rCurrentProcessInfo);
767 
771  virtual void CalculateRelativeDisplacement(ConditionVariables& rVariables,
772  PointType & TangentDisplacement,
773  const ProcessInfo& rCurrentProcessInfo);
774 
779  {
780  KRATOS_THROW_ERROR( std::invalid_argument, "Calling base class in contact domain", "" )
781 
782  };
783 
784 
788  virtual void CalculateFrictionCoefficient(ConditionVariables& rVariables,
789  const PointType & TangentVelocity);
790 
791 
795  virtual double& CalculateIntegrationWeight(double& rIntegrationWeight);
796 
797 
801  virtual void InitializeSystemMatrices(MatrixType& rLeftHandSideMatrix,
802  VectorType& rRightHandSideVector,
803  Flags& rCalculationFlags);
804 
805 
809  void CalculatePerturbedLeftHandSide (MatrixType& rLeftHandSideMatrix,
810  const ProcessInfo& rCurrentProcessInfo);
811 
815  virtual void CalculateAndAddLHS(LocalSystemComponents& rLocalSystem,
816  ConditionVariables& rVariables,
817  double& rIntegrationWeight);
818 
822  virtual void CalculateAndAddRHS(LocalSystemComponents& rLocalSystem,
823  ConditionVariables& rVariables,
824  double& rIntegrationWeight);
825 
826 
830  virtual void CalculateAndAddKuug(MatrixType& rLeftHandSideMatrix,
831  ConditionVariables& rVariables,
832  double& rIntegrationWeight);
833 
837  virtual void CalculateContactStiffness (double &Kcont,ConditionVariables& rVariables,
838  unsigned int& ndi,unsigned int& ndj,
839  unsigned int& idir,unsigned int& jdir)
840  {
841  KRATOS_THROW_ERROR( std::invalid_argument, "Calling base class in contact domain", "" )
842 
843  };
844 
848  virtual void CalculateAndAddContactForces(VectorType& rRightHandSideVector,
849  ConditionVariables& rVariables,
850  double& rIntegrationWeight);
851 
852 
853 
857  virtual void CalculateNormalForce (double &F,ConditionVariables& rVariables,
858  unsigned int& ndi,unsigned int& idir)
859  {
860  KRATOS_THROW_ERROR( std::invalid_argument, "Calling base class in contact domain", "" )
861  };
865  virtual void CalculateTangentStickForce (double &F,ConditionVariables& rVariables,
866  unsigned int& ndi,unsigned int& idir)
867  {
868  KRATOS_THROW_ERROR( std::invalid_argument, "Calling base class in contact domain", "" )
869  };
870 
874  virtual void CalculateTangentSlipForce (double &F,ConditionVariables& rVariables,
875  unsigned int& ndi,unsigned int& idir)
876  {
877  KRATOS_THROW_ERROR( std::invalid_argument, "Calling base class in contact domain", "" )
878  };
879 
880 
890  friend class Serializer;
891 
892  void save(Serializer& rSerializer) const override;
893 
894  void load(Serializer& rSerializer) override;
895 
903 
904 private:
905 
930 
931 }; // Class ContactDomainCondition
932 
939 
941 /* inline std::istream& operator >> (std::istream& rIStream,
942  ContactDomainCondition& rThis);
943 */
945 /* inline std::ostream& operator << (std::ostream& rOStream,
946  const ContactDomainCondition& rThis)
947  {
948  rThis.PrintInfo(rOStream);
949  rOStream << std::endl;
950  rThis.PrintData(rOStream);
951 
952  return rOStream;
953  }*/
955 
956 } // namespace Kratos.
957 #endif // KRATOS_CONTACT_DOMAIN_CONDITION_H_INCLUDED defined
PeriodicInterfaceProcess & operator=(const PeriodicInterfaceProcess &)=delete
Base class for all Conditions.
Definition: condition.h:59
Definition: constitutive_law.h:47
Definition: contact_domain_condition.hpp:49
Geometry< NodeType > GeometryType
Geometry Type.
Definition: contact_domain_condition.hpp:65
virtual void CalculateTangentSlipForce(double &F, ConditionVariables &rVariables, unsigned int &ndi, unsigned int &idir)
Definition: contact_domain_condition.hpp:874
ContactDomainUtilities::ScalarBaseType ScalarBaseType
For 3D contact surfaces definition.
Definition: contact_domain_condition.hpp:84
KRATOS_CLASS_INTRUSIVE_POINTER_DEFINITION(ContactDomainCondition)
Counted pointer of ContactDomainCondition.
virtual void SetMasterGeometry()
Definition: contact_domain_condition.hpp:669
Element::ElementType ElementType
Element Type.
Definition: contact_domain_condition.hpp:67
virtual void CalculateContactFactor(const ProcessInfo &rCurrentProcessInfo)
Definition: contact_domain_condition.hpp:678
ContactDomainUtilities::PointType PointType
Tensor order 1 definition.
Definition: contact_domain_condition.hpp:71
ConstitutiveLaw ConstitutiveLawType
Definition: contact_domain_condition.hpp:56
ConstitutiveLawType::Pointer ConstitutiveLawPointerType
Pointer type for constitutive laws.
Definition: contact_domain_condition.hpp:58
ContactDomainUtilities::SurfaceScalar SurfaceScalar
SurfaceScalar.
Definition: contact_domain_condition.hpp:75
virtual void CalculateTangentStickForce(double &F, ConditionVariables &rVariables, unsigned int &ndi, unsigned int &idir)
Definition: contact_domain_condition.hpp:865
ContactVariables mContactVariables
Definition: contact_domain_condition.hpp:655
ContactDomainUtilities::SurfaceVector SurfaceVector
SurfaceVector.
Definition: contact_domain_condition.hpp:73
ContactDomainCondition()
Default constructors.
Definition: contact_domain_condition.hpp:373
virtual void CalculateContactStiffness(double &Kcont, ConditionVariables &rVariables, unsigned int &ndi, unsigned int &ndj, unsigned int &idir, unsigned int &jdir)
Definition: contact_domain_condition.hpp:837
virtual void CalculateDomainShapeN(ConditionVariables &rVariables)
Definition: contact_domain_condition.hpp:753
virtual void CalculatePreviousGap()
Definition: contact_domain_condition.hpp:686
virtual PointType & CalculateCurrentTangent(PointType &rTangent)
Definition: contact_domain_condition.hpp:778
GlobalPointersVector< Condition > ConditionWeakPtrVectorType
Definition: contact_domain_condition.hpp:81
GeometryData::IntegrationMethod IntegrationMethod
Type definition for integration methods.
Definition: contact_domain_condition.hpp:60
GlobalPointersVector< Node > NodeWeakPtrVectorType
Definition: contact_domain_condition.hpp:79
ContactDomainUtilities mContactUtilities
Definition: contact_domain_condition.hpp:660
ContactDomainUtilities::BaseLengths BaseLengths
BaseLengths.
Definition: contact_domain_condition.hpp:77
ContactDomainUtilities::SurfaceBase SurfaceBase
Definition: contact_domain_condition.hpp:85
virtual void CalculateExplicitFactors(ConditionVariables &rVariables, const ProcessInfo &rCurrentProcessInfo)
Definition: contact_domain_condition.hpp:744
Node NodeType
NodeType.
Definition: contact_domain_condition.hpp:63
GlobalPointersVector< Element > ElementWeakPtrVectorType
Definition: contact_domain_condition.hpp:80
virtual void CalculateNormalForce(double &F, ConditionVariables &rVariables, unsigned int &ndi, unsigned int &idir)
Definition: contact_domain_condition.hpp:857
IntegrationMethod mThisIntegrationMethod
Definition: contact_domain_condition.hpp:650
Short class definition.
Definition: contact_domain_utilities.hpp:45
Base class for all Elements.
Definition: element.h:60
Definition: flags.h:58
IntegrationMethod
Definition: geometry_data.h:76
Geometry base class.
Definition: geometry.h:71
This class is a vector which stores global pointers.
Definition: global_pointers_vector.h:61
This class defines the node.
Definition: node.h:65
Point class.
Definition: point.h:59
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
Variable class contains all information needed to store and retrive data from a data container.
Definition: variable.h:63
#define KRATOS_THROW_ERROR(ExceptionType, ErrorMessage, MoreInfo)
Definition: define.h:77
std::size_t IndexType
The definition of the index type.
Definition: key_hash.h:35
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
void SetValuesOnIntegrationPoints(TObject &dummy, const Variable< TDataType > &rVariable, const std::vector< TDataType > &values, const ProcessInfo &rCurrentProcessInfo)
Definition: add_mesh_to_python.cpp:185
pybind11::list CalculateOnIntegrationPoints(TObject &dummy, const Variable< TDataType > &rVariable, const ProcessInfo &rProcessInfo)
Definition: add_mesh_to_python.cpp:142
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
F
Definition: hinsberg_optimization.py:144
def load(f)
Definition: ode_solve.py:307
Definition: contact_domain_condition.hpp:190
void SetShapeFunctions(const Matrix &rNcontainer)
Definition: contact_domain_condition.hpp:223
double detJ
Definition: contact_domain_condition.hpp:192
Matrix DeltaPosition
Definition: contact_domain_condition.hpp:212
double ReferenceRadius
Definition: contact_domain_condition.hpp:204
const GeometryType::ShapeFunctionsGradientsType * pDN_De
Definition: contact_domain_condition.hpp:207
ContactParameters Contact
Definition: contact_domain_condition.hpp:200
double detF
Definition: contact_domain_condition.hpp:191
double CurrentRadius
Definition: contact_domain_condition.hpp:203
Vector StressVector
Definition: contact_domain_condition.hpp:194
const Matrix * pNcontainer
Definition: contact_domain_condition.hpp:208
Matrix ConstitutiveMatrix
Definition: contact_domain_condition.hpp:198
const Matrix & GetShapeFunctions()
Definition: contact_domain_condition.hpp:238
GeometryType::JacobiansType J
Definition: contact_domain_condition.hpp:210
Vector N
Definition: contact_domain_condition.hpp:195
const GeometryType::ShapeFunctionsGradientsType & GetShapeFunctionsGradients()
Definition: contact_domain_condition.hpp:233
Matrix F
Definition: contact_domain_condition.hpp:196
Matrix DN_DX
Definition: contact_domain_condition.hpp:197
void SetShapeFunctionsGradients(const GeometryType::ShapeFunctionsGradientsType &rDN_De)
Definition: contact_domain_condition.hpp:218
Vector StrainVector
Definition: contact_domain_condition.hpp:193
GeometryType::JacobiansType j
Definition: contact_domain_condition.hpp:211
Definition: contact_domain_condition.hpp:135
Vector dN_drn
Definition: contact_domain_condition.hpp:155
SurfaceScalar Penalty
Definition: contact_domain_condition.hpp:149
SurfaceScalar CurrentTensil
Definition: contact_domain_condition.hpp:167
std::vector< Vector > Nsigma
Definition: contact_domain_condition.hpp:157
std::vector< Vector > Tsigma
Definition: contact_domain_condition.hpp:158
Vector dN_dt
Definition: contact_domain_condition.hpp:154
double TangentialGapSign
Definition: contact_domain_condition.hpp:146
std::vector< BaseLengths > ReferenceBase
Definition: contact_domain_condition.hpp:164
double FrictionCoefficient
Definition: contact_domain_condition.hpp:145
ContactTangentParameters Tangent
Definition: contact_domain_condition.hpp:171
SurfaceScalar CurrentGap
Definition: contact_domain_condition.hpp:139
SurfaceScalar ContactFactor
Definition: contact_domain_condition.hpp:142
SurfaceScalar Multiplier
Definition: contact_domain_condition.hpp:148
std::vector< BaseLengths > CurrentBase
Definition: contact_domain_condition.hpp:163
SurfaceVector CurrentSurface
Definition: contact_domain_condition.hpp:161
Flags Options
Definition: contact_domain_condition.hpp:136
Vector dN_dn
Definition: contact_domain_condition.hpp:153
Definition: contact_domain_condition.hpp:94
double GapSign
Definition: contact_domain_condition.hpp:107
double Penalty
Definition: contact_domain_condition.hpp:100
std::vector< Vector > Tsigma
Definition: contact_domain_condition.hpp:104
ScalarBaseType CurrentTensil
Definition: contact_domain_condition.hpp:106
Vector dN_dt
Definition: contact_domain_condition.hpp:103
ScalarBaseType CurrentGap
Definition: contact_domain_condition.hpp:96
double Multiplier
Definition: contact_domain_condition.hpp:99
Definition: contact_domain_condition.hpp:114
SurfaceBase CovariantBase
Definition: contact_domain_condition.hpp:118
double ReferenceArea
Definition: contact_domain_condition.hpp:122
double CurrentArea
Definition: contact_domain_condition.hpp:123
double FactorArea
Definition: contact_domain_condition.hpp:125
ContactSurfaceParameters A
Definition: contact_domain_condition.hpp:115
ContactSurfaceParameters B
Definition: contact_domain_condition.hpp:116
SurfaceBase ContravariantBase
Definition: contact_domain_condition.hpp:119
double ElementSize
Definition: contact_domain_condition.hpp:129
double EquivalentHeigh
Definition: contact_domain_condition.hpp:127
Definition: contact_domain_condition.hpp:179
ScalarBaseType PreviousGapB
Definition: contact_domain_condition.hpp:181
ScalarBaseType PreviousGapA
Definition: contact_domain_condition.hpp:180
SurfaceBase ContravariantBase
Definition: contact_domain_condition.hpp:184
SurfaceBase CovariantBase
Definition: contact_domain_condition.hpp:183
Definition: contact_domain_condition.hpp:247
double StabilizationFactor
Definition: contact_domain_condition.hpp:253
NodeType & GetMasterNode()
Definition: contact_domain_condition.hpp:296
int IterationCounter
Definition: contact_domain_condition.hpp:250
GeometryType & GetMasterGeometry()
Definition: contact_domain_condition.hpp:293
ContactTangentVariables Tangent
Definition: contact_domain_condition.hpp:264
void SetMasterGeometry(GeometryType &rGeometry)
Definition: contact_domain_condition.hpp:284
void SetMasterElement(ElementType &rElement)
Definition: contact_domain_condition.hpp:285
ElementType & GetMasterElement()
Definition: contact_domain_condition.hpp:294
double PenaltyFactor
Definition: contact_domain_condition.hpp:254
ConditionType & GetMasterCondition()
Definition: contact_domain_condition.hpp:295
void SetMasterCondition(ConditionType &rCondition)
Definition: contact_domain_condition.hpp:286
GeometryType * mpMasterGeometry
Definition: contact_domain_condition.hpp:275
std::vector< unsigned int > order
Definition: contact_domain_condition.hpp:268
SurfaceVector PreStepSurface
Definition: contact_domain_condition.hpp:260
PointType TractionVector
Definition: contact_domain_condition.hpp:272
Condition * mpMasterCondition
Definition: contact_domain_condition.hpp:277
ElementType * mpMasterElement
Definition: contact_domain_condition.hpp:276
SurfaceVector ReferenceSurface
Definition: contact_domain_condition.hpp:261
std::vector< unsigned int > slaves
Definition: contact_domain_condition.hpp:269
SurfaceScalar PreviousGap
Definition: contact_domain_condition.hpp:257
std::vector< unsigned int > nodes
Definition: contact_domain_condition.hpp:267
void SetMasterNode(NodeType &rNode)
Definition: contact_domain_condition.hpp:287
NodeType * mpMasterNode
Definition: contact_domain_condition.hpp:278
Definition: contact_domain_condition.hpp:312
const std::vector< Variable< VectorType > > & GetRightHandSideVariables()
Definition: contact_domain_condition.hpp:356
std::vector< VectorType > & GetRightHandSideVectors()
Definition: contact_domain_condition.hpp:355
VectorType & GetRightHandSideVector()
Definition: contact_domain_condition.hpp:354
Flags CalculationFlags
Definition: contact_domain_condition.hpp:333
MatrixType & GetLeftHandSideMatrix()
Definition: contact_domain_condition.hpp:350
void SetLeftHandSideMatrices(std::vector< MatrixType > &rLeftHandSideMatrices)
Definition: contact_domain_condition.hpp:339
void SetRightHandSideVector(VectorType &rRightHandSideVector)
Definition: contact_domain_condition.hpp:342
void SetLeftHandSideVariables(const std::vector< Variable< MatrixType > > &rLeftHandSideVariables)
Definition: contact_domain_condition.hpp:340
const std::vector< Variable< MatrixType > > & GetLeftHandSideVariables()
Definition: contact_domain_condition.hpp:352
void SetLeftHandSideMatrix(MatrixType &rLeftHandSideMatrix)
Definition: contact_domain_condition.hpp:338
void SetRightHandSideVariables(const std::vector< Variable< VectorType > > &rRightHandSideVariables)
Definition: contact_domain_condition.hpp:344
void SetRightHandSideVectors(std::vector< VectorType > &rRightHandSideVectors)
Definition: contact_domain_condition.hpp:343
std::vector< MatrixType > & GetLeftHandSideMatrices()
Definition: contact_domain_condition.hpp:351
Definition: contact_domain_utilities.hpp:74
Definition: contact_domain_utilities.hpp:99
Definition: contact_domain_utilities.hpp:107
Definition: contact_domain_utilities.hpp:91
Definition: contact_domain_utilities.hpp:83