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 ///