65 template< const SizeType TDim, const SizeType TNumNodes, const SizeType TNumNodesMaster = TNumNodes>
134 static constexpr
double CheckThresholdCoefficient = 1.0e-12;
148 GeometryType::Pointer pGeometry
155 GeometryType::Pointer pGeometry,
156 PropertiesType::Pointer pProperties
163 GeometryType::Pointer pGeometry,
164 PropertiesType::Pointer pProperties,
165 GeometryType::Pointer pMasterGeometry
188 void Initialize(
const ProcessInfo& rCurrentProcessInfo)
override;
200 void InitializeNonLinearIteration(
const ProcessInfo& rCurrentProcessInfo)
override;
206 void FinalizeSolutionStep(
const ProcessInfo& rCurrentProcessInfo)
override;
212 void FinalizeNonLinearIteration(
const ProcessInfo& rCurrentProcessInfo)
override;
219 void CalculateMassMatrix(
229 void CalculateDampingMatrix(
241 Condition::Pointer
Create(
244 PropertiesType::Pointer pProperties
254 Condition::Pointer
Create(
256 GeometryType::Pointer pGeom,
257 PropertiesType::Pointer pProperties
268 Condition::Pointer
Create(
270 GeometryType::Pointer pGeom,
271 PropertiesType::Pointer pProperties,
272 GeometryType::Pointer pMasterGeom
284 void EquationIdVector(
307 std::vector<double>& rOutput,
331 std::vector<Vector>& rOutput,
340 int Check(
const ProcessInfo& rCurrentProcessInfo)
const override;
355 std::string
Info()
const override
357 std::stringstream buffer;
358 buffer <<
"MeshTyingMortarCondition #" << this->Id();
365 rOStream <<
"MeshTyingMortarCondition #" << this->Id();
372 this->GetParentGeometry().PrintData(rOStream);
373 this->GetPairedGeometry().PrintData(rOStream);
408 if (Dimension != TDim) {
409 LagrangeMultipliers.
resize(TNumNodes, Dimension,
false);
410 u1.resize(TNumNodes, Dimension,
false);
411 u2.resize(TNumNodesMaster, Dimension,
false);
429 LagrangeMultipliers.
clear();
443 for (
IndexType i_node = 0; i_node < TNumNodesMaster; ++i_node) {
444 const auto& r_node = rGeometryInput[i_node];
445 for (
IndexType i_dof = 0; i_dof < rpDoFVariables.size(); ++i_dof) {
446 u2(i_node, i_dof) = r_node.FastGetSolutionStepValue(*rpDoFVariables[i_dof]);
481 void CalculateLocalSystem(
492 void CalculateRightHandSide(
502 void CalculateLeftHandSide(
515 void CalculateConditionSystem(
519 const bool ComputeLHS =
true,
520 const bool ComputeRHS =
true
531 auto& r_slave_geometry = this->GetParentGeometry();
534 for (
IndexType i_node = 0; i_node < TNumNodes; i_node++) {
535 const auto& r_node = r_slave_geometry[i_node];
536 for (
IndexType i_dof = 0; i_dof < mpDoFVariables.size(); ++i_dof) {
537 rDofData.
u1(i_node, i_dof) = r_node.FastGetSolutionStepValue(*mpDoFVariables[i_dof]);
538 rDofData.
LagrangeMultipliers(i_node, i_dof) = r_node.FastGetSolutionStepValue(*mpLMVariables[i_dof]);
554 GeneralVariables& rVariables,
555 const ConditionArrayListType& rConditionsPointsSlave,
569 void CalculateKinematics(
570 GeneralVariables& rVariables,
571 const MatrixDualLM& rAe,
576 const bool DualLM =
false
590 void CalculateLocalLHS(
592 const MortarConditionMatrices& rMortarConditionMatrices,
593 const DofData& rDofData,
604 void CalculateLocalRHS(
606 const MortarConditionMatrices& rMortarConditionMatrices,
607 const DofData& rDofData,
621 void MasterShapeFunctionValue(
622 GeneralVariables& rVariables,
638 const IndexType integration_order = GetProperties().Has(INTEGRATION_ORDER_CONTACT) ? GetProperties().GetValue(INTEGRATION_ORDER_CONTACT) : 2;
639 switch (integration_order) {
697 void save(
Serializer& rSerializer)
const override;
std::vector< std::size_t > EquationIdVectorType
Definition: condition.h:98
std::vector< DofType::Pointer > DofsVectorType
Definition: condition.h:100
This is the definition dual lagrange multiplier operators according to the work of Alexander Popp: ht...
Definition: mortar_classes.h:1513
std::size_t IndexType
Definition: flags.h:74
This defines the geometrical object, base definition of the element and condition entities.
Definition: geometrical_object.h:58
IntegrationMethod
Definition: geometry_data.h:76
Geometry base class.
Definition: geometry.h:71
std::vector< IntegrationPointType > IntegrationPointsArrayType
Definition: geometry.h:161
void resize(std::size_t NewSize1, std::size_t NewSize2, bool preserve=0)
Definition: amatrix_interface.h:224
void clear()
Definition: amatrix_interface.h:284
An two node 2D line geometry with linear shape functions.
Definition: line_2d_2.h:65
MeshTyingMortarCondition.
Definition: mesh_tying_mortar_condition.h:68
MortarConditionMatrices mMortarConditionMatrices
Definition: mesh_tying_mortar_condition.h:457
~MeshTyingMortarCondition() override
Destructor.
MeshTyingMortarCondition(IndexType NewId, GeometryType::Pointer pGeometry, PropertiesType::Pointer pProperties, GeometryType::Pointer pMasterGeometry)
Definition: mesh_tying_mortar_condition.h:161
KRATOS_CLASS_INTRUSIVE_POINTER_DEFINITION(MeshTyingMortarCondition)
Counted pointer of MeshTyingMortarCondition.
void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
Definition: mesh_tying_mortar_condition.h:363
typename std::conditional< TDim==2, LineType, TriangleType >::type DecompositionType
Type definition for the decomposition based on dimension.
Definition: mesh_tying_mortar_condition.h:116
IntegrationMethod GetIntegrationMethod() const override
It returns theintegration method considered.
Definition: mesh_tying_mortar_condition.h:635
MeshTyingMortarCondition()
Default constructor.
Definition: mesh_tying_mortar_condition.h:141
void CalculateOnIntegrationPoints(const Variable< array_1d< double, 3 >> &rVariable, std::vector< array_1d< double, 3 >> &rOutput, const ProcessInfo &rCurrentProcessInfo) override
Calculate a array_1d Variable.
MeshTyingMortarCondition(MeshTyingMortarCondition const &rOther)
Copy constructor.
Definition: mesh_tying_mortar_condition.h:171
std::vector< const Variable< double > * > mpDoFVariables
The mortar operators.
Definition: mesh_tying_mortar_condition.h:459
typename BaseType::PropertiesType::Pointer PropertiesPointerType
Type definition for the pointer to the properties used in the condition.
Definition: mesh_tying_mortar_condition.h:95
std::vector< const Variable< double > * > mpLMVariables
The list of DoF variables.
Definition: mesh_tying_mortar_condition.h:461
std::string Info() const override
Turn back information as a string.
Definition: mesh_tying_mortar_condition.h:355
void InitializeDofData(DofData &rDofData)
Initializes the DofData object.
Definition: mesh_tying_mortar_condition.h:528
typename std::vector< array_1d< PointType, TDim > > ConditionArrayListType
Type definition for the array list of conditions with points.
Definition: mesh_tying_mortar_condition.h:107
MeshTyingMortarCondition(IndexType NewId, GeometryType::Pointer pGeometry, PropertiesType::Pointer pProperties)
Definition: mesh_tying_mortar_condition.h:153
void PrintData(std::ostream &rOStream) const override
Print object's data.
Definition: mesh_tying_mortar_condition.h:369
typename BaseType::GeometryType::Pointer GeometryPointerType
Type definition for the pointer to the geometry used in the condition.
Definition: mesh_tying_mortar_condition.h:89
MeshTyingMortarCondition(IndexType NewId, GeometryType::Pointer pGeometry)
Definition: mesh_tying_mortar_condition.h:146
typename GeometryType::IntegrationPointsArrayType IntegrationPointsType
Type definition for the integration points in the geometry.
Definition: mesh_tying_mortar_condition.h:104
This is a base class for the conditions paired.
Definition: paired_condition.h:53
Point class.
Definition: point.h:59
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
A three node 3D triangle geometry with linear shape functions.
Definition: triangle_3d_3.h:77
std::size_t IndexType
Definition: binary_expression.cpp:25
Modeler::Pointer Create(const std::string &ModelerName, Model &rModel, const Parameters ModelParameters)
Checks if the modeler is registered.
Definition: modeler_factory.cpp:30
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
std::size_t SizeType
The definition of the size type.
Definition: mortar_classes.h:43
ModelPart::NodesContainerType NodesArrayType
Definition: gid_gauss_point_container.h:42
u2
Definition: generate_frictional_mortar_condition.py:76
u1
Definition: generate_frictional_mortar_condition.py:75
type
Definition: generate_gid_list_file.py:35
def load(f)
Definition: ode_solve.py:307
Definition: mesh_tying_mortar_condition.h:390
void Clear()
Clearing the values.
Definition: mesh_tying_mortar_condition.h:424
MatrixUnknownMaster u2
Definition: mesh_tying_mortar_condition.h:399
MatrixUnknownSlave LagrangeMultipliers
Definition: mesh_tying_mortar_condition.h:398
void UpdateMasterPair(const GeometryType &rGeometryInput, std::vector< const Variable< double > * > &rpDoFVariables)
Updating the Master pair.
Definition: mesh_tying_mortar_condition.h:437
DofData(const std::size_t Dimension=TDim)
Default constructor.
Definition: mesh_tying_mortar_condition.h:405
MatrixUnknownSlave u1
Definition: mesh_tying_mortar_condition.h:398