61 template< const SizeType TDim, const SizeType TNumNodes,
bool TFrictional, const
bool TNormalVariation, const SizeType TNumNodesMaster = TNumNodes>
114 static constexpr
double CheckThresholdCoefficient = 1.0e-12;
117 static constexpr
double ZeroTolerance = std::numeric_limits<double>::epsilon();
132 static void CalculateDeltaDetjSlave(
174 static void CalculateDeltaNormalSlave(
185 static void CalculateDeltaNormalMaster(
214 static void CalculateDeltaCellVertex(
236 static inline void CalculateDeltaN1(
262 static void CalculateDeltaN(
273 const bool DualLM =
false
282 Matrix& CalculateDeltaPosition(
293 static inline Matrix& CalculateDeltaPosition(
305 static inline void CalculateDeltaPosition(
320 static inline void CalculateDeltaPosition(
336 static inline void CalculateDeltaPosition(
337 double& rDeltaPosition,
356 static bool CalculateAeAndDeltaAe(
365 const double AxiSymCoeff = 1.0
436 static inline void ConvertAuxHashIndex(
452 static inline void DeltaPointLocalCoordinatesSlave(
467 static inline void DeltaPointLocalCoordinatesMaster(
489 static inline double LocalDeltaSegmentN1(
516 static inline double LocalDeltaSegmentN2(
547 static constexpr
double ZeroTolerance = std::numeric_limits<double>::epsilon();
560 template<const SizeType TNumNodes1, const SizeType TNumNodes2>
570 for (
IndexType itry = 0; itry < 3; ++itry) {
571 if (rDeltaNormal(iGeometry, itry) > ZeroTolerance) {
573 const IndexType aux_index_1 = itry == 2 ? 0 : itry + 1;
574 const IndexType aux_index_2 = itry == 2 ? 1 : (itry == 1 ? 0 : 2);
576 const double diff = rDeltaNormal(iGeometry, aux_index_1) + rDeltaNormal(iGeometry, aux_index_2);
577 const double coeff = rDeltaNormal(iGeometry, itry);
579 aux_matrix(0, aux_index_1) = 1.0;
580 aux_matrix(0, aux_index_2) = 1.0;
581 aux_matrix(1, aux_index_1) = 1.0;
582 aux_matrix(1, aux_index_2) = 1.0;
583 aux_matrix(2, aux_index_1) = 1.0;
584 aux_matrix(2, aux_index_2) = 1.0;
586 aux_matrix(0, itry) = (rDiffMatrix(iGeometry, 0) - diff)/
coeff;
587 aux_matrix(1, itry) = (rDiffMatrix(iGeometry, 1) - diff)/
coeff;
588 aux_matrix(2, itry) = (rDiffMatrix(iGeometry, 2) - diff)/
coeff;
This data will be used to compute the derivatives.
Definition: mortar_classes.h:638
This utilities are used in order to compute the directional derivatives during mortar contact.
Definition: derivatives_utilities.h:63
typename std::conditional< TFrictional, DerivativeDataFrictional< TDim, TNumNodes, TNumNodesMaster >, DerivativeData< TDim, TNumNodes, TNumNodesMaster > >::type DerivativeDataType
The derivative data type.
Definition: derivatives_utilities.h:102
std::size_t IndexType
The index type.
Definition: derivatives_utilities.h:69
typename std::conditional< TNumNodes==2, PointBelongsLine2D2N, typename std::conditional< TNumNodes==3, typename std::conditional< TNumNodesMaster==3, PointBelongsTriangle3D3N, PointBelongsTriangle3D3NQuadrilateral3D4N >::type, typename std::conditional< TNumNodesMaster==3, PointBelongsQuadrilateral3D4NTriangle3D3N, PointBelongsQuadrilateral3D4N >::type >::type >::type BelongType
The belong type (for derivatives definition)
Definition: derivatives_utilities.h:78
typename std::conditional< TDim==2, LineType, TriangleType >::type DecompositionType
The geometry for decomposition (line in 2D and triangle for 3D)
Definition: derivatives_utilities.h:99
KRATOS_CLASS_POINTER_DEFINITION(DerivativesUtilities)
Pointer definition of DerivativesUtilities.
typename std::vector< ConditionArrayType > ConditionArrayListType
The definition of an array pf conditions.
Definition: derivatives_utilities.h:90
This is the definition dual lagrange multiplier operators including the derivatives.
Definition: mortar_classes.h:1718
IntegrationMethod
Definition: geometry_data.h:76
Geometry base class.
Definition: geometry.h:71
Auxiliary implementation for DerivativesUtilities.
Definition: derivatives_utilities.h:541
static BoundedMatrix< double, 3, 3 > ComputeRenormalizerMatrix(const BoundedMatrix< double, TNumNodes1, 3 > &rDiffMatrix, const BoundedMatrix< double, TNumNodes2, 3 > &rDeltaNormal, const IndexType iGeometry)
This method computes the auxiliary matrix used to keep unitary the normal.
Definition: derivatives_utilities.h:561
An two node 2D line geometry with linear shape functions.
Definition: line_2d_2.h:65
MortarKinematicVariablesWithDerivatives.
Definition: mortar_classes.h:490
This class derives from the MortarOperator class and it includes the derived operators.
Definition: mortar_classes.h:1273
Custom Point container to be used by the mapper.
Definition: mortar_classes.h:1952
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
A three node 3D triangle geometry with linear shape functions.
Definition: triangle_3d_3.h:77
Short class definition.
Definition: array_1d.h:61
#define KRATOS_CATCH(MoreInfo)
Definition: define.h:110
#define KRATOS_TRY
Definition: define.h:109
std::size_t IndexType
The definition of the index type.
Definition: key_hash.h:35
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
AMatrix::IdentityMatrix< double > IdentityMatrix
Definition: amatrix_interface.h:564
NormalDerivativesComputation
An enumeration of the different options for normal derivatives computation.
Definition: contact_structural_mechanics_application_variables.h:57
@ NO_DERIVATIVES_COMPUTATION
No computation of normal derivatives.
std::size_t SizeType
The definition of the size type.
Definition: mortar_classes.h:43
list coeff
Definition: bombardelli_test.py:41
type
Definition: generate_gid_list_file.py:35