65 template< std::
size_t TDim, std::
size_t TNumNodes,
bool TNormalVariation, std::
size_t TNumNodesMaster = TNumNodes>
67 :
public MortarContactCondition<TDim, TNumNodes, FrictionalCase::FRICTIONAL_PENALTY, TNormalVariation, TNumNodesMaster>
146 static constexpr
IndexType MatrixSize = TDim * (TNumNodes + TNumNodesMaster);
149 static constexpr
IndexType StepSlip = TNormalVariation ? 0 : 1;
174 ):
BaseType( NewId, pGeometry, pProperties )
183 GeometryType::Pointer pMasterGeometry
184 ):
BaseType( NewId, pGeometry, pProperties, pMasterGeometry )
208 void Initialize(
const ProcessInfo& rCurrentProcessInfo)
override;
220 void FinalizeSolutionStep(
const ProcessInfo& rCurrentProcessInfo)
override;
229 Condition::Pointer
Create(
242 Condition::Pointer
Create(
273 void AddExplicitContribution(
const ProcessInfo& rCurrentProcessInfo)
override;
284 void AddExplicitContribution(
340 void EquationIdVector(
362 int Check(
const ProcessInfo& rCurrentProcessInfo)
const override;
377 std::string
Info()
const override
379 std::stringstream buffer;
380 buffer <<
"PenaltyMethodFrictionalMortarContactCondition #" << this->Id();
387 rOStream <<
"PenaltyMethodFrictionalMortarContactCondition #" << this->Id();
394 this->GetParentGeometry().PrintData(rOStream);
395 this->GetPairedGeometry().PrintData(rOStream);
412 bool mPreviousMortarOperatorsInitialized =
false;
454 void CalculateLocalRHS(
474 for (
IndexType i_node = 0; i_node < TNumNodes; ++i_node) {
475 if (rCurrentGeometry[i_node].Is(ACTIVE) ==
true) {
476 if (rCurrentGeometry[i_node].Is(SLIP) ==
true)
477 value += std::pow(3, i_node);
479 value += 2 * std::pow(3, i_node);
494 auto& r_geometry = this->GetParentGeometry();
496 for (std::size_t i_node = 0; i_node < TNumNodes; ++i_node) {
497 friction_coeffient_vector[i_node] = r_geometry[i_node].GetValue(FRICTION_COEFFICIENT);
502 return friction_coeffient_vector;
538 void ComputePreviousMortarOperators(
const ProcessInfo& rCurrentProcessInfo);
547 return MortarUtilities::ComputeTangentMatrix<TDim, TNumNodes>(rGeometry);
567 void save(
Serializer& rSerializer)
const override
570 rSerializer.
save(
"PreviousMortarOperators", mPreviousMortarOperators);
571 rSerializer.
save(
"PreviousMortarOperatorsInitialized", mPreviousMortarOperatorsInitialized);
577 rSerializer.
load(
"PreviousMortarOperators", mPreviousMortarOperators);
578 rSerializer.
load(
"PreviousMortarOperatorsInitialized", mPreviousMortarOperatorsInitialized);
Base class for all Conditions.
Definition: condition.h:59
std::vector< std::size_t > EquationIdVectorType
Definition: condition.h:98
std::vector< DofType::Pointer > DofsVectorType
Definition: condition.h:100
This class is a derived class of DerivativeData.
Definition: mortar_classes.h:934
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
An two node 2D line geometry with linear shape functions.
Definition: line_2d_2.h:65
This is a base class for the conditions paired.
Definition: paired_condition.h:53
BaseType::GeometryType::Pointer GeometryPointerType
Geometry pointer type definition.
Definition: paired_condition.h:83
BaseType::PropertiesType::Pointer PropertiesPointerType
Properties pointer type definition.
Definition: paired_condition.h:89
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
Properties encapsulates data shared by different Elements or Conditions. It can store any type of dat...
Definition: properties.h:69
The serialization consists in storing the state of an object into a storage format like data file or ...
Definition: serializer.h:123
void load(std::string const &rTag, TDataType &rObject)
Definition: serializer.h:207
void save(std::string const &rTag, std::array< TDataType, TDataSize > const &rObject)
Definition: serializer.h:545
A three node 3D triangle geometry with linear shape functions.
Definition: triangle_3d_3.h:77
Variable class contains all information needed to store and retrive data from a data container.
Definition: variable.h:63
#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
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
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
Properties PropertiesType
Definition: regenerate_pfem_pressure_conditions_process.h:26
GeometryData::IntegrationMethod IntegrationMethod
Type definition for integration methods.
Definition: exact_mortar_segmentation_utility.h:57
Geometry< PointType > GeometryPointType
Definition: exact_mortar_segmentation_utility.h:54
Geometry< Node > GeometryType
The definition of the geometry.
Definition: mortar_classes.h:37
ModelPart::NodesContainerType NodesArrayType
Definition: gid_gauss_point_container.h:42
mu
Definition: generate_frictional_mortar_condition.py:127
type
Definition: generate_gid_list_file.py:35
def load(f)
Definition: ode_solve.py:307
Configure::PointType PointType
Definition: transfer_utility.h:245