14 #if !defined(KRATOS_TWO_FLUID_NAVIER_STOKES)
15 #define KRATOS_TWO_FLUID_NAVIER_STOKES
27 #include "utilities/geometry_utilities.h"
65 template<
class TElementData >
148 Properties::Pointer pProperties)
const override;
159 GeometryType::Pointer pGeom,
160 Properties::Pointer pProperties)
const override;
205 std::string
Info()
const override;
233 std::vector<double> &rValues,
335 unsigned int IntegrationPointIndex,
337 const typename TElementData::MatrixRowType& rN,
338 const typename TElementData::ShapeDerivativesType& rDN_DX)
const override;
350 unsigned int IntegrationPointIndex,
352 const typename TElementData::MatrixRowType& rN,
353 const typename TElementData::ShapeDerivativesType& rDN_DX,
354 const typename TElementData::MatrixRowType& rNenr,
355 const typename TElementData::ShapeDerivativesType& rDN_DXenr)
const;
367 const TElementData& rData,
368 const Vector& rInterfaceWeights,
369 const Matrix& rEnrInterfaceShapeFunctionPos,
370 const Matrix& rEnrInterfaceShapeFunctionNeg,
431 void ComputeSplitting(
441 ModifiedShapeFunctions::Pointer pModifiedShapeFunctions);
454 void ComputeSplitInterface(
455 const TElementData& rData,
460 Vector& rInterfaceWeightsNeg,
462 ModifiedShapeFunctions::Pointer pModifiedShapeFunctions);
469 ModifiedShapeFunctions::UniquePointer pGetModifiedShapeFunctionsUtility(
470 const GeometryType::Pointer pGeometry,
471 const Vector& rDistances);
478 void CalculateCurvatureOnInterfaceGaussPoints(
479 const Matrix& rInterfaceShapeFunctions,
480 Vector& rInterfaceCurvature);
492 const double SurfaceTensionCoefficient,
494 const Vector& rInterfaceWeights,
495 const Matrix& rInterfaceShapeFunctions,
512 void CondenseEnrichmentWithContinuity(
513 const TElementData& rData,
514 Matrix& rLeftHandSideMatrix,
534 void CondenseEnrichment(
535 Matrix& rLeftHandSideMatrix,
542 void AddSurfaceTensionContribution(
543 const TElementData& rData,
548 Vector& rInterfaceWeights,
550 Matrix &rLeftHandSideMatrix,
586 template<
class TElementData >
594 template<
class TElementData >
599 rOStream << std::endl;
PeriodicInterfaceProcess & operator=(const PeriodicInterfaceProcess &)=delete
std::size_t IndexType
Definition: flags.h:74
Large Displacement Lagrangian Element for 3D and 2D geometries. (base class)
Definition: fluid_element.h:61
MatrixRow< Matrix > ShapeFunctionsType
Type for shape function values container.
Definition: fluid_element.h:95
void PrintData(std::ostream &rOStream) const override
Print object's data.
Definition: fluid_element.hpp:584
Geometry base class.
Definition: geometry.h:71
This object defines an indexed object.
Definition: indexed_object.h:54
This class defines the node.
Definition: node.h:65
This class provides to Kratos a data structure for I/O based on the standard of JSON.
Definition: kratos_parameters.h:59
PointerVector is a container like stl vector but using a vector to store pointers to its data.
Definition: pointer_vector.h:72
A sorted associative container similar to an STL set, but uses a vector to store pointers to its data...
Definition: pointer_vector_set.h:72
ProcessInfo holds the current value of different solution parameters.
Definition: process_info.h:59
The serialization consists in storing the state of an object into a storage format like data file or ...
Definition: serializer.h:123
A stabilized element for the incompressible Navier-Stokes equations, utilizing lagrangian_Eulerian ap...
Definition: surface_tension.h:91
Definition: two_fluid_navier_stokes.h:67
void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
virtual void ComputeGaussPointEnrichmentContributions(TElementData &rData, MatrixType &rV, MatrixType &rH, MatrixType &rKee, VectorType &rRHS_ee)
Computes the pressure enrichment contributions This method computes the pressure enrichment contribut...
TwoFluidNavierStokes(IndexType NewId=0)
Default constuctor.
std::size_t IndexType
Definition: two_fluid_navier_stokes.h:81
Element::Pointer Create(IndexType NewId, GeometryType::Pointer pGeom, Properties::Pointer pProperties) const override
Create a new element of this type using given geometry.
void AddTimeIntegratedRHS(TElementData &rData, VectorType &rRHS) override
Computes the time integrated RHS vector This method computes the Right Hand Side time integrated cont...
void UpdateIntegrationPointData(TElementData &rData, unsigned int IntegrationPointIndex, double Weight, const typename TElementData::MatrixRowType &rN, const typename TElementData::ShapeDerivativesType &rDN_DX) const override
Set up the element's data and constitutive law for the current integration point.
FluidElement< TElementData >::ShapeFunctionDerivativesArrayType ShapeFunctionDerivativesArrayType
Definition: two_fluid_navier_stokes.h:88
constexpr static unsigned int BlockSize
Definition: two_fluid_navier_stokes.h:91
std::size_t SizeType
Definition: two_fluid_navier_stokes.h:82
virtual void ComputeGaussPointRHSContribution(TElementData &rData, VectorType &rRHS)
Computes the RHS Gaus pt. contribution This method computes the contribution to the RHS of a Gauss pt...
constexpr static unsigned int StrainSize
Definition: two_fluid_navier_stokes.h:93
TwoFluidNavierStokes(IndexType NewId, const NodesArrayType &ThisNodes)
Constructor using an array of nodes.
int Check(const ProcessInfo &rCurrentProcessInfo) const override
Auxiliar element check function.
Geometry< NodeType >::PointsArrayType NodesArrayType
Definition: two_fluid_navier_stokes.h:78
PointerVectorSet< Dof< double >, IndexedObject > DofsArrayType
Definition: two_fluid_navier_stokes.h:85
constexpr static unsigned int LocalSize
Definition: two_fluid_navier_stokes.h:92
virtual void PressureGradientStabilization(const TElementData &rData, const Vector &rInterfaceWeights, const Matrix &rEnrInterfaceShapeFunctionPos, const Matrix &rEnrInterfaceShapeFunctionNeg, const GeometryType::ShapeFunctionsGradientsType &rInterfaceShapeDerivatives, MatrixType &rKeeTot, VectorType &rRHSeeTot)
Computes the enriched LHS/RHS terms associated with the pressure stabilizations at the interface.
Geometry< NodeType > GeometryType
Definition: two_fluid_navier_stokes.h:77
virtual ~TwoFluidNavierStokes()
Destructor.
FluidElement< TElementData >::ShapeFunctionDerivativesType ShapeFunctionDerivativesType
Definition: two_fluid_navier_stokes.h:87
KRATOS_CLASS_INTRUSIVE_POINTER_DEFINITION(TwoFluidNavierStokes)
Counted pointer of.
TwoFluidNavierStokes(IndexType NewId, GeometryType::Pointer pGeometry, Properties::Pointer pProperties)
Constuctor using geometry and properties.
void CalculateLocalSystem(MatrixType &rLeftHandSideMatrix, VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo) override
Computes the elemental LHS and RHS elemental contributions.
TwoFluidNavierStokes(IndexType NewId, GeometryType::Pointer pGeometry)
Constructor using a geometry object.
void save(Serializer &rSerializer) const override
Node NodeType
Definition: two_fluid_navier_stokes.h:76
void CalculateStrainRate(TElementData &rData) const override
Calculate the strain rate In this function we calculate the strain rate at the mid step.
FluidElement< TElementData >::ShapeFunctionsType ShapeFunctionsType
Definition: two_fluid_navier_stokes.h:86
Vector VectorType
Definition: two_fluid_navier_stokes.h:79
Element::Pointer Create(IndexType NewId, NodesArrayType const &ThisNodes, Properties::Pointer pProperties) const override
Create a new element of this type.
constexpr static unsigned int Dim
Definition: two_fluid_navier_stokes.h:89
std::vector< std::size_t > EquationIdVectorType
Definition: two_fluid_navier_stokes.h:83
void CalculateOnIntegrationPoints(const Variable< double > &rVariable, std::vector< double > &rValues, const ProcessInfo &rCurrentProcessInfo) override
Function to visualize the divergence field.
Matrix MatrixType
Definition: two_fluid_navier_stokes.h:80
void UpdateIntegrationPointData(TElementData &rData, unsigned int IntegrationPointIndex, double Weight, const typename TElementData::MatrixRowType &rN, const typename TElementData::ShapeDerivativesType &rDN_DX, const typename TElementData::MatrixRowType &rNenr, const typename TElementData::ShapeDerivativesType &rDN_DXenr) const
Set up the element's data for a cut element and constitutive law for the current integration point.
const Parameters GetSpecifications() const override
This method provides the specifications/requirements of the element.
void load(Serializer &rSerializer) override
std::vector< Dof< double >::Pointer > DofsVectorType
Definition: two_fluid_navier_stokes.h:84
std::string Info() const override
Turn back information as a string.
void CalculateRightHandSide(VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo) override
Computes the elemental RHS elemental contribution.
void AddTimeIntegratedSystem(TElementData &rData, MatrixType &rLHS, VectorType &rRHS) override
Computes time integrated LHS and RHS arrays This method computes both the Left Hand Side and Right Ha...
constexpr static unsigned int NumNodes
Definition: two_fluid_navier_stokes.h:90
void AddTimeIntegratedLHS(TElementData &rData, MatrixType &rLHS) override
Computes the time integrated LHS matrix This method computes the Left Hand Side time integrated contr...
virtual void ComputeGaussPointLHSContribution(TElementData &rData, MatrixType &rLHS)
Computes the LHS Gauss pt. contribution This method computes the contribution to the LHS of a Gauss p...
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
std::istream & operator>>(std::istream &rIStream, LinearMasterSlaveConstraint &rThis)
input stream function
std::ostream & operator<<(std::ostream &rOStream, const LinearMasterSlaveConstraint &rThis)
output stream function
Definition: linear_master_slave_constraint.h:432