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.
|
#include <embedded_fluid_element_discontinuous.h>
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 double > | ComputeTangentialPenaltyCoefficients (const EmbeddedDiscontinuousElementData &rData) const |
std::pair< const double, const double > | ComputeTangentialNitscheCoefficients (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 >, IndexedObject > | DofsArrayType |
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 |
using Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::BaseElementData = typename TBaseElement::ElementData |
typedef PointerVectorSet<Dof<double>, IndexedObject> Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::DofsArrayType |
typedef std::vector< Dof<double>::Pointer > Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::DofsVectorType |
using Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::EmbeddedDiscontinuousElementData = EmbeddedDiscontinuousData< BaseElementData > |
typedef std::vector<std::size_t> Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::EquationIdVectorType |
typedef std::size_t Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::IndexType |
typedef Matrix Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::MatrixType |
Matrix type for local contributions to the linear system.
typedef Geometry<NodeType>::PointsArrayType Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::NodesArrayType |
Definition of nodes container type, redefined from GeometryType.
typedef Node Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::NodeType |
typedef Geometry<NodeType>::ShapeFunctionsGradientsType Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::ShapeFunctionDerivativesArrayType |
Type for an array of shape function gradient matrices.
typedef Kratos::Matrix Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::ShapeFunctionDerivativesType |
Type for a matrix containing the shape function gradients.
typedef Kratos::Vector Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::ShapeFunctionsType |
Type for shape function values container.
typedef std::size_t Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::SizeType |
typedef Vector Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::VectorType |
Vector type for local contributions to the linear system.
Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::EmbeddedFluidElementDiscontinuous | ( | IndexType | NewId = 0 | ) |
Default constuctor.
NewId | Index number of the new element (optional) |
Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::EmbeddedFluidElementDiscontinuous | ( | IndexType | NewId, |
const NodesArrayType & | ThisNodes | ||
) |
Constructor using an array of nodes.
NewId | Index of the new element |
ThisNodes | An array containing the nodes of the new element |
Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::EmbeddedFluidElementDiscontinuous | ( | IndexType | NewId, |
Geometry< NodeType >::Pointer | pGeometry | ||
) |
Constructor using a geometry object.
NewId | Index of the new element |
pGeometry | Pointer to a geometry object |
Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::EmbeddedFluidElementDiscontinuous | ( | IndexType | NewId, |
Geometry< NodeType >::Pointer | pGeometry, | ||
Properties::Pointer | pProperties | ||
) |
Constuctor using geometry and properties.
NewId | Index of the new element |
pGeometry | Pointer to a geometry object |
pProperties | Pointer to the element's properties |
|
override |
Destructor.
|
protected |
This method adds the no-penetration condition penalty level set contribution.
rLHS | reference to the LHS matrix |
rRHS | reference to the RHS vector |
rData | reference to element data structure |
|
protected |
This method adds the no-penetration condition adjoint term level set contribution.
rLHS | reference to the LHS matrix |
rRHS | reference to the RHS vector |
rData | reference to element data structure |
|
protected |
This method adds the tangential stress condition penalty level set contribution.
rLHS | reference to the LHS matrix |
rRHS | reference to the RHS vector |
rData | reference to element data structure |
|
protected |
This method adds the tangential stress condition adjoint term level set contribution.
rLHS | reference to the LHS matrix |
rRHS | reference to the RHS vector |
rData | reference to element data structure |
|
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.
rVariable | Variable to be computed |
rOutput | Reference to the output array |
rCurrentProcessInfo | Reference to the process info |
|
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.
rVariable | Variable to be computed |
rOutput | Reference to the output double |
rCurrentProcessInfo | Reference to the process info |
|
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.
rVariable | Variable to be computed |
rOutput | Reference to the output matrix |
rCurrentProcessInfo | Reference to the process info |
|
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.
rVariable | Variable to be computed |
rOutput | Reference to the output vector |
rCurrentProcessInfo | Reference to the process info |
|
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.
rLeftHandSideMatrix | reference to the LHS matrix |
rRightHandSideVector | reference to the RHS vector |
rCurrentProcessInfo | reference to the ProcessInfo |
|
override |
|
protected |
This method computes the penalty coefficient for the Nitsche normal imposition
rData | reference to element data structure |
rN | the current Gauss pt. shape functions vector |
|
protected |
This method computes the Nitsche coefficients for the Nitsche tangential imposition
rData | reference to element data structure |
|
protected |
This method computes the Nitsche coefficients for the Nitsche normal imposition
rData | reference to element data structure |
|
override |
Create a new element of this type using given geometry.
Returns a pointer to a new FluidElement element, created using given input
NewId | the ID of the new element |
pGeom | a pointer to the geomerty to be used to create the element |
pProperties | the properties assigned to the new element |
|
override |
Create a new element of this type.
Returns a pointer to a new EmbeddedFluidElementDiscontinuous element, created using given input
NewId | the ID of the new element |
ThisNodes | the nodes of the new element |
pProperties | the properties assigned to the new element |
|
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.
rData | reference to the element data structure |
|
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.
rData | reference to the element data structure |
|
protected |
Non-intersected element geometry data fill This method sets the data structure geometry fields (shape functions, gradients, ...) for a non-intersected element.
rData | reference to the element data structure |
|
override |
|
override |
Turn back information as a string.
|
override |
Set up the element for solution.
For EmbeddedFluidElementDiscontinuous, this initializes the discontinuous level set (ELEMENTAL_DISTANCES) and the nodal imposed velocity (EMBEDDED_VELOCITY)
|
protected |
Current element data structure initialization This method checks if the element is intersected and calls the elemental data filling methods accordingly.
rData | reference to the element data structure |
Kratos::EmbeddedFluidElementDiscontinuous< TBaseElement >::KRATOS_CLASS_INTRUSIVE_POINTER_DEFINITION | ( | EmbeddedFluidElementDiscontinuous< TBaseElement > | ) |
Pointer definition of EmbeddedFluidElementDiscontinuous.
|
protected |
For an intersected element, normalize the interface normals This method normalizes the interface normals for an intersected element.
rNormals | interface normals container |
Tolerance | tolerance to avoid division by 0 when normalizing |
|
override |
Print information about this object.
|
friend |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |