13 #if !defined(KRATOS_DROPLET_DYNAMICS_ELEMENT)
14 #define KRATOS_DROPLET_DYNAMICS_ELEMENT
26 #include "utilities/geometry_utilities.h"
55 template<
class TElementData >
138 Properties::Pointer pProperties)
const override;
149 GeometryType::Pointer pGeom,
150 Properties::Pointer pProperties)
const override;
195 std::string
Info()
const override;
223 std::vector<double> &rValues,
325 unsigned int IntegrationPointIndex,
327 const typename TElementData::MatrixRowType& rN,
328 const typename TElementData::ShapeDerivativesType& rDN_DX)
const override;
340 unsigned int IntegrationPointIndex,
342 const typename TElementData::MatrixRowType& rN,
343 const typename TElementData::ShapeDerivativesType& rDN_DX,
344 const typename TElementData::MatrixRowType& rNenr,
345 const typename TElementData::ShapeDerivativesType& rDN_DXenr)
const;
357 const TElementData& rData,
358 const Vector& rInterfaceWeights,
359 const Matrix& rEnrInterfaceShapeFunctionPos,
360 const Matrix& rEnrInterfaceShapeFunctionNeg,
421 void ComputeSplitting(
431 ModifiedShapeFunctions::Pointer pModifiedShapeFunctions);
444 void ComputeSplitInterface(
445 const TElementData& rData,
450 Vector& rInterfaceWeightsNeg,
452 ModifiedShapeFunctions::Pointer pModifiedShapeFunctions);
459 ModifiedShapeFunctions::UniquePointer pGetModifiedShapeFunctionsUtility(
460 const GeometryType::Pointer pGeometry,
461 const Vector& rDistances);
468 void CalculateCurvatureOnInterfaceGaussPoints(
469 const Matrix& rInterfaceShapeFunctions,
470 Vector& rInterfaceCurvature);
482 const double SurfaceTensionCoefficient,
484 const Vector& rInterfaceWeights,
485 const Matrix& rInterfaceShapeFunctions,
502 void CondenseEnrichment(
503 Matrix& rLeftHandSideMatrix,
510 void AddSurfaceTensionContribution(
511 const TElementData& rData,
516 Vector& rInterfaceWeights,
518 Matrix &rLeftHandSideMatrix,
554 template<
class TElementData >
562 template<
class TElementData >
567 rOStream << std::endl;
PeriodicInterfaceProcess & operator=(const PeriodicInterfaceProcess &)=delete
Definition: droplet_dynamics_element.h:57
std::vector< std::size_t > EquationIdVectorType
Definition: droplet_dynamics_element.h:73
std::size_t SizeType
Definition: droplet_dynamics_element.h:72
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 BlockSize
Definition: droplet_dynamics_element.h:81
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...
std::size_t IndexType
Definition: droplet_dynamics_element.h:71
Vector VectorType
Definition: droplet_dynamics_element.h:69
std::string Info() const override
Turn back information as a string.
constexpr static unsigned int Dim
Definition: droplet_dynamics_element.h:79
void CalculateLocalSystem(MatrixType &rLeftHandSideMatrix, VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo) override
Computes the elemental LHS and RHS elemental contributions.
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.
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.
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...
Element::Pointer Create(IndexType NewId, GeometryType::Pointer pGeom, Properties::Pointer pProperties) const override
Create a new element of this type using given geometry.
void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
FluidElement< TElementData >::ShapeFunctionDerivativesArrayType ShapeFunctionDerivativesArrayType
Definition: droplet_dynamics_element.h:78
KRATOS_CLASS_INTRUSIVE_POINTER_DEFINITION(DropletDynamicsElement)
Counted pointer of.
Geometry< NodeType > GeometryType
Definition: droplet_dynamics_element.h:67
Node NodeType
Definition: droplet_dynamics_element.h:66
FluidElement< TElementData >::ShapeFunctionsType ShapeFunctionsType
Definition: droplet_dynamics_element.h:76
int Check(const ProcessInfo &rCurrentProcessInfo) const override
Auxiliar element check function.
DropletDynamicsElement(IndexType NewId=0)
Default constuctor.
void CalculateOnIntegrationPoints(const Variable< double > &rVariable, std::vector< double > &rValues, const ProcessInfo &rCurrentProcessInfo) override
Function to visualize the divergence field.
FluidElement< TElementData >::ShapeFunctionDerivativesType ShapeFunctionDerivativesType
Definition: droplet_dynamics_element.h:77
constexpr static unsigned int LocalSize
Definition: droplet_dynamics_element.h:82
constexpr static unsigned int NumNodes
Definition: droplet_dynamics_element.h:80
DropletDynamicsElement(IndexType NewId, GeometryType::Pointer pGeometry)
Constructor using a geometry object.
Element::Pointer Create(IndexType NewId, NodesArrayType const &ThisNodes, Properties::Pointer pProperties) const override
Create a new element of this type.
PointerVectorSet< Dof< double >, IndexedObject > DofsArrayType
Definition: droplet_dynamics_element.h:75
virtual ~DropletDynamicsElement()
Destructor.
std::vector< Dof< double >::Pointer > DofsVectorType
Definition: droplet_dynamics_element.h:74
void CalculateStrainRate(TElementData &rData) const override
Calculate the strain rate In this function we calculate the strain rate at the mid step.
void CalculateRightHandSide(VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo) override
Computes the elemental RHS elemental contribution.
Matrix MatrixType
Definition: droplet_dynamics_element.h:70
DropletDynamicsElement(IndexType NewId, GeometryType::Pointer pGeometry, Properties::Pointer pProperties)
Constuctor using geometry and properties.
void load(Serializer &rSerializer) override
void AddTimeIntegratedRHS(TElementData &rData, VectorType &rRHS) override
Computes the time integrated RHS vector This method computes the Right Hand Side time integrated cont...
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.
const Parameters GetSpecifications() const override
This method provides the specifications/requirements of the element.
DropletDynamicsElement(IndexType NewId, const NodesArrayType &ThisNodes)
Constructor using an array of nodes.
Geometry< NodeType >::PointsArrayType NodesArrayType
Definition: droplet_dynamics_element.h:68
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...
void save(Serializer &rSerializer) const override
constexpr static unsigned int StrainSize
Definition: droplet_dynamics_element.h:83
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
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