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.
List of all members
Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster > Class Template Reference

This namespace includes several utilities necessaries for the computation of the explicit contribution of the mortar conditions. More...

#include <mortar_explicit_contribution_utilities.h>

Collaboration diagram for Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >:

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
 

Detailed Description

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
TDimThe dimension of work
TNumNodesThe number of nodes of the slave
TFrictionalIf we are solving a frictional or frictionless problem
TNormalVariationIf we are consider normal variation
TNumNodesMasterThe number of nodes of the master

Member Typedef Documentation

◆ AeData

template<const SizeType TDim, const SizeType TNumNodes, const FrictionalCase TFrictional, const bool TNormalVariation, const SizeType TNumNodesMaster = TNumNodes>
using Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::AeData = DualLagrangeMultiplierOperatorsWithDerivatives<TDim, TNumNodes, IsFrictional, TNumNodesMaster>

Type definition for the Ae data.

◆ BelongType

template<const SizeType TDim, const SizeType TNumNodes, const FrictionalCase TFrictional, const bool TNormalVariation, const SizeType TNumNodesMaster = TNumNodes>
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.

◆ ConditionArrayListType

template<const SizeType TDim, const SizeType TNumNodes, const FrictionalCase TFrictional, const bool TNormalVariation, const SizeType TNumNodesMaster = TNumNodes>
using Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::ConditionArrayListType = typename std::vector<ConditionArrayType>

Type definition for the array list of conditions.

◆ ConditionArrayType

template<const SizeType TDim, const SizeType TNumNodes, const FrictionalCase TFrictional, const bool TNormalVariation, const SizeType TNumNodesMaster = TNumNodes>
using Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::ConditionArrayType = array_1d<PointBelongType, TDim>

Array type for the conditions.

◆ DecompositionType

template<const SizeType TDim, const SizeType TNumNodes, const FrictionalCase TFrictional, const bool TNormalVariation, const SizeType TNumNodesMaster = TNumNodes>
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.

◆ DerivativeDataType

template<const SizeType TDim, const SizeType TNumNodes, const FrictionalCase TFrictional, const bool TNormalVariation, const SizeType TNumNodesMaster = TNumNodes>
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.

◆ DerivativesUtilitiesType

template<const SizeType TDim, const SizeType TNumNodes, const FrictionalCase TFrictional, const bool TNormalVariation, const SizeType TNumNodesMaster = TNumNodes>
using Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::DerivativesUtilitiesType = DerivativesUtilities<TDim, TNumNodes, IsFrictional, TNormalVariation, TNumNodesMaster>

Type definition for the derivatives utilities.

◆ GeneralVariables

template<const SizeType TDim, const SizeType TNumNodes, const FrictionalCase TFrictional, const bool TNormalVariation, const SizeType TNumNodesMaster = TNumNodes>
using Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::GeneralVariables = MortarKinematicVariablesWithDerivatives<TDim, TNumNodes, TNumNodesMaster>

Type definition for the general variables.

◆ GeometryPointBelongType

template<const SizeType TDim, const SizeType TNumNodes, const FrictionalCase TFrictional, const bool TNormalVariation, const SizeType TNumNodesMaster = TNumNodes>
using Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::GeometryPointBelongType = Geometry<PointBelongType>

Type definition for the geometry of the point belong.

◆ GeometryType

template<const SizeType TDim, const SizeType TNumNodes, const FrictionalCase TFrictional, const bool TNormalVariation, const SizeType TNumNodesMaster = TNumNodes>
using Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::GeometryType = Geometry<Node>

Geometry type definition.

◆ IndexType

template<const SizeType TDim, const SizeType TNumNodes, const FrictionalCase TFrictional, const bool TNormalVariation, const SizeType TNumNodesMaster = TNumNodes>
using Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::IndexType = std::size_t

The index type definition.

◆ IntegrationPointsType

template<const SizeType TDim, const SizeType TNumNodes, const FrictionalCase TFrictional, const bool TNormalVariation, const SizeType TNumNodesMaster = TNumNodes>
using Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::IntegrationPointsType = GeometryType::IntegrationPointsArrayType

◆ IntegrationUtility

template<const SizeType TDim, const SizeType TNumNodes, const FrictionalCase TFrictional, const bool TNormalVariation, const SizeType TNumNodesMaster = TNumNodes>
using Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::IntegrationUtility = ExactMortarIntegrationUtility<TDim, TNumNodes, true, TNumNodesMaster>

Type definition for the integration utility.

◆ LineType

template<const SizeType TDim, const SizeType TNumNodes, const FrictionalCase TFrictional, const bool TNormalVariation, const SizeType TNumNodesMaster = TNumNodes>
using Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::LineType = Line2D2<PointType>

Type definition for the line.

◆ MortarConditionMatrices

template<const SizeType TDim, const SizeType TNumNodes, const FrictionalCase TFrictional, const bool TNormalVariation, const SizeType TNumNodesMaster = TNumNodes>
using Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::MortarConditionMatrices = MortarOperatorWithDerivatives<TDim, TNumNodes, IsFrictional, TNumNodesMaster>

Type definition for the mortar condition matrices.

◆ PointBelongType

template<const SizeType TDim, const SizeType TNumNodes, const FrictionalCase TFrictional, const bool TNormalVariation, const SizeType TNumNodesMaster = TNumNodes>
using Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::PointBelongType = PointBelong<TNumNodes, TNumNodesMaster>

The definition of the point with belonging.

◆ PointType

template<const SizeType TDim, const SizeType TNumNodes, const FrictionalCase TFrictional, const bool TNormalVariation, const SizeType TNumNodesMaster = TNumNodes>
using Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::PointType = Point

Point definition.

◆ SizeType

template<const SizeType TDim, const SizeType TNumNodes, const FrictionalCase TFrictional, const bool TNormalVariation, const SizeType TNumNodesMaster = TNumNodes>
using Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::SizeType = std::size_t

The size type definition.

◆ TriangleType

template<const SizeType TDim, const SizeType TNumNodes, const FrictionalCase TFrictional, const bool TNormalVariation, const SizeType TNumNodesMaster = TNumNodes>
using Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::TriangleType = Triangle3D3<PointType>

Type definition for the triangle.

Member Function Documentation

◆ AddExplicitContributionOfMortarCondition()

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 >::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 
)
static

This method computes the explicit contributions of the mortar contact conditions.

This method is created in order to avoid duplicated code

Parameters
pConditionThe condition pointer to compute the explicit contribution
rCurrentProcessInfoThe current instance process info
IntegrationOrderThe integration order of the utility
AxisymmetricCaseIf consider the axisymmetric coefficient
ComputeNodalAreaIf the contribution of the nodal are must be computed
ComputeDualLMIf condider dual LM to begin with
rAreaVariableThe nodal area variable
Returns
The mortar operators

◆ AddExplicitContributionOfMortarFrictionalCondition()

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
pConditionThe condition pointer to compute the explicit contribution
rCurrentProcessInfoThe current instance process info
rPreviousMortarOperatorsThe previous mortar operators
IntegrationOrderThe integration order of the utility
AxisymmetricCaseIf consider the axisymmetric coefficient
ComputeNodalAreaIf the contribution of the nodal are must be computed
ComputeDualLMIf condider dual LM to begin with
rAreaVariableThe nodal area variable
ConsiderObjetiveFormulationIf the objetive formulation is considered always
Returns
The mortar operators

◆ CalculateKinematics()

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
pConditionThe pointer to the condition
rVariablesContainer of the jacobians, shape functions, etc...
rDerivativeDataThe container of the directional derivatives of the mortar parameters
rNormalMasterThe normal of the master side
rLocalPointDecompThe local points of the decomposed geometries using the mortar segmentation
rLocalPointParentThe local points of the parent geometry
rGeometryDecompThe geometry decomposed
DualLMIf the dual LM is considered or not

SLAVE CONDITION ///

MASTER CONDITION ///

◆ ComputeNodalArea()

template<const SizeType TDim, const SizeType TNumNodes, const FrictionalCase TFrictional, const bool TNormalVariation, const SizeType TNumNodesMaster>
void Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::ComputeNodalArea ( PairedCondition pCondition,
const ProcessInfo rCurrentProcessInfo,
const Variable< double > &  rAreaVariable = NODAL_AREA,
const IndexType  IntegrationOrder = 2,
const bool  AxisymmetricCase = false 
)
static

This method computes the nodal area.

This method is created in order to avoid duplicated code

Parameters
pConditionThe condition pointer to compute the explicit contribution
rCurrentProcessInfoThe current instance process info
rAreaVariableThe nodal area variable
IntegrationOrderThe integration order of the utility
AxisymmetricCaseIf consider the axisymmetric coefficient
Returns
True is dual LM, false otherwise

◆ ComputePreviousMortarOperators()

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
pConditionThe condition pointer to compute the explicit contribution
rCurrentProcessInfoThe current instance process info
rPreviousMortarOperatorsThe previous mortar operators
IntegrationOrderThe integration order of the utility
AxisymmetricCaseIf consider the axisymmetric coefficient
ComputeNodalAreaIf the contribution of the nodal are must be computed
ComputeDualLMIf condider dual LM to begin with
rAreaVariableThe nodal area variable
Returns
True is dual LM, false otherwise

◆ ExplicitCalculateAe()

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
rSlaveGeometryThe geometry of the slave side
rVariablesContainer of the jacobians, shape functions, etc...
rConditionsPointsSlaveContainer of the jacobians, shape functions, etc...
rAeThe dual LM operator
rIntegrationMethodThe integration method considered
AxiSymCoeffThe coefficient of axisymmetry

◆ ExplicitCalculateKinematics()

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
pConditionThe pointer to the condition
rVariablesContainer of the jacobians, shape functions, etc...
rAeThe dual LM operator
rNormalMasterThe normal of the master side
rLocalPointDecompThe local points of the decomposed geometries using the mortar segmentation
rLocalPointParentThe local points of the parent geometry
rGeometryDecompThe geometry decomposed
DualLMIf the dual LM is considered or not

SLAVE CONDITION ///

MASTER CONDITION ///

◆ MasterShapeFunctionValue()

template<SizeType TDim, SizeType TNumNodes, FrictionalCase TFrictional, bool TNormalVariation, SizeType TNumNodesMaster>
void Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::MasterShapeFunctionValue ( const PairedCondition pCondition,
GeneralVariables rVariables,
const array_1d< double, 3 > &  rNormalMaster,
const PointType rLocalPoint 
)
static

Calculates the values of the shape functions for the master element.

Parameters
pConditionThe pointer to the condition
rVariablesContainer of the jacobians, shape functions, etc...
rNormalMasterThe normal of the master side
rLocalPointThe current local point

Member Data Documentation

◆ CheckThresholdCoefficient

template<const SizeType TDim, const SizeType TNumNodes, const FrictionalCase TFrictional, const bool TNormalVariation, const SizeType TNumNodesMaster = TNumNodes>
constexpr double Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::CheckThresholdCoefficient = 1.0e-12
staticconstexpr

◆ IsFrictional

template<const SizeType TDim, const SizeType TNumNodes, const FrictionalCase TFrictional, const bool TNormalVariation, const SizeType TNumNodesMaster = TNumNodes>
constexpr bool Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::IsFrictional = (TFrictional == FrictionalCase::FRICTIONAL || TFrictional == FrictionalCase::FRICTIONAL_PENALTY) ? true : false
staticconstexpr

Flag indicating if the case is frictional.

◆ MatrixSize

template<const SizeType TDim, const SizeType TNumNodes, const FrictionalCase TFrictional, const bool TNormalVariation, const SizeType TNumNodesMaster = TNumNodes>
constexpr IndexType Kratos::MortarExplicitContributionUtilities< TDim, TNumNodes, TFrictional, TNormalVariation, TNumNodesMaster >::MatrixSize = (TFrictional == FrictionalCase::FRICTIONLESS) ? TDim * (TNumNodesMaster + TNumNodes) + TNumNodes : (TFrictional == FrictionalCase::FRICTIONLESS_COMPONENTS || TFrictional == FrictionalCase::FRICTIONAL) ? TDim * (TNumNodesMaster + TNumNodes + TNumNodes) : TDim * (TNumNodesMaster + TNumNodes)
staticconstexpr

The size of the matrix.


The documentation for this class was generated from the following files: