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::FluidElementUtilities< TNumNodes > Class Template Reference

Auxiliary and specialized functions for elements derived from FluidElement. More...

#include <fluid_element_utilities.h>

Collaboration diagram for Kratos::FluidElementUtilities< TNumNodes >:

Public Member Functions

Life Cycle
 FluidElementUtilities ()=delete
 
 FluidElementUtilities (FluidElementUtilities const &rOther)=delete
 Deleted copy constructor. More...
 
 ~FluidElementUtilities ()
 Destructor. More...
 
Operators
FluidElementUtilitiesoperator= (FluidElementUtilities const &rOther)=delete
 Deleted assignment operator. More...
 

Static Public Member Functions

Operations
static void GetStrainMatrix (const ShapeDerivatives2DType &rDNDX, BoundedMatrix< double, VoigtVector2DSize, 3 *TNumNodes > &rStrainMatrix)
 
static void GetStrainMatrix (const ShapeDerivatives3DType &rDNDX, BoundedMatrix< double, VoigtVector3DSize, 4 *TNumNodes > &rStrainMatrix)
 
static void GetNewtonianConstitutiveMatrix (const double DynamicViscosity, BoundedMatrix< double, VoigtVector2DSize, VoigtVector2DSize > &rConstitutiveMatrix)
 
static void GetNewtonianConstitutiveMatrix (const double DynamicViscosity, BoundedMatrix< double, VoigtVector3DSize, VoigtVector3DSize > &rConstitutiveMatrix)
 
static void VoigtTransformForProduct (const array_1d< double, 3 > &rVector, BoundedMatrix< double, 2, VoigtVector2DSize > &rVoigtMatrix)
 
static void VoigtTransformForProduct (const array_1d< double, 3 > &rVector, BoundedMatrix< double, 3, VoigtVector3DSize > &rVoigtMatrix)
 
static void SetNormalProjectionMatrix (const array_1d< double, 3 > &rUnitNormal, BoundedMatrix< double, 2, 2 > &rNormalProjMatrix)
 
static void SetNormalProjectionMatrix (const array_1d< double, 3 > &rUnitNormal, BoundedMatrix< double, 3, 3 > &rNormalProjMatrix)
 
static void SetTangentialProjectionMatrix (const array_1d< double, 3 > &rUnitNormal, BoundedMatrix< double, 2, 2 > &rTangProjMatrix)
 
static void SetTangentialProjectionMatrix (const array_1d< double, 3 > &rUnitNormal, BoundedMatrix< double, 3, 3 > &rTangProjMatrix)
 
static void DenseSystemSolve (const BoundedMatrix< double, 2, 2 > &rA, const array_1d< double, 2 > &rB, array_1d< double, 2 > &rX)
 
static void DenseSystemSolve (const BoundedMatrix< double, 3, 3 > &rA, const array_1d< double, 3 > &rB, array_1d< double, 3 > &rX)
 

Type Definitions

using ShapeDerivatives2DType = typename FluidElementData< 2, TNumNodes, false >::ShapeDerivativesType
 
using ShapeDerivatives3DType = typename FluidElementData< 3, TNumNodes, false >::ShapeDerivativesType
 
constexpr static std::size_t VoigtVector2DSize = FluidElementData<2,TNumNodes,false>::StrainSize
 
constexpr static std::size_t VoigtVector3DSize = FluidElementData<3,TNumNodes,false>::StrainSize
 
 KRATOS_CLASS_POINTER_DEFINITION (FluidElementUtilities)
 Pointer definition of FluidElementUtilities. More...
 

Detailed Description

template<std::size_t TNumNodes>
class Kratos::FluidElementUtilities< TNumNodes >

Auxiliary and specialized functions for elements derived from FluidElement.

Member Typedef Documentation

◆ ShapeDerivatives2DType

template<std::size_t TNumNodes>
using Kratos::FluidElementUtilities< TNumNodes >::ShapeDerivatives2DType = typename FluidElementData<2,TNumNodes,false>::ShapeDerivativesType

◆ ShapeDerivatives3DType

template<std::size_t TNumNodes>
using Kratos::FluidElementUtilities< TNumNodes >::ShapeDerivatives3DType = typename FluidElementData<3,TNumNodes,false>::ShapeDerivativesType

Constructor & Destructor Documentation

◆ FluidElementUtilities() [1/2]

template<std::size_t TNumNodes>
Kratos::FluidElementUtilities< TNumNodes >::FluidElementUtilities ( )
delete

◆ FluidElementUtilities() [2/2]

template<std::size_t TNumNodes>
Kratos::FluidElementUtilities< TNumNodes >::FluidElementUtilities ( FluidElementUtilities< TNumNodes > const &  rOther)
delete

Deleted copy constructor.

◆ ~FluidElementUtilities()

template<std::size_t TNumNodes>
Kratos::FluidElementUtilities< TNumNodes >::~FluidElementUtilities

Destructor.

Member Function Documentation

◆ DenseSystemSolve() [1/2]

template<std::size_t TNumNodes>
void Kratos::FluidElementUtilities< TNumNodes >::DenseSystemSolve ( const BoundedMatrix< double, 2, 2 > &  rA,
const array_1d< double, 2 > &  rB,
array_1d< double, 2 > &  rX 
)
static

Invert a system with 2 unknowns, defined using bounded matrix types.

Parameters
[in]rAthe 2x2 system matrix.
[in]rBthe right hand side vector.
[out]rXthe solution of the system.

◆ DenseSystemSolve() [2/2]

template<std::size_t TNumNodes>
void Kratos::FluidElementUtilities< TNumNodes >::DenseSystemSolve ( const BoundedMatrix< double, 3, 3 > &  rA,
const array_1d< double, 3 > &  rB,
array_1d< double, 3 > &  rX 
)
static

Invert a system with 3 unknowns, defined using bounded matrix types.

Parameters
[in]rAthe 3x3 system matrix.
[in]rBthe right hand side vector.
[out]rXthe solution of the system.

◆ GetNewtonianConstitutiveMatrix() [1/2]

template<std::size_t TNumNodes>
void Kratos::FluidElementUtilities< TNumNodes >::GetNewtonianConstitutiveMatrix ( const double  DynamicViscosity,
BoundedMatrix< double, VoigtVector2DSize, VoigtVector2DSize > &  rConstitutiveMatrix 
)
static

Auxiliary function that writes the constitutive matrix (C) for a Newtonian fluid using the given dynamic viscosity (mu). 2D variant.

Parameters
DynamicViscosityDynamic viscosity (mu) for the fluid.
rConstitutiveMatrixcomputed constitutive matrix for the fluid (output).

◆ GetNewtonianConstitutiveMatrix() [2/2]

template<std::size_t TNumNodes>
void Kratos::FluidElementUtilities< TNumNodes >::GetNewtonianConstitutiveMatrix ( const double  DynamicViscosity,
BoundedMatrix< double, VoigtVector3DSize, VoigtVector3DSize > &  rConstitutiveMatrix 
)
static

Auxiliary function that writes the constitutive matrix (C) for a Newtonian fluid using the given dynamic viscosity (mu). 3D variant.

Parameters
DynamicViscosityDynamic viscosity (mu) for the fluid.
rConstitutiveMatrixcomputed constitutive matrix for the fluid (output).

◆ GetStrainMatrix() [1/2]

template<std::size_t TNumNodes>
void Kratos::FluidElementUtilities< TNumNodes >::GetStrainMatrix ( const ShapeDerivatives2DType rDNDX,
BoundedMatrix< double, VoigtVector2DSize, 3 *TNumNodes > &  rStrainMatrix 
)
static

Auxiliary function that writes the strain matrix (B) relating nodal degrees of freedom and the symmetric gradient of velocity. Note that pressure Dofs are considered included in the array of nodal Dofs (and the corresponding rows set to zero). 2D variant.

Parameters
rDNDXShape function gradients evaluated at the current integration point.
rStrainMatrixcomputed strain matrix for the current integration point (output).

◆ GetStrainMatrix() [2/2]

template<std::size_t TNumNodes>
void Kratos::FluidElementUtilities< TNumNodes >::GetStrainMatrix ( const ShapeDerivatives3DType rDNDX,
BoundedMatrix< double, VoigtVector3DSize, 4 *TNumNodes > &  rStrainMatrix 
)
static

Auxiliary function that writes the strain matrix (B) relating nodal degrees of freedom and the symmetric gradient of velocity. Note that pressure Dofs are considered included in the array of nodal Dofs (and the corresponding rows set to zero). 2D variant.

Parameters
rDNDXShape function gradients evaluated at the current integration point.
rStrainMatrixcomputed strain matrix for the current integration point (output).

◆ KRATOS_CLASS_POINTER_DEFINITION()

template<std::size_t TNumNodes>
Kratos::FluidElementUtilities< TNumNodes >::KRATOS_CLASS_POINTER_DEFINITION ( FluidElementUtilities< TNumNodes >  )

Pointer definition of FluidElementUtilities.

◆ operator=()

template<std::size_t TNumNodes>
FluidElementUtilities& Kratos::FluidElementUtilities< TNumNodes >::operator= ( FluidElementUtilities< TNumNodes > const &  rOther)
delete

Deleted assignment operator.

◆ SetNormalProjectionMatrix() [1/2]

template<std::size_t TNumNodes>
void Kratos::FluidElementUtilities< TNumNodes >::SetNormalProjectionMatrix ( const array_1d< double, 3 > &  rUnitNormal,
BoundedMatrix< double, 2, 2 > &  rNormalProjMatrix 
)
static

This function sets the normal projection matrix as the given unit normal outer product.

Parameters
rUnitNormalreference to the unit normal vector
rNormProjMatrixreference to the normal projection matrix

◆ SetNormalProjectionMatrix() [2/2]

template<std::size_t TNumNodes>
void Kratos::FluidElementUtilities< TNumNodes >::SetNormalProjectionMatrix ( const array_1d< double, 3 > &  rUnitNormal,
BoundedMatrix< double, 3, 3 > &  rNormalProjMatrix 
)
static

This function sets the normal projection matrix as the given unit normal outer product.

Parameters
rUnitNormalreference to the unit normal vector
rNormalProjMatrixreference to the normal projection matrix

◆ SetTangentialProjectionMatrix() [1/2]

template<std::size_t TNumNodes>
void Kratos::FluidElementUtilities< TNumNodes >::SetTangentialProjectionMatrix ( const array_1d< double, 3 > &  rUnitNormal,
BoundedMatrix< double, 2, 2 > &  rTangProjMatrix 
)
static

This function sets the tangential projection matrix as the identity matrix minus the given unit normal outer product.

Parameters
rUnitNormalreference to the unit normal vector
rTangProjMatrixreference to the normal projection matrix

◆ SetTangentialProjectionMatrix() [2/2]

template<std::size_t TNumNodes>
void Kratos::FluidElementUtilities< TNumNodes >::SetTangentialProjectionMatrix ( const array_1d< double, 3 > &  rUnitNormal,
BoundedMatrix< double, 3, 3 > &  rTangProjMatrix 
)
static

This function sets the tangential projection matrix as the identity matrix minus the given unit normal outer product.

Parameters
rUnitNormalreference to the unit normal vector
rTangProjMatrixreference to the normal projection matrix

◆ VoigtTransformForProduct() [1/2]

template<std::size_t TNumNodes>
void Kratos::FluidElementUtilities< TNumNodes >::VoigtTransformForProduct ( const array_1d< double, 3 > &  rVector,
BoundedMatrix< double, 2, VoigtVector2DSize > &  rVoigtMatrix 
)
static

This function transforms a vector n into a matrix P that can be used to compute matrix-vector product A*n for a symmetric matrix A expressed in Voigt notation. If a is the Voigt-notation representation of matrix A, A*n == P*a. This is the 2D variant.

Parameters
rVectorthe vector to transform.
rVoigtMatrixthe transformed matrix (output).

◆ VoigtTransformForProduct() [2/2]

template<std::size_t TNumNodes>
void Kratos::FluidElementUtilities< TNumNodes >::VoigtTransformForProduct ( const array_1d< double, 3 > &  rVector,
BoundedMatrix< double, 3, VoigtVector3DSize > &  rVoigtMatrix 
)
static

This function transforms a vector n into a matrix P that can be used to compute matrix-vector product A*n for a symmetric matrix A expressed in Voigt notation. If a is the Voigt-notation representation of matrix A, A*n == P*a. This is the 3D variant.

Parameters
rVectorthe vector to transform.
rVoigtMatrixthe transformed matrix (output).

Member Data Documentation

◆ VoigtVector2DSize

template<std::size_t TNumNodes>
constexpr static std::size_t Kratos::FluidElementUtilities< TNumNodes >::VoigtVector2DSize = FluidElementData<2,TNumNodes,false>::StrainSize
staticconstexpr

◆ VoigtVector3DSize

template<std::size_t TNumNodes>
constexpr static std::size_t Kratos::FluidElementUtilities< TNumNodes >::VoigtVector3DSize = FluidElementData<3,TNumNodes,false>::StrainSize
staticconstexpr

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