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.
|
A stabilized element for the incompressible Navier-Stokes equations. More...
#include <monolithic_dem_coupled_weak.h>
Public Member Functions | |
Life Cycle | |
MonolithicDEMCoupledWeak (IndexType NewId=0) | |
Default constuctor. More... | |
MonolithicDEMCoupledWeak (IndexType NewId, const NodesArrayType &ThisNodes) | |
Constructor using an array of nodes. More... | |
MonolithicDEMCoupledWeak (IndexType NewId, GeometryType::Pointer pGeometry) | |
Constructor using a geometry object. More... | |
MonolithicDEMCoupledWeak (IndexType NewId, GeometryType::Pointer pGeometry, PropertiesType::Pointer pProperties) | |
Constuctor using geometry and properties. More... | |
virtual | ~MonolithicDEMCoupledWeak () |
Destructor. More... | |
Operations | |
Element::Pointer | Create (IndexType NewId, NodesArrayType const &ThisNodes, PropertiesType::Pointer pProperties) const override |
Create a new element of this type. More... | |
virtual void | CalculateLocalSystem (MatrixType &rLeftHandSideMatrix, VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo) override |
Provides local contributions from body forces and OSS projection terms. More... | |
virtual void | CalculateLeftHandSide (MatrixType &rLeftHandSideMatrix, const ProcessInfo &rCurrentProcessInfo) override |
Returns a zero matrix of appropiate size (provided for compatibility with scheme) More... | |
virtual void | CalculateRightHandSide (VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo) override |
Provides local contributions from body forces and projections to the RHS. More... | |
virtual void | CalculateMassMatrix (MatrixType &rMassMatrix, const ProcessInfo &rCurrentProcessInfo) override |
Computes local contributions to the mass matrix. More... | |
virtual void | CalculateLocalVelocityContribution (MatrixType &rDampingMatrix, VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo) override |
Computes the local contribution associated to 'new' velocity and pressure values. More... | |
virtual void | FinalizeNonLinearIteration (const ProcessInfo &rCurrentProcessInfo) override |
virtual void | Calculate (const Variable< double > &rVariable, double &rOutput, const ProcessInfo &rCurrentProcessInfo) override |
Implementation of Calculate to compute an error estimate. More... | |
virtual void | Calculate (const Variable< array_1d< double, 3 > > &rVariable, array_1d< double, 3 > &rOutput, const ProcessInfo &rCurrentProcessInfo) override |
Implementation of Calculate to compute the local OSS projections. More... | |
virtual void | EquationIdVector (EquationIdVectorType &rResult, const ProcessInfo &rCurrentProcessInfo) const override |
Provides the global indices for each one of this element's local rows. More... | |
virtual void | GetDofList (DofsVectorType &rElementalDofList, const ProcessInfo &rCurrentProcessInfo) const override |
Returns a list of the element's Dofs. More... | |
virtual void | GetFirstDerivativesVector (Vector &Values, int Step=0) const override |
Returns VELOCITY_X, VELOCITY_Y, (VELOCITY_Z,) PRESSURE for each node. More... | |
virtual void | GetSecondDerivativesVector (Vector &Values, int Step=0) const override |
Returns ACCELERATION_X, ACCELERATION_Y, (ACCELERATION_Z,) 0 for each node. More... | |
virtual void | CalculateOnIntegrationPoints (const Variable< array_1d< double, 3 > > &rVariable, std::vector< array_1d< double, 3 > > &rOutput, const ProcessInfo &rCurrentProcessInfo) override |
Obtain an array_1d<double,3> elemental variable, evaluated on gauss points. More... | |
virtual void | CalculateOnIntegrationPoints (const Variable< double > &rVariable, std::vector< double > &rValues, const ProcessInfo &rCurrentProcessInfo) override |
Obtain a double elemental variable, evaluated on gauss points. More... | |
virtual void | CalculateOnIntegrationPoints (const Variable< array_1d< double, 6 > > &rVariable, std::vector< array_1d< double, 6 > > &rValues, const ProcessInfo &rCurrentProcessInfo) override |
virtual void | CalculateOnIntegrationPoints (const Variable< Vector > &rVariable, std::vector< Vector > &rValues, const ProcessInfo &rCurrentProcessInfo) override |
virtual void | CalculateOnIntegrationPoints (const Variable< Matrix > &rVariable, std::vector< Matrix > &rValues, const ProcessInfo &rCurrentProcessInfo) override |
Elemental Data | |
virtual int | Check (const ProcessInfo &rCurrentProcessInfo) const override |
Checks the input and that all required Kratos variables have been registered. More... | |
Input and output | |
virtual std::string | Info () const override |
Turn back information as a string. More... | |
virtual void | PrintInfo (std::ostream &rOStream) const override |
Print information about this object. More... | |
Public Member Functions inherited from Kratos::Element | |
Element (IndexType NewId=0) | |
Element (IndexType NewId, const NodesArrayType &ThisNodes) | |
Element (IndexType NewId, GeometryType::Pointer pGeometry) | |
Element (IndexType NewId, GeometryType::Pointer pGeometry, PropertiesType::Pointer pProperties) | |
Element (Element const &rOther) | |
Copy constructor. More... | |
~Element () override | |
Destructor. More... | |
Element & | operator= (Element const &rOther) |
Assignment operator. More... | |
virtual Pointer | Create (IndexType NewId, GeometryType::Pointer pGeom, PropertiesType::Pointer pProperties) const |
It creates a new element pointer. More... | |
virtual Pointer | Clone (IndexType NewId, NodesArrayType const &ThisNodes) const |
It creates a new element pointer and clones the previous element data. More... | |
virtual IntegrationMethod | GetIntegrationMethod () const |
virtual void | GetValuesVector (Vector &values, int Step=0) const |
virtual void | Initialize (const ProcessInfo &rCurrentProcessInfo) |
virtual void | ResetConstitutiveLaw () |
virtual void | InitializeSolutionStep (const ProcessInfo &rCurrentProcessInfo) |
virtual void | InitializeNonLinearIteration (const ProcessInfo &rCurrentProcessInfo) |
virtual void | FinalizeSolutionStep (const ProcessInfo &rCurrentProcessInfo) |
virtual void | CalculateFirstDerivativesContributions (MatrixType &rLeftHandSideMatrix, VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo) |
virtual void | CalculateFirstDerivativesLHS (MatrixType &rLeftHandSideMatrix, const ProcessInfo &rCurrentProcessInfo) |
virtual void | CalculateFirstDerivativesRHS (VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo) |
virtual void | CalculateSecondDerivativesContributions (MatrixType &rLeftHandSideMatrix, VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo) |
virtual void | CalculateSecondDerivativesLHS (MatrixType &rLeftHandSideMatrix, const ProcessInfo &rCurrentProcessInfo) |
virtual void | CalculateSecondDerivativesRHS (VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo) |
virtual void | CalculateDampingMatrix (MatrixType &rDampingMatrix, const ProcessInfo &rCurrentProcessInfo) |
virtual void | CalculateLumpedMassVector (VectorType &rLumpedMassVector, const ProcessInfo &rCurrentProcessInfo) const |
virtual void | AddExplicitContribution (const ProcessInfo &rCurrentProcessInfo) |
virtual void | AddExplicitContribution (const VectorType &rRHSVector, const Variable< VectorType > &rRHSVariable, const Variable< double > &rDestinationVariable, const ProcessInfo &rCurrentProcessInfo) |
This function is designed to make the element to assemble an rRHS vector identified by a variable rRHSVariable by assembling it to the nodes on the variable rDestinationVariable. (This is the double version) More... | |
virtual void | AddExplicitContribution (const VectorType &rRHSVector, const Variable< VectorType > &rRHSVariable, const Variable< array_1d< double, 3 > > &rDestinationVariable, const ProcessInfo &rCurrentProcessInfo) |
This function is designed to make the element to assemble an rRHS vector identified by a variable rRHSVariable by assembling it to the nodes on the variable rDestinationVariable. (This is the vector version) More... | |
virtual void | AddExplicitContribution (const MatrixType &rLHSMatrix, const Variable< MatrixType > &rLHSVariable, const Variable< Matrix > &rDestinationVariable, const ProcessInfo &rCurrentProcessInfo) |
This function is designed to make the element to assemble an rRHS vector identified by a variable rRHSVariable by assembling it to the nodes on the variable rDestinationVariable. (This is the matrix version) More... | |
virtual void | Calculate (const Variable< Vector > &rVariable, Vector &Output, const ProcessInfo &rCurrentProcessInfo) |
virtual void | Calculate (const Variable< Matrix > &rVariable, Matrix &Output, const ProcessInfo &rCurrentProcessInfo) |
virtual void | CalculateOnIntegrationPoints (const Variable< bool > &rVariable, std::vector< bool > &rOutput, const ProcessInfo &rCurrentProcessInfo) |
virtual void | CalculateOnIntegrationPoints (const Variable< int > &rVariable, std::vector< int > &rOutput, const ProcessInfo &rCurrentProcessInfo) |
virtual void | CalculateOnIntegrationPoints (const Variable< array_1d< double, 3 >> &rVariable, std::vector< array_1d< double, 3 >> &rOutput, const ProcessInfo &rCurrentProcessInfo) |
virtual void | CalculateOnIntegrationPoints (const Variable< array_1d< double, 4 >> &rVariable, std::vector< array_1d< double, 4 >> &rOutput, const ProcessInfo &rCurrentProcessInfo) |
virtual void | CalculateOnIntegrationPoints (const Variable< array_1d< double, 6 >> &rVariable, std::vector< array_1d< double, 6 >> &rOutput, const ProcessInfo &rCurrentProcessInfo) |
virtual void | CalculateOnIntegrationPoints (const Variable< array_1d< double, 9 >> &rVariable, std::vector< array_1d< double, 9 >> &rOutput, const ProcessInfo &rCurrentProcessInfo) |
virtual void | CalculateOnIntegrationPoints (const Variable< ConstitutiveLaw::Pointer > &rVariable, std::vector< ConstitutiveLaw::Pointer > &rOutput, const ProcessInfo &rCurrentProcessInfo) |
virtual void | SetValuesOnIntegrationPoints (const Variable< bool > &rVariable, const std::vector< bool > &rValues, const ProcessInfo &rCurrentProcessInfo) |
virtual void | SetValuesOnIntegrationPoints (const Variable< int > &rVariable, const std::vector< int > &rValues, const ProcessInfo &rCurrentProcessInfo) |
virtual void | SetValuesOnIntegrationPoints (const Variable< double > &rVariable, const std::vector< double > &rValues, const ProcessInfo &rCurrentProcessInfo) |
virtual void | SetValuesOnIntegrationPoints (const Variable< array_1d< double, 3 >> &rVariable, const std::vector< array_1d< double, 3 >> &rValues, const ProcessInfo &rCurrentProcessInfo) |
virtual void | SetValuesOnIntegrationPoints (const Variable< array_1d< double, 4 >> &rVariable, const std::vector< array_1d< double, 4 >> &rValues, const ProcessInfo &rCurrentProcessInfo) |
virtual void | SetValuesOnIntegrationPoints (const Variable< array_1d< double, 6 >> &rVariable, const std::vector< array_1d< double, 6 >> &rValues, const ProcessInfo &rCurrentProcessInfo) |
virtual void | SetValuesOnIntegrationPoints (const Variable< array_1d< double, 9 >> &rVariable, const std::vector< array_1d< double, 9 >> &rValues, const ProcessInfo &rCurrentProcessInfo) |
virtual void | SetValuesOnIntegrationPoints (const Variable< Vector > &rVariable, const std::vector< Vector > &rValues, const ProcessInfo &rCurrentProcessInfo) |
virtual void | SetValuesOnIntegrationPoints (const Variable< Matrix > &rVariable, const std::vector< Matrix > &rValues, const ProcessInfo &rCurrentProcessInfo) |
virtual void | SetValuesOnIntegrationPoints (const Variable< ConstitutiveLaw::Pointer > &rVariable, const std::vector< ConstitutiveLaw::Pointer > &rValues, const ProcessInfo &rCurrentProcessInfo) |
virtual void | MassMatrix (MatrixType &rMassMatrix, const ProcessInfo &rCurrentProcessInfo) |
virtual void | AddMassMatrix (MatrixType &rLeftHandSideMatrix, double coeff, const ProcessInfo &rCurrentProcessInfo) |
virtual void | DampMatrix (MatrixType &rDampMatrix, const ProcessInfo &rCurrentProcessInfo) |
virtual void | AddInertiaForces (VectorType &rRightHandSideVector, double coeff, const ProcessInfo &rCurrentProcessInfo) |
virtual void | CalculateSensitivityMatrix (const Variable< double > &rDesignVariable, Matrix &rOutput, const ProcessInfo &rCurrentProcessInfo) |
virtual void | CalculateSensitivityMatrix (const Variable< array_1d< double, 3 > > &rDesignVariable, Matrix &rOutput, const ProcessInfo &rCurrentProcessInfo) |
PropertiesType::Pointer | pGetProperties () |
returns the pointer to the property of the element. Does not throw an error, to allow copying of elements which don't have any property assigned. More... | |
const PropertiesType::Pointer | pGetProperties () const |
PropertiesType & | GetProperties () |
PropertiesType const & | GetProperties () const |
void | SetProperties (PropertiesType::Pointer pProperties) |
bool | HasProperties () const |
Check that the Element has a correctly initialized pointer to a Properties instance. More... | |
virtual const Parameters | GetSpecifications () const |
This method provides the specifications/requirements of the element. More... | |
void | PrintData (std::ostream &rOStream) const override |
Print object's data. More... | |
KRATOS_CLASS_INTRUSIVE_POINTER_DEFINITION (Element) | |
Public Member Functions inherited from Kratos::GeometricalObject | |
GeometricalObject (IndexType NewId=0) | |
Default constructor. More... | |
GeometricalObject (IndexType NewId, GeometryType::Pointer pGeometry) | |
Default constructor. More... | |
~GeometricalObject () override | |
Destructor. More... | |
GeometricalObject (GeometricalObject const &rOther) | |
Copy constructor. More... | |
GeometricalObject & | operator= (GeometricalObject const &rOther) |
Assignment operator. More... | |
virtual void | SetGeometry (GeometryType::Pointer pGeometry) |
Sets the pointer to the geometry. More... | |
GeometryType::Pointer | pGetGeometry () |
Returns the pointer to the geometry. More... | |
const GeometryType::Pointer | pGetGeometry () const |
Returns the pointer to the geometry (const version) More... | |
GeometryType & | GetGeometry () |
Returns the reference of the geometry. More... | |
GeometryType const & | GetGeometry () const |
Returns the reference of the geometry (const version) More... | |
Flags & | GetFlags () |
Returns the flags of the object. More... | |
Flags const & | GetFlags () const |
Returns the flags of the object (const version) More... | |
void | SetFlags (Flags const &rThisFlags) |
Sets the flags of the object. More... | |
DataValueContainer & | Data () |
DataValueContainer & | GetData () |
DataValueContainer const & | GetData () const |
void | SetData (DataValueContainer const &rThisData) |
template<class TDataType > | |
bool | Has (const Variable< TDataType > &rThisVariable) const |
template<class TVariableType > | |
void | SetValue (const TVariableType &rThisVariable, typename TVariableType::Type const &rValue) |
template<class TVariableType > | |
TVariableType::Type & | GetValue (const TVariableType &rThisVariable) |
template<class TVariableType > | |
TVariableType::Type const & | GetValue (const TVariableType &rThisVariable) const |
void | PrintData (std::ostream &rOStream) const override |
Print object's data. More... | |
unsigned int | use_count () const noexcept |
KRATOS_CLASS_INTRUSIVE_POINTER_DEFINITION (GeometricalObject) | |
Pointer definition of GeometricalObject. More... | |
bool | IsActive () const |
Checks if the GeometricalObject is active. More... | |
Public Member Functions inherited from Kratos::IndexedObject | |
IndexedObject (IndexType NewId=0) | |
Default constructor. More... | |
virtual | ~IndexedObject () |
Destructor. More... | |
IndexedObject (IndexedObject const &rOther) | |
Copy constructor. More... | |
IndexedObject & | operator= (IndexedObject const &rOther) |
Assignment operator. More... | |
template<class TObjectType > | |
IndexType | operator() (TObjectType const &rThisObject) const |
IndexType | Id () const |
IndexType | GetId () const |
virtual void | SetId (IndexType NewId) |
IndexType & | DepricatedIdAccess () |
TODO: remove this function when removing data_file_io object. More... | |
KRATOS_CLASS_POINTER_DEFINITION (IndexedObject) | |
Pointer definition of IndexedObject. More... | |
Public Member Functions inherited from Kratos::Flags | |
Flags & | operator= (Flags const &rOther) |
Assignment operator. More... | |
operator bool () const | |
Flags | operator~ () const |
bool | operator! () const |
void | AssignFlags (Flags const &rOther) |
void | Set (const Flags ThisFlag) |
void | Set (const Flags ThisFlag, bool Value) |
void | Reset (const Flags ThisFlag) |
void | Flip (const Flags ThisFlag) |
void | SetPosition (IndexType Position, bool Value=true) |
bool | GetPosition (IndexType Position) const |
void | FlipPosition (IndexType Position) |
void | ClearPosition (IndexType Position) |
void | Clear () |
Flags | AsFalse () const |
bool | Is (Flags const &rOther) const |
bool | IsDefined (Flags const &rOther) const |
bool | IsNot (Flags const &rOther) const |
bool | IsNotDefined (Flags const &rOther) const |
KRATOS_CLASS_POINTER_DEFINITION (Flags) | |
Pointer definition of Flags. More... | |
const Flags & | operator|= (const Flags &Other) |
const Flags & | operator&= (const Flags &Other) |
Flags () | |
Default constructor. More... | |
Flags (Flags const &rOther) | |
Copy constructor. More... | |
virtual | ~Flags () |
Destructor. More... | |
Protected Member Functions | |
Protected static Member Variables | |
void | CalculateWeights (ShapeFunctionDerivativesArrayType &rDN_DX, Matrix &rNContainer, Vector &rGaussWeights) |
Determine integration point weights and shape funcition derivatives from the element's geometry. More... | |
Protected Operations | |
virtual void | CalculateTau (double &TauOne, double &TauTwo, const array_1d< double, 3 > &rAdvVel, const double Area, const double Density, const double KinViscosity, const ProcessInfo &rCurrentProcessInfo) |
Calculate Stabilization parameters. More... | |
virtual void | CalculateStaticTau (double &TauOne, const array_1d< double, 3 > &rAdvVel, const double Area, const double Density, const double KinViscosity) |
Calculate momentum stabilization parameter (without time term). More... | |
virtual void | AddMomentumRHS (VectorType &F, const double Density, const array_1d< double, TNumNodes > &rShapeFunc, const double Weight) |
Add the momentum equation contribution to the RHS (body forces) More... | |
virtual void | AddOtherContributionsRHS (VectorType &F, const array_1d< double, TNumNodes > &rShapeFunc, const std::vector< double > &TimeSchemeWeights, const double &DeltaTime) |
virtual void | AddProjectionToRHS (VectorType &RHS, const array_1d< double, 3 > &rAdvVel, const double Density, const double TauOne, const double TauTwo, const array_1d< double, TNumNodes > &rShapeFunc, const BoundedMatrix< double, TNumNodes, TDim > &rShapeDeriv, const double Weight, const double DeltaTime=1.0) |
Add OSS projection terms to the RHS. More... | |
void | CalculateLumpedMassMatrix (MatrixType &rLHSMatrix, const double Mass) |
Add lumped mass matrix. More... | |
void | AddConsistentMassMatrixContribution (MatrixType &rLHSMatrix, const array_1d< double, TNumNodes > &rShapeFunc, const double Density, const double Weight) |
void | AddMassStabTerms (MatrixType &rLHSMatrix, const double Density, const array_1d< double, 3 > &rAdvVel, const double TauOne, const array_1d< double, TNumNodes > &rShapeFunc, const BoundedMatrix< double, TNumNodes, TDim > &rShapeDeriv, const double Weight) |
Add mass-like stabilization terms to LHS. More... | |
void | AddIntegrationPointVelocityContribution (MatrixType &rDampingMatrix, VectorType &rDampRHS, const double Density, const double Viscosity, const array_1d< double, 3 > &rAdvVel, const double TauOne, const double TauTwo, const array_1d< double, TNumNodes > &rShapeFunc, const BoundedMatrix< double, TNumNodes, TDim > &rShapeDeriv, const double Weight) |
Add a the contribution from a single integration point to the velocity contribution. More... | |
void | AddProjectionResidualContribution (const array_1d< double, 3 > &rAdvVel, const double Density, array_1d< double, 3 > &rElementalMomRes, double &rElementalMassRes, const array_1d< double, TNumNodes > &rShapeFunc, const BoundedMatrix< double, TNumNodes, TDim > &rShapeDeriv, const double Weight) |
Assemble the contribution from an integration point to the element's residual. More... | |
void | ASGSMomResidual (const array_1d< double, 3 > &rAdvVel, const double Density, array_1d< double, 3 > &rElementalMomRes, const array_1d< double, TNumNodes > &rShapeFunc, const BoundedMatrix< double, TNumNodes, TDim > &rShapeDeriv, const double Weight) |
Assemble the contribution from an integration point to the element's residual. More... | |
void | OSSMomResidual (const array_1d< double, 3 > &rAdvVel, const double Density, array_1d< double, 3 > &rElementalMomRes, const array_1d< double, TNumNodes > &rShapeFunc, const BoundedMatrix< double, TNumNodes, TDim > &rShapeDeriv, const double Weight) |
Assemble the contribution from an integration point to the element's residual. More... | |
virtual void | GetEffectiveViscosity (const double Density, const double MolecularViscosity, const array_1d< double, TNumNodes > &rShapeFunc, const BoundedMatrix< double, TNumNodes, TDim > &rShapeDeriv, double &TotalViscosity, const ProcessInfo &rCurrentProcessInfo) |
Add the contribution from Smagorinsky model to the (kinematic) viscosity. More... | |
virtual void | GetAdvectiveVel (array_1d< double, 3 > &rAdvVel, const array_1d< double, TNumNodes > &rShapeFunc) |
Write the advective velocity evaluated at this point to an array. More... | |
virtual void | GetAdvectiveVel (array_1d< double, 3 > &rAdvVel, const array_1d< double, TNumNodes > &rShapeFunc, const std::size_t Step) |
Write the advective velocity evaluated at this point to an array. More... | |
void | GetConvectionOperator (array_1d< double, TNumNodes > &rResult, const array_1d< double, 3 > &rVelocity, const BoundedMatrix< double, TNumNodes, TDim > &rShapeDeriv) |
Write the convective operator evaluated at this point (for each nodal funciton) to an array. More... | |
virtual void | AddPointContribution (double &rResult, const Variable< double > &rVariable, const array_1d< double, TNumNodes > &rShapeFunc, const double Weight=1.0) |
Add the weighted value of a variable at a point inside the element to a double. More... | |
virtual void | EvaluateInPoint (double &rResult, const Variable< double > &rVariable, const array_1d< double, TNumNodes > &rShapeFunc) |
Write the value of a variable at a point inside the element to a double. More... | |
virtual void | EvaluateGradientOfScalarInPoint (array_1d< double, 3 > &rResult, const Variable< double > &rVariable, const BoundedMatrix< double, TNumNodes, TDim > &rShapeDeriv) |
virtual void | EvaluateTimeDerivativeInPoint (double &rResult, const Variable< double > &rVariable, const array_1d< double, TNumNodes > &rShapeFunc, const double &DeltaTime, const std::vector< double > &rSchemeWeigths) |
virtual void | AddPointContribution (array_1d< double, 3 > &rResult, const Variable< array_1d< double, 3 > > &rVariable, const array_1d< double, TNumNodes > &rShapeFunc, const double Weight=1.0) |
Add the weighted value of a variable at a point inside the element to a vector. More... | |
virtual void | EvaluateInPoint (array_1d< double, 3 > &rResult, const Variable< array_1d< double, 3 > > &rVariable, const array_1d< double, TNumNodes > &rShapeFunc) |
Write the value of a variable at a point inside the element to a double. More... | |
double | ElementSize (const double) |
Return an estimate for the element size h, used to calculate the stabilization parameters. More... | |
double | FilterWidth () |
Return the filter width for the smagorinsky model (Delta squared) More... | |
double | FilterWidth (const BoundedMatrix< double, TNumNodes, TDim > &DN_DX) |
Return the filter width for the smagorinsky model (Delta squared) More... | |
double | SymmetricGradientNorm (const BoundedMatrix< double, TNumNodes, TDim > &rShapeDeriv) |
Compute the norm of the symmetric gradient of velocity. More... | |
virtual void | AddViscousTerm (MatrixType &rDampingMatrix, const BoundedMatrix< double, TNumNodes, TDim > &rShapeDeriv, const double Weight) |
Adds the contribution of the viscous term to the momentum equation. More... | |
void | AddBTransCB (MatrixType &rDampingMatrix, const BoundedMatrix< double, TNumNodes, TDim > &rShapeDeriv, const double Weight) |
Adds the contribution of the viscous term to the momentum equation (alternate). More... | |
void | ModulatedGradientDiffusion (MatrixType &rDampingMatrix, const BoundedMatrix< double, TNumNodes, TDim > &rDN_DX, const double Weight) |
void | CalculateB (BoundedMatrix< double,(TDim *TNumNodes)/2, TDim *TNumNodes > &rB, const BoundedMatrix< double, TNumNodes, TDim > &rShapeDeriv) |
Calculate the strain rate matrix. More... | |
virtual void | CalculateC (BoundedMatrix< double,(TDim *TNumNodes)/2,(TDim *TNumNodes)/2 > &rC, const double Viscosity) |
Calculate a matrix that provides the stress given the strain rate. More... | |
double | ConsistentMassCoef (const double Area) |
Type Definitions | |
typedef IndexedObject | BaseType |
base type: an IndexedObject that automatically has a unique number More... | |
typedef Node | NodeType |
definition of node type (default is: Node) More... | |
typedef Properties | PropertiesType |
typedef Geometry< NodeType > | GeometryType |
definition of the geometry type with given NodeType More... | |
typedef Geometry< NodeType >::PointsArrayType | NodesArrayType |
definition of nodes container type, redefined from GeometryType More... | |
typedef Vector | VectorType |
typedef Matrix | MatrixType |
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 GeometryType::ShapeFunctionsGradientsType | ShapeFunctionDerivativesArrayType |
Type for an array of shape function gradient matrices. More... | |
KRATOS_CLASS_INTRUSIVE_POINTER_DEFINITION (MonolithicDEMCoupledWeak) | |
Pointer definition of MonolithicDEMCoupledWeak. More... | |
Serialization | |
class | Serializer |
Specialized implementation of MonolithicDEMCoupledWeak for functions that depend on TDim | |
void | EquationIdVector (EquationIdVectorType &rResult, const ProcessInfo &rCurrentProcessInfo) const |
void | EquationIdVector (EquationIdVectorType &rResult, const ProcessInfo &rCurrentProcessInfo) const |
void | GetDofList (DofsVectorType &rElementalDofList, const ProcessInfo &rCurrentProcessInfo) const |
void | GetDofList (DofsVectorType &rElementalDofList, const ProcessInfo &rCurrentProcessInfo) const |
void | GetFirstDerivativesVector (Vector &Values, int Step) const |
void | GetFirstDerivativesVector (Vector &Values, int Step) const |
void | GetSecondDerivativesVector (Vector &Values, int Step) const |
void | GetSecondDerivativesVector (Vector &Values, int Step) const |
void | CalculateOnIntegrationPoints (const Variable< array_1d< double, 3 > > &rVariable, std::vector< array_1d< double, 3 > > &rOutput, const ProcessInfo &rCurrentProcessInfo) |
void | CalculateOnIntegrationPoints (const Variable< array_1d< double, 3 > > &rVariable, std::vector< array_1d< double, 3 > > &rOutput, const ProcessInfo &rCurrentProcessInfo) |
void | CalculateWeights (ShapeFunctionDerivativesArrayType &rDN_DX, Matrix &rNContainer, Vector &rGaussWeights) |
void | CalculateWeights (ShapeFunctionDerivativesArrayType &rDN_DX, Matrix &rNContainer, Vector &rGaussWeights) |
double | ElementSize (const double Area) |
double | ElementSize (const double Volume) |
double | FilterWidth () |
double | FilterWidth () |
double | FilterWidth (const BoundedMatrix< double, 3, 2 > &DN_DX) |
double | FilterWidth (const BoundedMatrix< double, 4, 3 > &DN_DX) |
void | CalculateB (BoundedMatrix< double, 3, 6 > &rB, const BoundedMatrix< double, 3, 2 > &rShapeDeriv) |
void | CalculateB (BoundedMatrix< double, 6, 12 > &rB, const BoundedMatrix< double, 4, 3 > &rShapeDeriv) |
void | CalculateC (BoundedMatrix< double, 3, 3 > &rC, const double Viscosity) |
void | CalculateC (BoundedMatrix< double, 6, 6 > &rC, const double Viscosity) |
void | AddViscousTerm (MatrixType &rDampMatrix, const BoundedMatrix< double, 3, 2 > &rShapeDeriv, const double Weight) |
void | AddViscousTerm (MatrixType &rDampMatrix, const BoundedMatrix< double, 4, 3 > &rShapeDeriv, const double Weight) |
double | ConsistentMassCoef (const double Area) |
double | ConsistentMassCoef (const double Volume) |
Additional Inherited Members | |
Public Types inherited from Kratos::Element | |
typedef Element | ElementType |
definition of element type More... | |
typedef GeometricalObject | BaseType |
base type: an GeometricalObject that automatically has a unique number More... | |
typedef Node | NodeType |
definition of node type (default is: Node) More... | |
typedef Properties | PropertiesType |
typedef Geometry< NodeType > | GeometryType |
definition of the geometry type with given NodeType More... | |
typedef Geometry< NodeType >::PointsArrayType | NodesArrayType |
definition of nodes container type, redefined from GeometryType More... | |
typedef Vector | VectorType |
typedef Matrix | MatrixType |
typedef std::size_t | IndexType |
typedef std::size_t | SizeType |
typedef Dof< double > | DofType |
typedef std::vector< std::size_t > | EquationIdVectorType |
typedef std::vector< DofType::Pointer > | DofsVectorType |
typedef PointerVectorSet< DofType > | DofsArrayType |
typedef GeometryData::IntegrationMethod | IntegrationMethod |
Type definition for integration methods. More... | |
typedef GeometryData | GeometryDataType |
Public Types inherited from Kratos::GeometricalObject | |
typedef Node | NodeType |
Definition of the node type. More... | |
typedef Geometry< NodeType > | GeometryType |
The geometry type definition. More... | |
typedef std::size_t | IndexType |
Defines the index type. More... | |
typedef std::size_t | result_type |
Defines the result type. More... | |
Public Types inherited from Kratos::IndexedObject | |
typedef std::size_t | IndexType |
The definition of the index type. More... | |
typedef std::size_t | result_type |
The definition of the result_type. More... | |
Public Types inherited from Kratos::Flags | |
enum | FlagsList { Flag0 = BlockType(1) , Flag1 = BlockType(1) << 1 , Flag2 = BlockType(1) << 2 , Flag3 = BlockType(1) << 3 , Flag4 = BlockType(1) << 4 , Flag5 = BlockType(1) << 5 , Flag6 = BlockType(1) << 6 , Flag7 = BlockType(1) << 7 , Flag8 = BlockType(1) << 8 , Flag9 = BlockType(1) << 9 , Flag10 = BlockType(1) << 10 , Flag11 = BlockType(1) << 11 , Flag12 = BlockType(1) << 12 , Flag13 = BlockType(1) << 13 , Flag14 = BlockType(1) << 14 , Flag15 = BlockType(1) << 15 , Flag16 = BlockType(1) << 16 , Flag17 = BlockType(1) << 17 , Flag18 = BlockType(1) << 18 , Flag19 = BlockType(1) << 19 , Flag20 = BlockType(1) << 20 , Flag21 = BlockType(1) << 21 , Flag22 = BlockType(1) << 22 , Flag23 = BlockType(1) << 23 , Flag24 = BlockType(1) << 24 , Flag25 = BlockType(1) << 25 , Flag26 = BlockType(1) << 26 , Flag27 = BlockType(1) << 27 , Flag28 = BlockType(1) << 28 , Flag29 = BlockType(1) << 29 , Flag30 = BlockType(1) << 30 } |
typedef int64_t | BlockType |
typedef int64_t | FlagType |
typedef std::size_t | IndexType |
Static Public Member Functions inherited from Kratos::GeometricalObject | |
static bool | HasSameType (const GeometricalObject &rLHS, const GeometricalObject &rRHS) |
Checks if two GeometricalObject have the same type. More... | |
static bool | HasSameType (const GeometricalObject *rLHS, const GeometricalObject *rRHS) |
Checks if two GeometricalObject have the same type (pointer version) More... | |
static bool | HasSameGeometryType (const GeometricalObject &rLHS, const GeometricalObject &rRHS) |
Checks if two GeometricalObject have the same geometry type. More... | |
static bool | HasSameGeometryType (const GeometricalObject *rLHS, const GeometricalObject *rRHS) |
Checks if two GeometricalObject have the same geometry type (pointer version) More... | |
static bool | IsSame (const GeometricalObject &rLHS, const GeometricalObject &rRHS) |
Checks if two GeometricalObject are the same. More... | |
static bool | IsSame (const GeometricalObject *rLHS, const GeometricalObject *rRHS) |
Checks if two GeometricalObject are the same (pointer version) More... | |
Static Public Member Functions inherited from Kratos::Flags | |
static const Flags | AllDefined () |
static const Flags | AllTrue () |
static Flags | Create (IndexType ThisPosition, bool Value=true) |
A stabilized element for the incompressible Navier-Stokes equations.
This class implements a stabilized formulation based on the Variational Multiscale framework. The the subscales can be modeled using either Algebraic Subgird Scales (ASGS) or Orthogonal Subscales (OSS). In the case of OSS, the projection terms are treated explicitly (computed using the results of the previous iteration) and the subscales are not tracked in time. The choice of subscale model is made based on the ProcessInfo variable OSS_SWITCH (OSS if 1, ASGS otherwise). This class implements both the 2D and 3D versions of the element.
The ASGS implementation follows Ramon Codina, A stabilized finite element method for generalized stationary incompressible flows, Computer Methods in Applied Mechanics and Engineering. Vol. 190 (2001), 2681-2706.
The OSS implementation corresponds to the case identified as explicit, quasi- static orthogonal subscales in Ramon Codina, Stabilized finite element approximation of transient incompressible flows using orthogonal subscales, Computer Methods in Applied Mechanics and Engineering. Vol. 191 (2002), 4295-4321.
In addition to the stabilization, this element implements the Smagorinsky model of turbulence. This turbulent term is only activated if the elemental value C_SMAGORINSKY is set to something other than zero.
This class requires at least the following variables:
On each Node, as solution step variables VELOCITY, PRESSURE, ACCELERATION, MESH_VELOCITY, DENSITY, VISCOSITY.
On ProcessInfo OSS_SWITCH, DYNAMIC_TAU, DELTA_TIME.
If OSS is used, the nodes also require NODAL_AREA, ADVPROJ and DIVPROJ as solution step variables.
If Smagorinsky is used, C_SMAGORINSKY has to be defined on the elements.
Error estimation stores ERROR_RATIO on the elements.
Some additional variables can be used to print results on the element: SUBSCALE_VELOCITY, SUBSCALE_PRESSURE, TAUONE, TAUTWO, MU, VORTICITY.
typedef IndexedObject Kratos::MonolithicDEMCoupledWeak< TDim, TNumNodes >::BaseType |
base type: an IndexedObject that automatically has a unique number
typedef PointerVectorSet<Dof<double>, IndexedObject> Kratos::MonolithicDEMCoupledWeak< TDim, TNumNodes >::DofsArrayType |
typedef std::vector< Dof<double>::Pointer > Kratos::MonolithicDEMCoupledWeak< TDim, TNumNodes >::DofsVectorType |
typedef std::vector<std::size_t> Kratos::MonolithicDEMCoupledWeak< TDim, TNumNodes >::EquationIdVectorType |
typedef Geometry<NodeType> Kratos::MonolithicDEMCoupledWeak< TDim, TNumNodes >::GeometryType |
definition of the geometry type with given NodeType
typedef std::size_t Kratos::MonolithicDEMCoupledWeak< TDim, TNumNodes >::IndexType |
typedef Matrix Kratos::MonolithicDEMCoupledWeak< TDim, TNumNodes >::MatrixType |
typedef Geometry<NodeType>::PointsArrayType Kratos::MonolithicDEMCoupledWeak< TDim, TNumNodes >::NodesArrayType |
definition of nodes container type, redefined from GeometryType
typedef Node Kratos::MonolithicDEMCoupledWeak< TDim, TNumNodes >::NodeType |
definition of node type (default is: Node)
typedef Properties Kratos::MonolithicDEMCoupledWeak< TDim, TNumNodes >::PropertiesType |
Properties are used to store any parameters related to the constitutive law
typedef GeometryType::ShapeFunctionsGradientsType Kratos::MonolithicDEMCoupledWeak< TDim, TNumNodes >::ShapeFunctionDerivativesArrayType |
Type for an array of shape function gradient matrices.
typedef Kratos::Matrix Kratos::MonolithicDEMCoupledWeak< TDim, TNumNodes >::ShapeFunctionDerivativesType |
Type for a matrix containing the shape function gradients.
typedef Kratos::Vector Kratos::MonolithicDEMCoupledWeak< TDim, TNumNodes >::ShapeFunctionsType |
Type for shape function values container.
typedef std::size_t Kratos::MonolithicDEMCoupledWeak< TDim, TNumNodes >::SizeType |
typedef Vector Kratos::MonolithicDEMCoupledWeak< TDim, TNumNodes >::VectorType |
|
inline |
Default constuctor.
NewId | Index number of the new element (optional) |
|
inline |
Constructor using an array of nodes.
NewId | Index of the new element |
ThisNodes | An array containing the nodes of the new element |
|
inline |
Constructor using a geometry object.
NewId | Index of the new element |
pGeometry | Pointer to a geometry object |
|
inline |
Constuctor using geometry and properties.
NewId | Index of the new element |
pGeometry | Pointer to a geometry object |
pProperties | Pointer to the element's properties |
|
inlinevirtual |
Destructor.
|
inlineprotected |
Adds the contribution of the viscous term to the momentum equation (alternate).
This function is an alternate implementation of MonolithicDEMCoupledWeak::AddViscousTerm. This version works with ublas matrices, using the relationship between stress and rate of strain given by MonolithicDEMCoupledWeak::CalculateC. It is currently unused (as MonolithicDEMCoupledWeak::AddViscousTerm is a more efficient implementation of the Cauchy equation) but it is left here so derived classes can use it to implement other constitutive equations.
rDampingMatrix | Elemental Damping matrix |
rShapeDeriv | Elemental shape function derivatives |
Weight | Effective viscosity, in dynamic units, weighted by the integration point area |
|
inlineprotected |
|
inlineprotected |
Add a the contribution from a single integration point to the velocity contribution.
|
inlineprotected |
Add mass-like stabilization terms to LHS.
This function is only used in ASGS. For OSS, we avoid computing these terms, as they shoud cancel out with the dynamic part of the projection (which is not computed either)
rLHSMatrix | Left hand side of the velocity-pressure system |
Density | Density on integration point |
rAdvVel | Advective velocity on integration point |
TauOne | Stabilization parameter for momentum equation |
rShapeFunc | Shape funcitions evaluated on integration point |
rShapeDeriv | Shape function derivatives evaluated on integration point |
Weight | Area (or volume) times integration point weight |
|
inlineprotectedvirtual |
Add the momentum equation contribution to the RHS (body forces)
|
inlineprotectedvirtual |
|
inlineprotectedvirtual |
Add the weighted value of a variable at a point inside the element to a vector.
Evaluate a vector variable in the point where the form functions take the values given by rShapeFunc and add the result, weighted by Weight, to rResult. This is an auxiliary function used to compute values in integration points.
rResult | The vector where the value will be added to |
rVariable | The nodal variable to be read |
rShapeFunc | The values of the form functions in the point |
Weight | The variable will be weighted by this value before it is added to rResult |
|
inlineprotectedvirtual |
Add the weighted value of a variable at a point inside the element to a double.
Evaluate a scalar variable in the point where the form functions take the values given by rShapeFunc and add the result, weighted by Weight, to rResult. This is an auxiliary function used to compute values in integration points.
rResult | The double where the value will be added to |
rVariable | The nodal variable to be read |
rShapeFunc | The values of the form functions in the point |
Step | The time Step (Defaults to 0 = Current) |
Weight | The variable will be weighted by this value before it is added to rResult |
|
inlineprotected |
Assemble the contribution from an integration point to the element's residual.
Note that the dynamic term is not included in the momentum equation. If OSS_SWITCH = 1, we don't take into account the 'dynamic' stabilization terms, as it they belong to the finite element space.
|
inlineprotectedvirtual |
Add OSS projection terms to the RHS.
|
protectedvirtual |
Adds the contribution of the viscous term to the momentum equation.
The viscous term is written in stress-divergence (Cauchy) form.
rDampingMatrix | Elemental Damping matrix |
rShapeDeriv | Elemental shape function derivatives |
Weight | Effective viscosity, in dynamic units, weighted by the integration point area |
|
protected |
|
protected |
|
inlineprotected |
Assemble the contribution from an integration point to the element's residual.
ASGS version. Note that rElementalMomRes should be initialized before calling this.
rAdvVel | Convection velocity (not including subscale) |
Density | Fluid density evaluated at integration point |
rElementalMomRes | Result |
rShapeFunc | Shape functions evaluated at integration point |
rShapeDeriv | Shape function derivatives evaluated at integration point |
Weight | Integration point weight (as a fraction of area or volume) |
|
inlineoverridevirtual |
Implementation of Calculate to compute the local OSS projections.
If rVariable == ADVPROJ, This function computes the OSS projection terms using pressure and velocity values from the previous iteration. The projections are then added to the nodal variables ADVPROJ (Momentum residual) and DIVPROJ (Mass continuity residual). It is assumed that the scheme will divide the result by the assembled NODAL_AREA, which is equivalent to a nodal interpolation using a lumped mass matrix.
rVariable | Use ADVPROJ |
Output | Will be overwritten with the elemental momentum error |
rCurrentProcessInfo | Process info instance (unused) |
Return output
Return output
Reimplemented from Kratos::Element.
|
inlineoverridevirtual |
Implementation of Calculate to compute an error estimate.
If rVariable == ERROR_RATIO, this function will provide an a posteriori estimate of the norm of the subscale velocity, calculated as TauOne*||MomentumResidual||. Note that the residual of the momentum equation is evaluated at the element center and that the result has units of velocity (L/T). The error estimate both saved as the elemental ERROR_RATIO variable and returned as rOutput. If rVARIABLE == NODAL_AREA, the element's contribution to nodal area is added to its nodes.
rVariable | Use ERROR_RATIO or NODAL_AREA |
rOutput | Returns the error estimate for ERROR_RATIO, unused for NODAL_AREA |
rCurrentProcessInfo | Process info instance (will be checked for OSS_SWITCH) |
Reimplemented from Kratos::Element.
|
protected |
|
protected |
|
protected |
Calculate the strain rate matrix.
Unused, left to support derived classes.
rB | Strain rate matrix |
rShapeDeriv | Nodal shape funcion derivatives |
|
protected |
|
protected |
|
protectedvirtual |
Calculate a matrix that provides the stress given the strain rate.
Unused, left to support derived classes.
rC | Matrix representation of the stress tensor (output) |
Viscosity | Effective viscosity, in dynamic units, weighted by the integration point area |
|
inlineoverridevirtual |
Returns a zero matrix of appropiate size (provided for compatibility with scheme)
rLeftHandSideMatrix | Local matrix, will be filled with zeros |
rCurrentProcessInfo | Process info instance |
Reimplemented from Kratos::Element.
|
inlineoverridevirtual |
Provides local contributions from body forces and OSS projection terms.
This is called during the assembly process and provides the terms of the system that are either constant or computed explicitly (from the 'old' iteration variables). In this case this means the body force terms and the OSS projections, that are treated explicitly.
rLeftHandSideMatrix | the elemental left hand side matrix. Not used here, required for compatibility purposes only. |
rRightHandSideVector | the elemental right hand side |
rCurrentProcessInfo | the current process info |
Reimplemented from Kratos::Element.
|
inlineoverridevirtual |
Computes the local contribution associated to 'new' velocity and pressure values.
Provides local contributions to the system associated to the velocity and pressure terms (convection, diffusion, pressure gradient/velocity divergence and stabilization).
rDampingMatrix | Will be filled with the velocity-proportional "damping" matrix |
rRightHandSideVector | the elemental right hand side vector |
rCurrentProcessInfo | the current process info instance |
Reimplemented from Kratos::Element.
|
inlineprotected |
Add lumped mass matrix.
Adds the lumped mass matrix to an elemental LHS matrix. Note that the time factor (typically 1/(k*Dt) ) is added by the scheme outside the element.
rLHSMatrix | The local matrix where the result will be added |
Mass | The weight assigned to each node (typically Density * Area / NumNodes or Density*Volume / NumNodes) |
|
inlineoverridevirtual |
Computes local contributions to the mass matrix.
Provides the local contributions to the mass matrix, which is defined here as the matrix associated to velocity derivatives. Note that the mass matrix implemented here is lumped.
rMassMatrix | Will be filled with the elemental mass matrix |
rCurrentProcessInfo | the current process info instance |
Reimplemented from Kratos::Element.
void Kratos::MonolithicDEMCoupledWeak< 2 >::CalculateOnIntegrationPoints | ( | const Variable< array_1d< double, 3 > > & | rVariable, |
std::vector< array_1d< double, 3 > > & | rOutput, | ||
const ProcessInfo & | rCurrentProcessInfo | ||
) |
void Kratos::MonolithicDEMCoupledWeak< 3 >::CalculateOnIntegrationPoints | ( | const Variable< array_1d< double, 3 > > & | rVariable, |
std::vector< array_1d< double, 3 > > & | rOutput, | ||
const ProcessInfo & | rCurrentProcessInfo | ||
) |
|
overridevirtual |
Obtain an array_1d<double,3> elemental variable, evaluated on gauss points.
If the variable is VORTICITY, computes the vorticity (rotational of the velocity) based on the current velocity values. Otherwise, it assumes that the input variable is an elemental value and retrieves it. Implemented for a single gauss point only.
|
inlineoverridevirtual |
|
inlineoverridevirtual |
Obtain a double elemental variable, evaluated on gauss points.
If the variable is TAUONE or TAUTWO, calculates the corresponding stabilization parameter for the element, based on rCurrentProcessInfo's DELTA_TIME and DYNAMIC_TAU. If the variable is MU, calculates the effective viscosity at the element center due to Smagorinsky (in 'dynamic' units). Otherwise, it assumes that the input variable is an elemental value and retrieves it. Implemented for a single gauss point only.
rVariable | Kratos vector variable to compute |
Output | Will be filled with the values of the variable on integrartion points |
rCurrentProcessInfo | Process info instance |
Reimplemented from Kratos::Element.
|
inlineoverridevirtual |
Reimplemented from Kratos::Element.
|
inlineoverridevirtual |
Reimplemented from Kratos::Element.
|
inlineoverridevirtual |
Provides local contributions from body forces and projections to the RHS.
This is called during the assembly process and provides the RHS terms of the system that are either constant or computed explicitly (from the 'old' iteration variables). In this case this means the body force terms and the OSS projections, that are treated explicitly.
rRightHandSideVector | Will be filled with the elemental right hand side |
rCurrentProcessInfo | ProcessInfo instance from the ModelPart. It is expected to contain values for OSS_SWITCH, DYNAMIC_TAU and DELTA_TIME |
Reimplemented from Kratos::Element.
|
inlineprotectedvirtual |
Calculate momentum stabilization parameter (without time term).
Calculates the momentum tau parameter based on a given advective velocity. The dynamic term is not taken into account. This function is intended for error estimation only. In other cases use CalculateTau
TauOne | First stabilization parameter (momentum equation) |
rAdvVel | advection velocity |
Area | Elemental area |
Density | Density on integrartion point |
KinViscosity | Kinematic viscosity (nu) on integrartion point |
|
inlineprotectedvirtual |
Calculate Stabilization parameters.
Calculates both tau parameters based on a given advective velocity. Takes time step and dynamic coefficient from given ProcessInfo instance. ProcessInfo variables DELTA_TIME and DYNAMIC_TAU will be used.
TauOne | First stabilization parameter (momentum equation) |
TauTwo | Second stabilization parameter (mass equation) |
rAdvVel | advection velocity |
Area | Elemental area |
Density | Density on integrartion point |
KinViscosity | Kinematic viscosity (nu) on integrartion point |
rCurrentProcessInfo | Process info instance |
|
protected |
|
protected |
|
protected |
Determine integration point weights and shape funcition derivatives from the element's geometry.
|
inlineoverridevirtual |
Checks the input and that all required Kratos variables have been registered.
This function provides the place to perform checks on the completeness of the input. It is designed to be called only once (or anyway, not often) typically at the beginning of the calculations, so to verify that nothing is missing from the input or that no common error is found.
rCurrentProcessInfo | The ProcessInfo of the ModelPart that contains this element. |
Reimplemented from Kratos::Element.
|
protected |
|
protected |
|
protected |
|
inlineoverridevirtual |
Create a new element of this type.
Returns a pointer to a new MonolithicDEMCoupledWeak 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 |
Reimplemented from Kratos::Element.
|
protected |
The size of the 2D element is estimated as the diameter of a circle of the same area. Area = Pi * (h/2)^2
|
protected |
The size of the 3D element is estimated as the diameter of the sphere circumscribed to a regular tetrahedron with the same volume.
|
protected |
Return an estimate for the element size h, used to calculate the stabilization parameters.
Estimate the element size from its area or volume, required to calculate stabilization parameters. Note that its implementation is different for 2D or 3D elements.
Volume | (in 3D) or Area (in 2D) of the element |
|
virtual |
Reimplemented from Kratos::Element.
|
virtual |
Reimplemented from Kratos::Element.
|
overridevirtual |
Provides the global indices for each one of this element's local rows.
this determines the elemental equation ID vector for all elemental DOFs
rResult | A vector containing the global Id of each row |
rCurrentProcessInfo | the current process info object (unused) |
Reimplemented from Kratos::Element.
|
inlineprotectedvirtual |
|
inlineprotectedvirtual |
Write the value of a variable at a point inside the element to a double.
Evaluate a scalar variable in the point where the form functions take the values given by rShapeFunc and write the result to rResult. This is an auxiliary function used to compute values in integration points.
rResult | The double where the value will be added to |
rVariable | The nodal variable to be read |
rShapeFunc | The values of the form functions in the point |
|
inlineprotectedvirtual |
Write the value of a variable at a point inside the element to a double.
Evaluate a scalar variable in the point where the form functions take the values given by rShapeFunc and write the result to rResult. This is an auxiliary function used to compute values in integration points.
rResult | The double where the value will be added to |
rVariable | The nodal variable to be read |
rShapeFunc | The values of the form functions in the point |
Step | The time Step (Defaults to 0 = Current) |
|
inlineprotectedvirtual |
|
protected |
Returns the squared element size, estimated as h^2 = 2*Area
|
protected |
Returns the squared element size, estimated from the assumption V = (1/6) * h^3
|
protected |
Return the filter width for the smagorinsky model (Delta squared)
|
protected |
Returns the square of the minimum element height, to be used as filter width in the Smagorinsky model
|
protected |
Returns the square of the minimum element height, to be used as filter width in the Smagorinsky model
|
protected |
Return the filter width for the smagorinsky model (Delta squared)
|
inlineoverridevirtual |
this is called for non-linear analysis at the end of the iteration process
Reimplemented from Kratos::Element.
|
inlineprotectedvirtual |
Write the advective velocity evaluated at this point to an array.
Writes the value of the advective velocity evaluated at a point inside the element to an array_1d
rAdvVel | Output array |
rShapeFunc | Shape functions evaluated at the point of interest |
|
inlineprotectedvirtual |
Write the advective velocity evaluated at this point to an array.
Writes the value of the advective velocity evaluated at a point inside the element to an array_1d
rAdvVel | Output array |
rShapeFunc | Shape functions evaluated at the point of interest |
Step | The time Step |
|
inlineprotected |
Write the convective operator evaluated at this point (for each nodal funciton) to an array.
Evaluate the convective operator for each node's shape function at an arbitrary point
rResult | Output vector |
rVelocity | Velocity evaluated at the integration point |
rShapeDeriv | Derivatives of shape functions evaluated at the integration point |
|
virtual |
Reimplemented from Kratos::Element.
|
virtual |
Reimplemented from Kratos::Element.
|
overridevirtual |
Returns a list of the element's Dofs.
ElementalDofList | the list of DOFs |
rCurrentProcessInfo | the current process info instance |
Reimplemented from Kratos::Element.
|
inlineprotectedvirtual |
Add the contribution from Smagorinsky model to the (kinematic) viscosity.
Denstity | Density evaluated at the integration point (unused) |
MolecularViscosity | Viscosity of the fluid, in kinematic units (m2/s) |
rShapeFunc | Elemental shape functions, evaluated on the integration point |
rShapeDeriv | Shape function derivatives, evaluated on the integration point |
TotalViscosity | Effective viscosity (output) |
rCurrentProcessInfo | ProcessInfo instance (unused) |
|
virtual |
Reimplemented from Kratos::Element.
|
virtual |
Reimplemented from Kratos::Element.
|
overridevirtual |
Returns VELOCITY_X, VELOCITY_Y, (VELOCITY_Z,) PRESSURE for each node.
Values | Vector of nodal unknowns |
Step | Get result from 'Step' steps back, 0 is current step. (Must be smaller than buffer size) |
Reimplemented from Kratos::Element.
|
virtual |
Reimplemented from Kratos::Element.
|
virtual |
Reimplemented from Kratos::Element.
|
overridevirtual |
Returns ACCELERATION_X, ACCELERATION_Y, (ACCELERATION_Z,) 0 for each node.
Values | Vector of nodal second derivatives |
Step | Get result from 'Step' steps back, 0 is current step. (Must be smaller than buffer size) |
Reimplemented from Kratos::Element.
|
inlineoverridevirtual |
Turn back information as a string.
Reimplemented from Kratos::Element.
Kratos::MonolithicDEMCoupledWeak< TDim, TNumNodes >::KRATOS_CLASS_INTRUSIVE_POINTER_DEFINITION | ( | MonolithicDEMCoupledWeak< TDim, TNumNodes > | ) |
Pointer definition of MonolithicDEMCoupledWeak.
|
inlineprotected |
|
inlineprotected |
Assemble the contribution from an integration point to the element's residual.
OSS version. Note that rElementalMomRes should be initialized before calling this.
rAdvVel | Convection velocity (not including subscale) |
Density | Fluid density evaluated at integration point |
rElementalMomRes | Result |
rShapeFunc | Shape functions evaluated at integration point |
rShapeDeriv | Shape function derivatives evaluated at integration point |
Weight | Integration point weight (as a fraction of area or volume) |
|
inlineoverridevirtual |
Print information about this object.
Reimplemented from Kratos::Element.
|
inlineprotected |
Compute the norm of the symmetric gradient of velocity.
rShapeDeriv | derivatives of the shape functions |
|
friend |