This namespace includes several utilities necessaries for the computation of the explicit contribution of the mortar conditions.
More...
|
|
static MortarConditionMatrices | AddExplicitContributionOfMortarCondition (PairedCondition *pCondition, const ProcessInfo &rCurrentProcessInfo, const IndexType IntegrationOrder=2, const bool AxisymmetricCase=false, const bool ComputeNodalArea=false, const bool ComputeDualLM=true, const Variable< double > &rAreaVariable=NODAL_AREA) |
| This method computes the explicit contributions of the mortar contact conditions. More...
|
|
static MortarConditionMatrices | AddExplicitContributionOfMortarFrictionalCondition (PairedCondition *pCondition, const ProcessInfo &rCurrentProcessInfo, const MortarOperator< TNumNodes, TNumNodesMaster > &rPreviousMortarOperators, const IndexType IntegrationOrder=2, const bool AxisymmetricCase=false, const bool ComputeNodalArea=false, const bool ComputeDualLM=true, const Variable< double > &rAreaVariable=NODAL_AREA, const bool ConsiderObjetiveFormulation=false) |
| This method computes the explicit contributions of the mortar contact conditions. More...
|
|
static bool | ExplicitCalculateAe (const GeometryType &rSlaveGeometry, GeneralVariables &rVariables, const ConditionArrayListType &rConditionsPointsSlave, BoundedMatrix< double, TNumNodes, TNumNodes > &rAe, const IntegrationMethod &rIntegrationMethod, const double AxiSymCoeff=1.0) |
| Calculate the operator Ae for the dual LM, without taking into account derivatives. More...
|
|
static void | ExplicitCalculateKinematics (const PairedCondition *pCondition, GeneralVariables &rVariables, const BoundedMatrix< double, TNumNodes, TNumNodes > &rAe, const array_1d< double, 3 > &rNormalMaster, const PointType &rLocalPointDecomp, const PointType &rLocalPointParent, const GeometryPointType &rGeometryDecomp, const bool DualLM=true) |
| Calculate condition kinematics (shape functions, jacobians, ...), without taking into account derivatives. More...
|
|
static void | ComputeNodalArea (PairedCondition *pCondition, const ProcessInfo &rCurrentProcessInfo, const Variable< double > &rAreaVariable=NODAL_AREA, const IndexType IntegrationOrder=2, const bool AxisymmetricCase=false) |
| This method computes the nodal area. More...
|
|
static bool | ComputePreviousMortarOperators (PairedCondition *pCondition, const ProcessInfo &rCurrentProcessInfo, MortarOperator< TNumNodes, TNumNodesMaster > &rPreviousMortarOperators, const IndexType IntegrationOrder=2, const bool AxisymmetricCase=false, const bool ComputeNodalArea=false, const bool ComputeDualLM=true, const Variable< double > &rAreaVariable=NODAL_AREA) |
| This method computes the previous mortar operators. More...
|
|
static void | CalculateKinematics (const PairedCondition *pCondition, GeneralVariables &rVariables, const DerivativeDataType &rDerivativeData, const array_1d< double, 3 > &rNormalMaster, const PointType &rLocalPointDecomp, const PointType &rLocalPointParent, const GeometryPointType &rGeometryDecomp, const bool DualLM=true) |
| Calculate condition kinematics (shape functions, jacobians, ...) More...
|
|
static void | MasterShapeFunctionValue (const PairedCondition *pCondition, GeneralVariables &rVariables, const array_1d< double, 3 > &rNormalMaster, const PointType &rLocalPoint) |
| Calculates the values of the shape functions for the master element. More...
|
|
|
using | SizeType = std::size_t |
| The size type definition. More...
|
|
using | IndexType = std::size_t |
| The index type definition. More...
|
|
using | PointType = Point |
| Point definition. More...
|
|
using | GeometryType = Geometry< Node > |
| Geometry type definition. More...
|
|
using | IntegrationPointsType = GeometryType::IntegrationPointsArrayType |
|
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 type of points belongs to be considered. More...
|
|
using | PointBelongType = PointBelong< TNumNodes, TNumNodesMaster > |
| The definition of the point with belonging. More...
|
|
using | GeometryPointBelongType = Geometry< PointBelongType > |
| Type definition for the geometry of the point belong. More...
|
|
using | ConditionArrayType = array_1d< PointBelongType, TDim > |
| Array type for the conditions. More...
|
|
using | ConditionArrayListType = typename std::vector< ConditionArrayType > |
| Type definition for the array list of conditions. More...
|
|
using | LineType = Line2D2< PointType > |
| Type definition for the line. More...
|
|
using | TriangleType = Triangle3D3< PointType > |
| Type definition for the triangle. More...
|
|
using | DecompositionType = typename std::conditional< TDim==2, LineType, TriangleType >::type |
| Type definition for the decomposition based on dimension. More...
|
|
using | DerivativeDataType = typename std::conditional< TFrictional==FrictionalCase::FRICTIONAL||TFrictional==FrictionalCase::FRICTIONAL_PENALTY, DerivativeDataFrictional< TDim, TNumNodes, TNumNodesMaster >, DerivativeData< TDim, TNumNodes, TNumNodesMaster > >::type |
| Type definition for the derivative data based on frictional case. More...
|
|
using | GeneralVariables = MortarKinematicVariablesWithDerivatives< TDim, TNumNodes, TNumNodesMaster > |
| Type definition for the general variables. More...
|
|
using | AeData = DualLagrangeMultiplierOperatorsWithDerivatives< TDim, TNumNodes, IsFrictional, TNumNodesMaster > |
| Type definition for the Ae data. More...
|
|
using | MortarConditionMatrices = MortarOperatorWithDerivatives< TDim, TNumNodes, IsFrictional, TNumNodesMaster > |
| Type definition for the mortar condition matrices. More...
|
|
using | IntegrationUtility = ExactMortarIntegrationUtility< TDim, TNumNodes, true, TNumNodesMaster > |
| Type definition for the integration utility. More...
|
|
using | DerivativesUtilitiesType = DerivativesUtilities< TDim, TNumNodes, IsFrictional, TNormalVariation, TNumNodesMaster > |
| Type definition for the derivatives utilities. More...
|
|
static constexpr IndexType | MatrixSize = (TFrictional == FrictionalCase::FRICTIONLESS) ? TDim * (TNumNodesMaster + TNumNodes) + TNumNodes : (TFrictional == FrictionalCase::FRICTIONLESS_COMPONENTS || TFrictional == FrictionalCase::FRICTIONAL) ? TDim * (TNumNodesMaster + TNumNodes + TNumNodes) : TDim * (TNumNodesMaster + TNumNodes) |
| The size of the matrix. More...
|
|
static constexpr bool | IsFrictional = (TFrictional == FrictionalCase::FRICTIONAL || TFrictional == FrictionalCase::FRICTIONAL_PENALTY) ? true : false |
| Flag indicating if the case is frictional. More...
|
|
static constexpr double | CheckThresholdCoefficient = 1.0e-12 |
|
template<const SizeType TDim, const SizeType TNumNodes, const FrictionalCase TFrictional, const bool TNormalVariation, const SizeType TNumNodesMaster = TNumNodes>
class Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >
This namespace includes several utilities necessaries for the computation of the explicit contribution of the mortar conditions.
- Author
- Vicente Mataix Ferrandiz
- Template Parameters
-
TDim | The dimension of work |
TNumNodes | The number of nodes of the slave |
TFrictional | If we are solving a frictional or frictionless problem |
TNormalVariation | If we are consider normal variation |
TNumNodesMaster | The number of nodes of the master |
template<const SizeType TDim, const SizeType TNumNodes, const FrictionalCase TFrictional, const bool TNormalVariation, const SizeType TNumNodesMaster>
MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::MortarConditionMatrices Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::AddExplicitContributionOfMortarFrictionalCondition |
( |
PairedCondition * |
pCondition, |
|
|
const ProcessInfo & |
rCurrentProcessInfo, |
|
|
const MortarOperator< TNumNodes, TNumNodesMaster > & |
rPreviousMortarOperators, |
|
|
const IndexType |
IntegrationOrder = 2 , |
|
|
const bool |
AxisymmetricCase = false , |
|
|
const bool |
ComputeNodalArea = false , |
|
|
const bool |
ComputeDualLM = true , |
|
|
const Variable< double > & |
rAreaVariable = NODAL_AREA , |
|
|
const bool |
ConsiderObjetiveFormulation = false |
|
) |
| |
|
static |
This method computes the explicit contributions of the mortar contact conditions.
This method is created in order to avoid duplicated code
- Parameters
-
pCondition | The condition pointer to compute the explicit contribution |
rCurrentProcessInfo | The current instance process info |
rPreviousMortarOperators | The previous mortar operators |
IntegrationOrder | The integration order of the utility |
AxisymmetricCase | If consider the axisymmetric coefficient |
ComputeNodalArea | If the contribution of the nodal are must be computed |
ComputeDualLM | If condider dual LM to begin with |
rAreaVariable | The nodal area variable |
ConsiderObjetiveFormulation | If the objetive formulation is considered always |
- Returns
- The mortar operators
template<SizeType TDim, SizeType TNumNodes, FrictionalCase TFrictional, bool TNormalVariation, SizeType TNumNodesMaster>
void Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::CalculateKinematics |
( |
const PairedCondition * |
pCondition, |
|
|
GeneralVariables & |
rVariables, |
|
|
const DerivativeDataType & |
rDerivativeData, |
|
|
const array_1d< double, 3 > & |
rNormalMaster, |
|
|
const PointType & |
rLocalPointDecomp, |
|
|
const PointType & |
rLocalPointParent, |
|
|
const GeometryPointType & |
rGeometryDecomp, |
|
|
const bool |
DualLM = true |
|
) |
| |
|
static |
Calculate condition kinematics (shape functions, jacobians, ...)
This can be used in the mortar conditions
- Parameters
-
pCondition | The pointer to the condition |
rVariables | Container of the jacobians, shape functions, etc... |
rDerivativeData | The container of the directional derivatives of the mortar parameters |
rNormalMaster | The normal of the master side |
rLocalPointDecomp | The local points of the decomposed geometries using the mortar segmentation |
rLocalPointParent | The local points of the parent geometry |
rGeometryDecomp | The geometry decomposed |
DualLM | If the dual LM is considered or not |
SLAVE CONDITION ///
MASTER CONDITION ///
template<const SizeType TDim, const SizeType TNumNodes, const FrictionalCase TFrictional, const bool TNormalVariation, const SizeType TNumNodesMaster>
This method computes the nodal area.
This method is created in order to avoid duplicated code
- Parameters
-
pCondition | The condition pointer to compute the explicit contribution |
rCurrentProcessInfo | The current instance process info |
rAreaVariable | The nodal area variable |
IntegrationOrder | The integration order of the utility |
AxisymmetricCase | If consider the axisymmetric coefficient |
- Returns
- True is dual LM, false otherwise
template<const SizeType TDim, const SizeType TNumNodes, const FrictionalCase TFrictional, const bool TNormalVariation, const SizeType TNumNodesMaster>
bool Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::ComputePreviousMortarOperators |
( |
PairedCondition * |
pCondition, |
|
|
const ProcessInfo & |
rCurrentProcessInfo, |
|
|
MortarOperator< TNumNodes, TNumNodesMaster > & |
rPreviousMortarOperators, |
|
|
const IndexType |
IntegrationOrder = 2 , |
|
|
const bool |
AxisymmetricCase = false , |
|
|
const bool |
ComputeNodalArea = false , |
|
|
const bool |
ComputeDualLM = true , |
|
|
const Variable< double > & |
rAreaVariable = NODAL_AREA |
|
) |
| |
|
static |
This method computes the previous mortar operators.
This method is created in order to avoid duplicated code
- Parameters
-
pCondition | The condition pointer to compute the explicit contribution |
rCurrentProcessInfo | The current instance process info |
rPreviousMortarOperators | The previous mortar operators |
IntegrationOrder | The integration order of the utility |
AxisymmetricCase | If consider the axisymmetric coefficient |
ComputeNodalArea | If the contribution of the nodal are must be computed |
ComputeDualLM | If condider dual LM to begin with |
rAreaVariable | The nodal area variable |
- Returns
- True is dual LM, false otherwise
template<SizeType TDim, SizeType TNumNodes, FrictionalCase TFrictional, bool TNormalVariation, SizeType TNumNodesMaster>
bool Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::ExplicitCalculateAe |
( |
const GeometryType & |
rSlaveGeometry, |
|
|
GeneralVariables & |
rVariables, |
|
|
const ConditionArrayListType & |
rConditionsPointsSlave, |
|
|
BoundedMatrix< double, TNumNodes, TNumNodes > & |
rAe, |
|
|
const IntegrationMethod & |
rIntegrationMethod, |
|
|
const double |
AxiSymCoeff = 1.0 |
|
) |
| |
|
static |
Calculate the operator Ae for the dual LM, without taking into account derivatives.
This can be used in the mortar conditions
- Parameters
-
rSlaveGeometry | The geometry of the slave side |
rVariables | Container of the jacobians, shape functions, etc... |
rConditionsPointsSlave | Container of the jacobians, shape functions, etc... |
rAe | The dual LM operator |
rIntegrationMethod | The integration method considered |
AxiSymCoeff | The coefficient of axisymmetry |
template<SizeType TDim, SizeType TNumNodes, FrictionalCase TFrictional, bool TNormalVariation, SizeType TNumNodesMaster>
void Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::ExplicitCalculateKinematics |
( |
const PairedCondition * |
pCondition, |
|
|
GeneralVariables & |
rVariables, |
|
|
const BoundedMatrix< double, TNumNodes, TNumNodes > & |
rAe, |
|
|
const array_1d< double, 3 > & |
rNormalMaster, |
|
|
const PointType & |
rLocalPointDecomp, |
|
|
const PointType & |
rLocalPointParent, |
|
|
const GeometryPointType & |
rGeometryDecomp, |
|
|
const bool |
DualLM = true |
|
) |
| |
|
static |
Calculate condition kinematics (shape functions, jacobians, ...), without taking into account derivatives.
This can be used in the mortar conditions
- Parameters
-
pCondition | The pointer to the condition |
rVariables | Container of the jacobians, shape functions, etc... |
rAe | The dual LM operator |
rNormalMaster | The normal of the master side |
rLocalPointDecomp | The local points of the decomposed geometries using the mortar segmentation |
rLocalPointParent | The local points of the parent geometry |
rGeometryDecomp | The geometry decomposed |
DualLM | If the dual LM is considered or not |
SLAVE CONDITION ///
MASTER CONDITION ///