![]() |
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 namespace includes several utilities necessaries for the computation of the explicit contribution of the mortar conditions. More...
#include <mortar_explicit_contribution_utilities.h>
Static Public Member Functions | |
Operations | |
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... | |
Type Definitions | |
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 |
This namespace includes several utilities necessaries for the computation of the explicit contribution of the mortar conditions.
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 |
using Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::AeData = DualLagrangeMultiplierOperatorsWithDerivatives<TDim, TNumNodes, IsFrictional, TNumNodesMaster> |
Type definition for the Ae data.
using Kratos::MortarExplicitContributionUtilities< 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 type of points belongs to be considered.
using Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::ConditionArrayListType = typename std::vector<ConditionArrayType> |
Type definition for the array list of conditions.
using Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::ConditionArrayType = array_1d<PointBelongType, TDim> |
Array type for the conditions.
using Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::DecompositionType = typename std::conditional<TDim == 2, LineType, TriangleType>::type |
Type definition for the decomposition based on dimension.
using Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::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.
using Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::DerivativesUtilitiesType = DerivativesUtilities<TDim, TNumNodes, IsFrictional, TNormalVariation, TNumNodesMaster> |
Type definition for the derivatives utilities.
using Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::GeneralVariables = MortarKinematicVariablesWithDerivatives<TDim, TNumNodes, TNumNodesMaster> |
Type definition for the general variables.
using Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::GeometryPointBelongType = Geometry<PointBelongType> |
Type definition for the geometry of the point belong.
using Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::GeometryType = Geometry<Node> |
Geometry type definition.
using Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::IndexType = std::size_t |
The index type definition.
using Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::IntegrationPointsType = GeometryType::IntegrationPointsArrayType |
using Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::IntegrationUtility = ExactMortarIntegrationUtility<TDim, TNumNodes, true, TNumNodesMaster> |
Type definition for the integration utility.
using Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::LineType = Line2D2<PointType> |
Type definition for the line.
using Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::MortarConditionMatrices = MortarOperatorWithDerivatives<TDim, TNumNodes, IsFrictional, TNumNodesMaster> |
Type definition for the mortar condition matrices.
using Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::PointBelongType = PointBelong<TNumNodes, TNumNodesMaster> |
The definition of the point with belonging.
using Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::PointType = Point |
Point definition.
using Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::SizeType = std::size_t |
The size type definition.
using Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::TriangleType = Triangle3D3<PointType> |
Type definition for the triangle.
|
static |
This method computes the explicit contributions of the mortar contact conditions.
This method is created in order to avoid duplicated code
pCondition | The condition pointer to compute the explicit contribution |
rCurrentProcessInfo | The current instance process info |
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 |
|
static |
This method computes the explicit contributions of the mortar contact conditions.
This method is created in order to avoid duplicated code
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 |
|
static |
Calculate condition kinematics (shape functions, jacobians, ...)
This can be used in the mortar conditions
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 ///
|
static |
This method computes the nodal area.
This method is created in order to avoid duplicated code
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 |
|
static |
This method computes the previous mortar operators.
This method is created in order to avoid duplicated code
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 |
|
static |
Calculate the operator Ae for the dual LM, without taking into account derivatives.
This can be used in the mortar conditions
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 |
|
static |
Calculate condition kinematics (shape functions, jacobians, ...), without taking into account derivatives.
This can be used in the mortar conditions
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 ///
|
static |
Calculates the values of the shape functions for the master element.
pCondition | The pointer to the condition |
rVariables | Container of the jacobians, shape functions, etc... |
rNormalMaster | The normal of the master side |
rLocalPoint | The current local point |
|
staticconstexpr |
|
staticconstexpr |
Flag indicating if the case is frictional.
|
staticconstexpr |
The size of the matrix.