![]() |
KratosMultiphysics
KRATOS Multiphysics (Kratos) is a framework for building parallel, multi-disciplinary simulation software, aiming at modularity, extensibility, and high performance. Kratos is written in C++, and counts with an extensive Python interface.
|
This utilities are used in order to compute the directional derivatives during mortar contact. More...
#include <derivatives_utilities.h>
Type Definitions | |
using | IndexType = std::size_t |
The index type. More... | |
using | GeometryType = Geometry< Node > |
The geometry of nodes. More... | |
using | NodesArrayType = Geometry< Node >::PointsArrayType |
The array of nodes contained in a geometry. More... | |
using | BelongType = 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 |
The belong type (for derivatives definition) More... | |
using | PointBelongType = PointBelong< TNumNodes, TNumNodesMaster > |
The points used for derivatives definition. More... | |
using | GeometryPointBelongType = Geometry< PointBelongType > |
A geometry defined by the point belongs (the points used for derivatives definition) More... | |
using | ConditionArrayType = array_1d< PointBelongType, TDim > |
An array of belong point to define the geometries of belong points. More... | |
using | ConditionArrayListType = typename std::vector< ConditionArrayType > |
The definition of an array pf conditions. More... | |
using | LineType = Line2D2< PointType > |
The line definition. More... | |
using | TriangleType = Triangle3D3< PointType > |
The triangle definition. More... | |
using | DecompositionType = typename std::conditional< TDim==2, LineType, TriangleType >::type |
The geometry for decomposition (line in 2D and triangle for 3D) More... | |
using | DerivativeDataType = typename std::conditional< TFrictional, DerivativeDataFrictional< TDim, TNumNodes, TNumNodesMaster >, DerivativeData< TDim, TNumNodes, TNumNodesMaster > >::type |
The derivative data type. More... | |
using | GeneralVariables = MortarKinematicVariablesWithDerivatives< TDim, TNumNodes, TNumNodesMaster > |
The kinematic variables. More... | |
using | AeData = DualLagrangeMultiplierOperatorsWithDerivatives< TDim, TNumNodes, TFrictional, TNumNodesMaster > |
The dual LM operators. More... | |
using | MortarConditionMatrices = MortarOperatorWithDerivatives< TDim, TNumNodes, TFrictional, TNumNodesMaster > |
The mortar operators. More... | |
static constexpr double | CheckThresholdCoefficient = 1.0e-12 |
static constexpr double | ZeroTolerance = std::numeric_limits<double>::epsilon() |
Definition of epsilon. More... | |
KRATOS_CLASS_POINTER_DEFINITION (DerivativesUtilities) | |
Pointer definition of DerivativesUtilities. More... | |
Operations | |
Matrix & | CalculateDeltaPosition (Matrix &rDeltaPosition, const GeometryType &rThisGeometry, const ConditionArrayType &rLocalCoordinates) |
Returns a matrix with the increment of displacements, that can be used for compute the Jacobian reference (current) configuration. More... | |
static void | CalculateDeltaDetjSlave (const DecompositionType &DecompGeom, const GeneralVariables &rVariables, DerivativeDataType &rDerivativeData) |
This method is used to compute the directional derivatives of the jacobian determinant. More... | |
static array_1d< array_1d< double, 3 >, TDim *TNumNodes > | GPDeltaNormalSlave (const Matrix &rJacobian, const Matrix &rDNDe) |
This method is used to compute the local increment of the normal. More... | |
static array_1d< array_1d< double, 3 >, TDim *TNumNodesMaster > | GPDeltaNormalMaster (const Matrix &rJacobian, const Matrix &rDNDe) |
This method is used to compute the local increment of the normal. More... | |
static array_1d< array_1d< double, 3 >, TDim *TNumNodes > | DeltaNormalCenter (const GeometryType &rThisGeometry) |
It computes the delta normal of the center of the geometry. More... | |
static void | CalculateDeltaNormalSlave (array_1d< BoundedMatrix< double, TNumNodes, TDim >, TNumNodes *TDim > &rDeltaNormal, GeometryType &rThisGeometry) |
Calculates the increment of the normal and in the slave condition. More... | |
static void | CalculateDeltaNormalMaster (array_1d< BoundedMatrix< double, TNumNodesMaster, TDim >, TNumNodesMaster *TDim > &rDeltaNormal, const GeometryType &rThisGeometry) |
Calculates the increment of the normal and in the master condition. More... | |
static void | CalculateDeltaCellVertex (const GeneralVariables &rVariables, DerivativeDataType &rDerivativeData, const array_1d< BelongType, TDim > &rTheseBelongs, const NormalDerivativesComputation ConsiderNormalVariation, const GeometryType &rSlaveGeometry, const GeometryType &rMasterGeometry, const array_1d< double, 3 > &rNormal) |
This method is used to compute the directional derivatives of the cell vertex. More... | |
static void | CalculateDeltaN1 (const GeneralVariables &rVariables, DerivativeDataType &rDerivativeData, const GeometryType &rSlaveGeometry, const GeometryType &rMasterGeometry, const array_1d< double, 3 > &rSlaveNormal, const DecompositionType &rDecompGeom, const PointType &rLocalPointDecomp, const PointType &rLocalPointParent, const NormalDerivativesComputation ConsiderNormalVariation=NormalDerivativesComputation::NO_DERIVATIVES_COMPUTATION) |
Calculates the increment of the shape functions. More... | |
static void | CalculateDeltaN (const GeneralVariables &rVariables, DerivativeDataType &rDerivativeData, const GeometryType &rSlaveGeometry, const GeometryType &rMasterGeometry, const array_1d< double, 3 > &rSlaveNormal, const array_1d< double, 3 > &rMasterNormal, const DecompositionType &rDecompGeom, const PointType &rLocalPointDecomp, const PointType &rLocalPointParent, const NormalDerivativesComputation ConsiderNormalVariation=NormalDerivativesComputation::NO_DERIVATIVES_COMPUTATION, const bool DualLM=false) |
Calculates the increment of the shape functions. More... | |
static Matrix & | CalculateDeltaPosition (Matrix &rDeltaPosition, const GeometryType &ThisGeometry) |
Returns a matrix with the increment of displacements. More... | |
static void | CalculateDeltaPosition (Vector &rDeltaPosition, const GeometryType &rSlaveGeometry, const GeometryType &rMasterGeometry, const IndexType IndexNode) |
Returns a vector with the increment of displacements. More... | |
static void | CalculateDeltaPosition (Vector &rDeltaPosition, const GeometryType &rSlaveGeometry, const GeometryType &rMasterGeometry, const IndexType IndexNode, const IndexType iDoF) |
Returns a vector with the increment of displacements. More... | |
static void | CalculateDeltaPosition (double &rDeltaPosition, const GeometryType &rSlaveGeometry, const GeometryType &rMasterGeometry, const IndexType IndexNode, const IndexType iDoF) |
Returns a double with the increment of displacements. More... | |
static bool | CalculateAeAndDeltaAe (const GeometryType &rSlaveGeometry, const array_1d< double, 3 > &rSlaveNormal, const GeometryType &rMasterGeometry, DerivativeDataType &rDerivativeData, GeneralVariables &rVariables, const NormalDerivativesComputation ConsiderNormalVariation, ConditionArrayListType &rConditionsPointsSlave, GeometryData::IntegrationMethod ThisIntegrationMethod, const double AxiSymCoeff=1.0) |
Calculate Ae and DeltaAe matrices. More... | |
This utilities are used in order to compute the directional derivatives during mortar contact.
The derivatives take the same argument templates than the contact conditions
TDim | The dimension of work |
TNumNodes | The number of nodes of the slave |
TNormalVariation | If the normal variation is considered |
TNumNodesMaster | The number of nodes of the master |
using Kratos::DerivativesUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::AeData = DualLagrangeMultiplierOperatorsWithDerivatives<TDim, TNumNodes, TFrictional, TNumNodesMaster> |
The dual LM operators.
using Kratos::DerivativesUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::BelongType = 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 |
The belong type (for derivatives definition)
using Kratos::DerivativesUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::ConditionArrayListType = typename std::vector<ConditionArrayType> |
The definition of an array pf conditions.
using Kratos::DerivativesUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::ConditionArrayType = array_1d<PointBelongType,TDim> |
An array of belong point to define the geometries of belong points.
using Kratos::DerivativesUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::DecompositionType = typename std::conditional<TDim == 2, LineType, TriangleType >::type |
The geometry for decomposition (line in 2D and triangle for 3D)
using Kratos::DerivativesUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::DerivativeDataType = typename std::conditional<TFrictional, DerivativeDataFrictional<TDim, TNumNodes, TNumNodesMaster>, DerivativeData<TDim, TNumNodes, TNumNodesMaster> >::type |
The derivative data type.
using Kratos::DerivativesUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::GeneralVariables = MortarKinematicVariablesWithDerivatives<TDim, TNumNodes, TNumNodesMaster> |
The kinematic variables.
using Kratos::DerivativesUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::GeometryPointBelongType = Geometry<PointBelongType> |
A geometry defined by the point belongs (the points used for derivatives definition)
using Kratos::DerivativesUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::GeometryType = Geometry<Node> |
The geometry of nodes.
using Kratos::DerivativesUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::IndexType = std::size_t |
The index type.
using Kratos::DerivativesUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::LineType = Line2D2<PointType> |
The line definition.
using Kratos::DerivativesUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::MortarConditionMatrices = MortarOperatorWithDerivatives<TDim, TNumNodes, TFrictional, TNumNodesMaster> |
The mortar operators.
using Kratos::DerivativesUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::NodesArrayType = Geometry<Node>::PointsArrayType |
The array of nodes contained in a geometry.
using Kratos::DerivativesUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::PointBelongType = PointBelong<TNumNodes, TNumNodesMaster> |
The points used for derivatives definition.
using Kratos::DerivativesUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::TriangleType = Triangle3D3<PointType> |
The triangle definition.
|
static |
Calculate Ae and DeltaAe matrices.
rSlaveGeometry | The geometry of the slave side |
rSlaveNormal | The normal of the slave side |
rMasterGeometry | The master side geometry |
rDerivativeData | The derivatives container |
rVariables | The kinematic variables |
ConsiderNormalVariation | If consider the normal derivative |
rConditionsPointsSlave | The points that configure the exact decomposition of the geometry |
ThisIntegrationMethod | The integration method considered |
AxiSymCoeff | The axisymmetric coefficient |
|
static |
This method is used to compute the directional derivatives of the cell vertex.
rVariables | The kinematic variables |
rDerivativeData | The derivatives container |
rTheseBelongs | The belongs list used in the derivatives |
ConsiderNormalVariation | If consider the normal derivative |
rSlaveGeometry | The slave geometry |
rMasterGeometry | The master geometry |
rNormal | The normal vector of the slave geometry |
The procedure will be the following in order to compute the derivative of the clipping The expression of the clipping is the following: xclipp = xs1 - num/denom * diff3 Being: diff1 = xs1 - xs2; diff2 = xe2 - xs2; diff3 = xe1 - xs1; num = (diff1 x diff2) · n0 denom = (diff3 x diff2) · n0 The derivative can be defined then as: delta_xclipp = delta_xs1 - (delta_num * denom - num * delta_denom)/delta_denom**2 * diff3 - num/ denom * delta_diff3 And here: delta_num = num · delta_n0 + n0 · (delta_diff1 x diff2 + diff1 x delta_diff2) delta_denom = denom · delta_n0 + n0 · (delta_diff3 x diff2 + diff3 x delta_diff2)
|
static |
This method is used to compute the directional derivatives of the jacobian determinant.
DecompGeom | The triangle used to decompose the geometry |
rVariables | The kinematic variables |
rDerivativeData | The derivatives container |
|
static |
Calculates the increment of the shape functions.
rVariables | The kinematic variables |
rDerivativeData | The derivatives container |
rSlaveGeometry | The geometry of the slave side |
rMasterGeometry | The geometry of the master side |
rSlaveNormal | The normal of the slave side |
rMasterNormal | The normal of the master side |
rDecompGeom | The triangle used to decompose the geometry |
rLocalPointDecomp | The local coordinates in the decomposed geometry |
rLocalPointParent | The local coordinates in the slave geometry |
ConsiderNormalVariation | If consider the normal derivative |
DualLM | If the dual Lm formulation is considered |
|
inlinestatic |
Calculates the increment of the shape functions.
rVariables | The kinematic variables |
rDerivativeData | The derivatives container |
rSlaveGeometry | The geometry of the slave side |
rMasterGeometry | The geometry of the master side |
rSlaveNormal | The normal of the slave side |
rDecompGeom | The triangle used to decompose the geometry |
rLocalPointDecomp | The local coordinates in the decomposed geometry |
rLocalPointParent | The local coordinates in the slave geometry |
ConsiderNormalVariation | If consider the normal derivative |
|
static |
Calculates the increment of the normal and in the master condition.
rDeltaNormal | The derivative of the normal |
rThisGeometry | The geometry of the master side |
|
static |
Calculates the increment of the normal and in the slave condition.
rDeltaNormal | The derivative of the normal |
rThisGeometry | The geometry of the salve side |
|
inlinestatic |
Returns a double with the increment of displacements.
rDeltaPosition | The resulting double with the increment of position |
rSlaveGeometry | The slave geometry |
rMasterGeometry | The master geometry |
IndexNode | The node index |
iDoF | The degree of freedom index |
Matrix & Kratos::DerivativesUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::CalculateDeltaPosition | ( | Matrix & | rDeltaPosition, |
const GeometryType & | rThisGeometry, | ||
const ConditionArrayType & | rLocalCoordinates | ||
) |
Returns a matrix with the increment of displacements, that can be used for compute the Jacobian reference (current) configuration.
rDeltaPosition | The matrix with the increment of displacements |
rThisGeometry | The geometry considered |
rLocalCoordinates | The array containing the local coordinates of the exact integration segment |
|
inlinestatic |
Returns a matrix with the increment of displacements.
rDeltaPosition | The matrix with the increment of displacements |
ThisGeometry | The geometry considered |
|
inlinestatic |
Returns a vector with the increment of displacements.
rDeltaPosition | The resulting vector with the increment of position |
rSlaveGeometry | The slave geometry |
rMasterGeometry | The master geometry |
IndexNode | The node index |
|
inlinestatic |
Returns a vector with the increment of displacements.
rDeltaPosition | The resulting vector with the increment of position |
rSlaveGeometry | The slave geometry |
rMasterGeometry | The master geometry |
IndexNode | The node index |
iDoF | The degree of freedom index |
|
static |
It computes the delta normal of the center of the geometry.
rThisGeometry | The geometry where the delta normal is computed |
|
inlinestatic |
This method is used to compute the local increment of the normal.
rJacobian | The jacobian on the GP |
rDNDe | The local gradient |
|
inlinestatic |
This method is used to compute the local increment of the normal.
rJacobian | The jacobian on the GP |
rDNDe | The local gradient |
Kratos::DerivativesUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::KRATOS_CLASS_POINTER_DEFINITION | ( | DerivativesUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster > | ) |
Pointer definition of DerivativesUtilities.
|
staticconstexpr |
|
staticconstexpr |
Definition of epsilon.