101 static double CalculateRelativeSizeMesh(
ModelPart& rModelPart);
107 static double CalculateMaxNodalH(
ModelPart& rModelPart);
113 static double CalculateMeanNodalH(
ModelPart& rModelPart);
119 static double CalculateMinimalNodalH(
ModelPart& rModelPart);
127 template<
class TPo
intType>
129 TPointType& rPointToScale,
131 const double LengthSearch
134 noalias(rPointToScale.Coordinates()) = rPointToScale.Coordinates() + rNormal * LengthSearch;
142 static double DistancePoints(
153 static void ComputeStepJump(
155 const double DeltaTime,
156 const bool HalfJump =
true
164 static bool CheckActivity(
166 const bool ThrowError =
true
174 static bool CheckModelPartHasRotationDoF(
ModelPart& rModelPart);
181 static void CleanContactModelParts(
ModelPart& rModelPart);
187 static void ComputeExplicitContributionConditions(
ModelPart& rModelPart);
193 static void ActivateConditionWithActiveNodes(
ModelPart& rModelPart);
208 template< std::
size_t TDim, std::
size_t TNumNodes>
211 const std::size_t StepSlip = 1
216 const double zero_tolerance = std::numeric_limits<double>::epsilon();
220 for (
IndexType i_node = 0; i_node < TNumNodes; ++i_node) {
221 const array_1d<double, 3>& r_gt = rGeometry[i_node].FastGetSolutionStepValue(WEIGHTED_SLIP, StepSlip);
222 const double norm_slip =
norm_2(r_gt);
223 if (norm_slip > zero_tolerance) {
225 for (std::size_t i_dof = 0; i_dof < TDim; ++i_dof)
226 tangent_matrix(i_node, i_dof) = tangent_slip[i_dof];
231 if constexpr (TDim == 3) {
232 for (std::size_t i_dof = 0; i_dof < 3; ++i_dof)
233 tangent_matrix(i_node, i_dof) = tangent_xi[i_dof];
235 if (std::abs(tangent_xi[2]) > std::numeric_limits<double>::epsilon()) {
236 for (std::size_t i_dof = 0; i_dof < 2; ++i_dof)
237 tangent_matrix(i_node, i_dof) = tangent_eta[i_dof];
239 for (std::size_t i_dof = 0; i_dof < 2; ++i_dof)
240 tangent_matrix(i_node, i_dof) = tangent_xi[i_dof];
246 return tangent_matrix;
Geometry base class.
Definition: geometry.h:71
Definition: amatrix_interface.h:41
static void OrthonormalBasis(const T1 &c, T2 &a, T3 &b, const IndexType Type=0)
This computes a orthonormal basis from a given vector (Frisvad method)
Definition: math_utils.h:848
This class aims to manage meshes for multi-physics simulations.
Definition: model_part.h:77
MeshType::ConditionsContainerType ConditionsContainerType
Condintions container. A vector set of Conditions with their Id's as key.
Definition: model_part.h:183
MeshType::NodesContainerType NodesContainerType
Nodes container. Which is a vector set of nodes with their Id's as key.
Definition: model_part.h:128
BaseType CoordinatesArrayType
Definition: point.h:75
Variable class contains all information needed to store and retrive data from a data container.
Definition: variable.h:63
Short class definition.
Definition: array_1d.h:61
BoundedMatrix< double, TNumNodes, TDim > GetVariableMatrix(const GeometryType &rGeometry, const Variable< array_1d< double, 3 > > &rVariable, const unsigned int Step)
It calculates the matrix of a variable of a geometry.
Definition: mortar_utilities.h:433
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
TExpressionType::data_type norm_2(AMatrix::MatrixExpression< TExpressionType, TCategory > const &TheExpression)
Definition: amatrix_interface.h:625
T & noalias(T &TheMatrix)
Definition: amatrix_interface.h:484