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::EmbeddedFluidElementDiscontinuous< TBaseElement > Class Template Reference

#include <embedded_fluid_element_discontinuous.h>

Inheritance diagram for Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >:
Collaboration diagram for Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >:

Public Member Functions

Life Cycle
 EmbeddedFluidElementDiscontinuous (IndexType NewId=0)
 Default constuctor. More...
 
 EmbeddedFluidElementDiscontinuous (IndexType NewId, const NodesArrayType &ThisNodes)
 Constructor using an array of nodes. More...
 
 EmbeddedFluidElementDiscontinuous (IndexType NewId, Geometry< NodeType >::Pointer pGeometry)
 Constructor using a geometry object. More...
 
 EmbeddedFluidElementDiscontinuous (IndexType NewId, Geometry< NodeType >::Pointer pGeometry, Properties::Pointer pProperties)
 Constuctor using geometry and properties. More...
 
 ~EmbeddedFluidElementDiscontinuous () override
 Destructor. More...
 
Operations
Element::Pointer Create (IndexType NewId, NodesArrayType const &ThisNodes, Properties::Pointer pProperties) const override
 Create a new element of this type. More...
 
Element::Pointer Create (IndexType NewId, Geometry< NodeType >::Pointer pGeom, Properties::Pointer pProperties) const override
 Create a new element of this type using given geometry. More...
 
void Initialize (const ProcessInfo &rCurrentProcessInfo) override
 Set up the element for solution. More...
 
void CalculateLocalSystem (MatrixType &rLeftHandSideMatrix, VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo) override
 Calculates both LHS and RHS contributions. More...
 
void Calculate (const Variable< double > &rVariable, double &rOutput, const ProcessInfo &rCurrentProcessInfo) override
 Computes an elemental double value. More...
 
void Calculate (const Variable< array_1d< double, 3 >> &rVariable, array_1d< double, 3 > &rOutput, const ProcessInfo &rCurrentProcessInfo) override
 Computes an elemental 3 components array value. More...
 
void Calculate (const Variable< Vector > &rVariable, Vector &rOutput, const ProcessInfo &rCurrentProcessInfo) override
 Computes an elemental vector value. More...
 
void Calculate (const Variable< Matrix > &rVariable, Matrix &rOutput, const ProcessInfo &rCurrentProcessInfo) override
 Computes an elemental matrix value. More...
 
Inquiry
int Check (const ProcessInfo &rCurrentProcessInfo) const override
 
Input and output
const Parameters GetSpecifications () const override
 
std::string Info () const override
 Turn back information as a string. More...
 
void PrintInfo (std::ostream &rOStream) const override
 Print information about this object. More...
 

Protected Member Functions

Protected Operations
void InitializeGeometryData (EmbeddedDiscontinuousElementData &rData) const
 Current element data structure initialization This method checks if the element is intersected and calls the elemental data filling methods accordingly. More...
 
void DefineStandardGeometryData (EmbeddedDiscontinuousElementData &rData) const
 Non-intersected element geometry data fill This method sets the data structure geometry fields (shape functions, gradients, ...) for a non-intersected element. More...
 
void DefineCutGeometryData (EmbeddedDiscontinuousElementData &rData) const
 Intersected element geometry data fill This method sets the data structure geometry fields (shape functions, gradients, interface normals, ...) for an intersected element. To do that, the modified shape functions utility is firstly created and then called to perform all operations on both, the positive and negative, sides of the element. More...
 
void DefineIncisedGeometryData (EmbeddedDiscontinuousElementData &rData) const
 Intersected element geometry data fill This method sets the data structure geometry fields (shape functions, gradients, interface normals, ...) for an incised element. To do that, the modified shape functions utility is firstly created and then called to perform all operations on both, the positive and negative, sides of the element. More...
 
void NormalizeInterfaceNormals (typename EmbeddedDiscontinuousElementData::InterfaceNormalsType &rNormals, double Tolerance) const
 For an intersected element, normalize the interface normals This method normalizes the interface normals for an intersected element. More...
 
void AddNormalPenaltyContribution (MatrixType &rLHS, VectorType &rRHS, const EmbeddedDiscontinuousElementData &rData) const
 
void AddNormalSymmetricCounterpartContribution (MatrixType &rLHS, VectorType &rRHS, const EmbeddedDiscontinuousElementData &rData) const
 
void AddTangentialPenaltyContribution (MatrixType &rLHS, VectorType &rRHS, const EmbeddedDiscontinuousElementData &rData) const
 
void AddTangentialSymmetricCounterpartContribution (MatrixType &rLHS, VectorType &rRHS, const EmbeddedDiscontinuousElementData &rData) const
 
double ComputeNormalPenaltyCoefficient (const EmbeddedDiscontinuousElementData &rData, const Vector &rN) const
 
std::pair< const double, const doubleComputeTangentialPenaltyCoefficients (const EmbeddedDiscontinuousElementData &rData) const
 
std::pair< const double, const doubleComputeTangentialNitscheCoefficients (const EmbeddedDiscontinuousElementData &rData) const
 

Type Definitions

typedef Node NodeType
 Node type (default is: Node) More...
 
typedef Geometry< NodeType >::PointsArrayType NodesArrayType
 Definition of nodes container type, redefined from GeometryType. More...
 
typedef Vector VectorType
 Vector type for local contributions to the linear system. More...
 
typedef Matrix MatrixType
 Matrix type for local contributions to the linear system. More...
 
typedef std::size_t IndexType
 
typedef std::size_t SizeType
 
typedef std::vector< std::size_t > EquationIdVectorType
 
typedef std::vector< Dof< double >::Pointer > DofsVectorType
 
typedef PointerVectorSet< Dof< double >, IndexedObjectDofsArrayType
 
typedef Kratos::Vector ShapeFunctionsType
 Type for shape function values container. More...
 
typedef Kratos::Matrix ShapeFunctionDerivativesType
 Type for a matrix containing the shape function gradients. More...
 
typedef Geometry< NodeType >::ShapeFunctionsGradientsType ShapeFunctionDerivativesArrayType
 Type for an array of shape function gradient matrices. More...
 
using BaseElementData = typename TBaseElement::ElementData
 
using EmbeddedDiscontinuousElementData = EmbeddedDiscontinuousData< BaseElementData >
 
constexpr static std::size_t Dim = TBaseElement::Dim
 
constexpr static std::size_t NumNodes = TBaseElement::NumNodes
 
constexpr static std::size_t BlockSize = TBaseElement::BlockSize
 
constexpr static std::size_t LocalSize = TBaseElement::LocalSize
 
constexpr static std::size_t StrainSize = TBaseElement::StrainSize
 
 KRATOS_CLASS_INTRUSIVE_POINTER_DEFINITION (EmbeddedFluidElementDiscontinuous)
 Pointer definition of EmbeddedFluidElementDiscontinuous. More...
 

Serialization

class Serializer
 

Member Typedef Documentation

◆ BaseElementData

template<class TBaseElement >
using Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::BaseElementData = typename TBaseElement::ElementData

◆ DofsArrayType

template<class TBaseElement >
typedef PointerVectorSet<Dof<double>, IndexedObject> Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::DofsArrayType

◆ DofsVectorType

template<class TBaseElement >
typedef std::vector< Dof<double>::Pointer > Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::DofsVectorType

◆ EmbeddedDiscontinuousElementData

◆ EquationIdVectorType

template<class TBaseElement >
typedef std::vector<std::size_t> Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::EquationIdVectorType

◆ IndexType

template<class TBaseElement >
typedef std::size_t Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::IndexType

◆ MatrixType

template<class TBaseElement >
typedef Matrix Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::MatrixType

Matrix type for local contributions to the linear system.

◆ NodesArrayType

template<class TBaseElement >
typedef Geometry<NodeType>::PointsArrayType Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::NodesArrayType

Definition of nodes container type, redefined from GeometryType.

◆ NodeType

template<class TBaseElement >
typedef Node Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::NodeType

Node type (default is: Node)

◆ ShapeFunctionDerivativesArrayType

template<class TBaseElement >
typedef Geometry<NodeType>::ShapeFunctionsGradientsType Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::ShapeFunctionDerivativesArrayType

Type for an array of shape function gradient matrices.

◆ ShapeFunctionDerivativesType

template<class TBaseElement >
typedef Kratos::Matrix Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::ShapeFunctionDerivativesType

Type for a matrix containing the shape function gradients.

◆ ShapeFunctionsType

template<class TBaseElement >
typedef Kratos::Vector Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::ShapeFunctionsType

Type for shape function values container.

◆ SizeType

template<class TBaseElement >
typedef std::size_t Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::SizeType

◆ VectorType

template<class TBaseElement >
typedef Vector Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::VectorType

Vector type for local contributions to the linear system.

Constructor & Destructor Documentation

◆ EmbeddedFluidElementDiscontinuous() [1/4]

template<class TBaseElement >
Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::EmbeddedFluidElementDiscontinuous ( IndexType  NewId = 0)

Default constuctor.

Parameters
NewIdIndex number of the new element (optional)

◆ EmbeddedFluidElementDiscontinuous() [2/4]

template<class TBaseElement >
Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::EmbeddedFluidElementDiscontinuous ( IndexType  NewId,
const NodesArrayType ThisNodes 
)

Constructor using an array of nodes.

Parameters
NewIdIndex of the new element
ThisNodesAn array containing the nodes of the new element

◆ EmbeddedFluidElementDiscontinuous() [3/4]

template<class TBaseElement >
Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::EmbeddedFluidElementDiscontinuous ( IndexType  NewId,
Geometry< NodeType >::Pointer  pGeometry 
)

Constructor using a geometry object.

Parameters
NewIdIndex of the new element
pGeometryPointer to a geometry object

◆ EmbeddedFluidElementDiscontinuous() [4/4]

template<class TBaseElement >
Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::EmbeddedFluidElementDiscontinuous ( IndexType  NewId,
Geometry< NodeType >::Pointer  pGeometry,
Properties::Pointer  pProperties 
)

Constuctor using geometry and properties.

Parameters
NewIdIndex of the new element
pGeometryPointer to a geometry object
pPropertiesPointer to the element's properties

◆ ~EmbeddedFluidElementDiscontinuous()

template<class TBaseElement >
Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::~EmbeddedFluidElementDiscontinuous
override

Destructor.

Member Function Documentation

◆ AddNormalPenaltyContribution()

template<class TBaseElement >
void Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::AddNormalPenaltyContribution ( MatrixType rLHS,
VectorType rRHS,
const EmbeddedDiscontinuousElementData rData 
) const
protected

This method adds the no-penetration condition penalty level set contribution.

Parameters
rLHSreference to the LHS matrix
rRHSreference to the RHS vector
rDatareference to element data structure

◆ AddNormalSymmetricCounterpartContribution()

template<class TBaseElement >
void Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::AddNormalSymmetricCounterpartContribution ( MatrixType rLHS,
VectorType rRHS,
const EmbeddedDiscontinuousElementData rData 
) const
protected

This method adds the no-penetration condition adjoint term level set contribution.

Parameters
rLHSreference to the LHS matrix
rRHSreference to the RHS vector
rDatareference to element data structure

◆ AddTangentialPenaltyContribution()

template<class TBaseElement >
void Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::AddTangentialPenaltyContribution ( MatrixType rLHS,
VectorType rRHS,
const EmbeddedDiscontinuousElementData rData 
) const
protected

This method adds the tangential stress condition penalty level set contribution.

Parameters
rLHSreference to the LHS matrix
rRHSreference to the RHS vector
rDatareference to element data structure

◆ AddTangentialSymmetricCounterpartContribution()

template<class TBaseElement >
void Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::AddTangentialSymmetricCounterpartContribution ( MatrixType rLHS,
VectorType rRHS,
const EmbeddedDiscontinuousElementData rData 
) const
protected

This method adds the tangential stress condition adjoint term level set contribution.

Parameters
rLHSreference to the LHS matrix
rRHSreference to the RHS vector
rDatareference to element data structure

◆ Calculate() [1/4]

template<class TBaseElement >
void Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::Calculate ( const Variable< array_1d< double, 3 >> &  rVariable,
array_1d< double, 3 > &  rOutput,
const ProcessInfo rCurrentProcessInfo 
)
override

Computes an elemental 3 components array value.

Given a 3 components array variable, this function computes its value inside de element. If the function has not implemented this variable computation, calls the base class one.

Parameters
rVariableVariable to be computed
rOutputReference to the output array
rCurrentProcessInfoReference to the process info

◆ Calculate() [2/4]

template<class TBaseElement >
void Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::Calculate ( const Variable< double > &  rVariable,
double rOutput,
const ProcessInfo rCurrentProcessInfo 
)
override

Computes an elemental double value.

Given a double variable, this function computes its value inside de element. If the function has not implemented this variable computation, calls the base class one.

Parameters
rVariableVariable to be computed
rOutputReference to the output double
rCurrentProcessInfoReference to the process info

◆ Calculate() [3/4]

template<class TBaseElement >
void Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::Calculate ( const Variable< Matrix > &  rVariable,
Matrix rOutput,
const ProcessInfo rCurrentProcessInfo 
)
override

Computes an elemental matrix value.

Given a matrix variable, this function computes its value inside de element. If the function has not implemented this variable computation, calls the base class one.

Parameters
rVariableVariable to be computed
rOutputReference to the output matrix
rCurrentProcessInfoReference to the process info

◆ Calculate() [4/4]

template<class TBaseElement >
void Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::Calculate ( const Variable< Vector > &  rVariable,
Vector rOutput,
const ProcessInfo rCurrentProcessInfo 
)
override

Computes an elemental vector value.

Given a vector variable, this function computes its value inside de element. If the function has not implemented this variable computation, calls the base class one.

Parameters
rVariableVariable to be computed
rOutputReference to the output vector
rCurrentProcessInfoReference to the process info

◆ CalculateLocalSystem()

template<class TBaseElement >
void Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::CalculateLocalSystem ( MatrixType rLeftHandSideMatrix,
VectorType rRightHandSideVector,
const ProcessInfo rCurrentProcessInfo 
)
override

Calculates both LHS and RHS contributions.

Computes the LHS and RHS elementar matrices. If the element is split includes the contribution of the level set boundary condition imposition.

Parameters
rLeftHandSideMatrixreference to the LHS matrix
rRightHandSideVectorreference to the RHS vector
rCurrentProcessInforeference to the ProcessInfo

◆ Check()

template<class TBaseElement >
int Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::Check ( const ProcessInfo rCurrentProcessInfo) const
override

◆ ComputeNormalPenaltyCoefficient()

template<class TBaseElement >
double Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::ComputeNormalPenaltyCoefficient ( const EmbeddedDiscontinuousElementData rData,
const Vector rN 
) const
protected

This method computes the penalty coefficient for the Nitsche normal imposition

Parameters
rDatareference to element data structure
rNthe current Gauss pt. shape functions vector
Returns
double The normal penalty coefficient value

◆ ComputeTangentialNitscheCoefficients()

template<class TBaseElement >
std::pair< const double, const double > Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::ComputeTangentialNitscheCoefficients ( const EmbeddedDiscontinuousElementData rData) const
protected

This method computes the Nitsche coefficients for the Nitsche tangential imposition

Parameters
rDatareference to element data structure
Returns
a pair of double containing the two coefficients

◆ ComputeTangentialPenaltyCoefficients()

template<class TBaseElement >
std::pair< const double, const double > Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::ComputeTangentialPenaltyCoefficients ( const EmbeddedDiscontinuousElementData rData) const
protected

This method computes the Nitsche coefficients for the Nitsche normal imposition

Parameters
rDatareference to element data structure
Returns
a pair of double containing the two coefficients

◆ Create() [1/2]

template<class TBaseElement >
Element::Pointer Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::Create ( IndexType  NewId,
Geometry< NodeType >::Pointer  pGeom,
Properties::Pointer  pProperties 
) const
override

Create a new element of this type using given geometry.

Returns a pointer to a new FluidElement element, created using given input

Parameters
NewIdthe ID of the new element
pGeoma pointer to the geomerty to be used to create the element
pPropertiesthe properties assigned to the new element
Returns
a Pointer to the new element

◆ Create() [2/2]

template<class TBaseElement >
Element::Pointer Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::Create ( IndexType  NewId,
NodesArrayType const &  ThisNodes,
Properties::Pointer  pProperties 
) const
override

Create a new element of this type.

Returns a pointer to a new EmbeddedFluidElementDiscontinuous element, created using given input

Parameters
NewIdthe ID of the new element
ThisNodesthe nodes of the new element
pPropertiesthe properties assigned to the new element
Returns
a Pointer to the new element

◆ DefineCutGeometryData()

template<class TBaseElement >
void Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::DefineCutGeometryData ( EmbeddedDiscontinuousElementData rData) const
protected

Intersected element geometry data fill This method sets the data structure geometry fields (shape functions, gradients, interface normals, ...) for an intersected element. To do that, the modified shape functions utility is firstly created and then called to perform all operations on both, the positive and negative, sides of the element.

Parameters
rDatareference to the element data structure

◆ DefineIncisedGeometryData()

template<class TBaseElement >
void Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::DefineIncisedGeometryData ( EmbeddedDiscontinuousElementData rData) const
protected

Intersected element geometry data fill This method sets the data structure geometry fields (shape functions, gradients, interface normals, ...) for an incised element. To do that, the modified shape functions utility is firstly created and then called to perform all operations on both, the positive and negative, sides of the element.

Parameters
rDatareference to the element data structure

◆ DefineStandardGeometryData()

template<class TBaseElement >
void Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::DefineStandardGeometryData ( EmbeddedDiscontinuousElementData rData) const
protected

Non-intersected element geometry data fill This method sets the data structure geometry fields (shape functions, gradients, ...) for a non-intersected element.

Parameters
rDatareference to the element data structure

◆ GetSpecifications()

template<class TBaseElement >
const Parameters Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::GetSpecifications
override

◆ Info()

template<class TBaseElement >
std::string Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::Info
override

Turn back information as a string.

◆ Initialize()

template<class TBaseElement >
void Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::Initialize ( const ProcessInfo rCurrentProcessInfo)
override

Set up the element for solution.

For EmbeddedFluidElementDiscontinuous, this initializes the discontinuous level set (ELEMENTAL_DISTANCES) and the nodal imposed velocity (EMBEDDED_VELOCITY)

◆ InitializeGeometryData()

template<class TBaseElement >
void Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::InitializeGeometryData ( EmbeddedDiscontinuousElementData rData) const
protected

Current element data structure initialization This method checks if the element is intersected and calls the elemental data filling methods accordingly.

Parameters
rDatareference to the element data structure

◆ KRATOS_CLASS_INTRUSIVE_POINTER_DEFINITION()

template<class TBaseElement >
Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::KRATOS_CLASS_INTRUSIVE_POINTER_DEFINITION ( EmbeddedFluidElementDiscontinuous< TBaseElement >  )

Pointer definition of EmbeddedFluidElementDiscontinuous.

◆ NormalizeInterfaceNormals()

template<class TBaseElement >
void Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::NormalizeInterfaceNormals ( typename EmbeddedDiscontinuousElementData::InterfaceNormalsType rNormals,
double  Tolerance 
) const
protected

For an intersected element, normalize the interface normals This method normalizes the interface normals for an intersected element.

Parameters
rNormalsinterface normals container
Tolerancetolerance to avoid division by 0 when normalizing

◆ PrintInfo()

template<class TBaseElement >
void Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::PrintInfo ( std::ostream &  rOStream) const
override

Print information about this object.

Friends And Related Function Documentation

◆ Serializer

template<class TBaseElement >
friend class Serializer
friend

Member Data Documentation

◆ BlockSize

template<class TBaseElement >
constexpr static std::size_t Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::BlockSize = TBaseElement::BlockSize
staticconstexpr

◆ Dim

template<class TBaseElement >
constexpr static std::size_t Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::Dim = TBaseElement::Dim
staticconstexpr

◆ LocalSize

template<class TBaseElement >
constexpr static std::size_t Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::LocalSize = TBaseElement::LocalSize
staticconstexpr

◆ NumNodes

template<class TBaseElement >
constexpr static std::size_t Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::NumNodes = TBaseElement::NumNodes
staticconstexpr

◆ StrainSize

template<class TBaseElement >
constexpr static std::size_t Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::StrainSize = TBaseElement::StrainSize
staticconstexpr

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