10 #if !defined(KRATOS_CONTACT_DOMAIN_CONDITION_H_INCLUDED )
11 #define KRATOS_CONTACT_DOMAIN_CONDITION_H_INCLUDED
225 pNcontainer=&rNcontainer;
320 std::vector<MatrixType> *mpLeftHandSideMatrices;
321 std::vector<VectorType> *mpRightHandSideVectors;
324 const std::vector< Variable< MatrixType > > *mpLeftHandSideVariables;
327 const std::vector< Variable< VectorType > > *mpRightHandSideVariables;
339 void SetLeftHandSideMatrices( std::vector<MatrixType>& rLeftHandSideMatrices ) { mpLeftHandSideMatrices = &rLeftHandSideMatrices; };
343 void SetRightHandSideVectors( std::vector<VectorType>& rRightHandSideVectors ) { mpRightHandSideVectors = &rRightHandSideVectors; };
414 Condition::Pointer Clone(
IndexType NewId,
428 void GetDofList(DofsVectorType& rConditionalDofList,
const ProcessInfo& rCurrentProcessInfo)
const override;
433 void EquationIdVector(EquationIdVectorType& rResult,
const ProcessInfo& rCurrentProcessInfo)
const override;
438 void GetValuesVector(
Vector& rValues,
int Step = 0)
const override;
443 void GetFirstDerivativesVector(
Vector& rValues,
int Step = 0)
const override;
448 void GetSecondDerivativesVector(
Vector& rValues,
int Step = 0)
const override;
487 void Initialize(
const ProcessInfo& CurrentProcessInfo)
override;
498 void InitializeNonLinearIteration(
const ProcessInfo& CurrentProcessInfo)
override;
504 void FinalizeNonLinearIteration(
const ProcessInfo& CurrentProcessInfo)
override;
510 void FinalizeSolutionStep(
const ProcessInfo& CurrentProcessInfo)
override;
536 void CalculateLocalSystem(std::vector< MatrixType >& rLeftHandSideMatrices,
538 std::vector< VectorType >& rRightHandSideVectors,
548 void CalculateRightHandSide(
VectorType& rRightHandSideVector,
const ProcessInfo& rCurrentProcessInfo)
override;
558 void CalculateRightHandSide(std::vector< VectorType >& rRightHandSideVectors,
568 void CalculateLeftHandSide (
MatrixType& rLeftHandSideMatrix,
const ProcessInfo& rCurrentProcessInfo)
override;
580 virtual void AddExplicitContribution(
const VectorType& rRHSVector,
612 int Check(
const ProcessInfo& rCurrentProcessInfo)
const override;
671 KRATOS_THROW_ERROR( std::invalid_argument,
"Calling base class in contact domain",
"" )
680 KRATOS_THROW_ERROR( std::invalid_argument,
"Calling base class in contact domain",
"" )
688 KRATOS_THROW_ERROR( std::invalid_argument,
"Calling base class in contact domain",
"" )
696 virtual void InitializeConditionVariables (ConditionVariables& rVariables,
702 virtual void CalculateConditionSystem(LocalSystemComponents& rLocalSystem,
707 void ClearNodalForces ();
713 void CalculateNodalForces (
const ProcessInfo& CurrentProcessInfo);
719 void ClearMasterElementNodalForces(
ElementType& rMasterElement);
725 void SetContactIntegrationVariable (
Vector & rContactVariable,
726 std::vector<Vector> & rMasterVariables,
727 const unsigned int& rPointNumber);
732 virtual void CalculateKinematics(ConditionVariables& rVariables,
734 const unsigned int& rPointNumber);
739 Matrix& CalculateDeltaPosition(
Matrix & rDeltaPosition);
747 KRATOS_THROW_ERROR( std::invalid_argument,
"Calling base class in contact domain",
"" )
755 KRATOS_THROW_ERROR( std::invalid_argument,
"Calling base class in contact domain",
"" )
764 virtual void CalculateRelativeVelocity(ConditionVariables& rVariables,
771 virtual void CalculateRelativeDisplacement(ConditionVariables& rVariables,
780 KRATOS_THROW_ERROR( std::invalid_argument,
"Calling base class in contact domain",
"" )
788 virtual void CalculateFrictionCoefficient(ConditionVariables& rVariables,
795 virtual double& CalculateIntegrationWeight(
double& rIntegrationWeight);
801 virtual void InitializeSystemMatrices(
MatrixType& rLeftHandSideMatrix,
803 Flags& rCalculationFlags);
809 void CalculatePerturbedLeftHandSide (
MatrixType& rLeftHandSideMatrix,
815 virtual void CalculateAndAddLHS(LocalSystemComponents& rLocalSystem,
816 ConditionVariables& rVariables,
817 double& rIntegrationWeight);
822 virtual void CalculateAndAddRHS(LocalSystemComponents& rLocalSystem,
823 ConditionVariables& rVariables,
824 double& rIntegrationWeight);
830 virtual void CalculateAndAddKuug(
MatrixType& rLeftHandSideMatrix,
831 ConditionVariables& rVariables,
832 double& rIntegrationWeight);
838 unsigned int& ndi,
unsigned int& ndj,
839 unsigned int& idir,
unsigned int& jdir)
841 KRATOS_THROW_ERROR( std::invalid_argument,
"Calling base class in contact domain",
"" )
848 virtual void CalculateAndAddContactForces(
VectorType& rRightHandSideVector,
849 ConditionVariables& rVariables,
850 double& rIntegrationWeight);
858 unsigned int& ndi,
unsigned int& idir)
860 KRATOS_THROW_ERROR( std::invalid_argument,
"Calling base class in contact domain",
"" )
866 unsigned int& ndi,
unsigned int& idir)
868 KRATOS_THROW_ERROR( std::invalid_argument,
"Calling base class in contact domain",
"" )
875 unsigned int& ndi,
unsigned int& idir)
877 KRATOS_THROW_ERROR( std::invalid_argument,
"Calling base class in contact domain",
"" )
892 void save(
Serializer& rSerializer)
const override;
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
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
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