9 #if !defined(KRATOS_UPDATED_LAGRANGIAN_ELEMENT_H_INCLUDED)
10 #define KRATOS_UPDATED_LAGRANGIAN_ELEMENT_H_INCLUDED
25 #include "utilities/geometry_utilities.h"
62 template <
unsigned int TDim>
218 PropertiesType::Pointer pProperties)
const override
237 const ProcessInfo &rCurrentProcessInfo)
override{};
243 KRATOS_THROW_ERROR(std::logic_error,
"UpdatedLagrangianElement::CalculateLeftHandSide not implemented",
"");
248 const ProcessInfo &rCurrentProcessInfo)
override{};
260 const ProcessInfo &rCurrentProcessInfo)
const override
270 const ProcessInfo &rCurrentProcessInfo)
const override
309 std::string
Info()
const override
311 std::stringstream buffer;
312 buffer <<
"UpdatedLagrangianElement #" <<
Id();
317 void PrintInfo(std::ostream &rOStream)
const override {}
361 std::cout <<
"I SHOULD NOT ENTER HERE!" << std::endl;
367 std::cout <<
"I SHOULD NOT ENTER HERE!" << std::endl;
415 const double TimeStep);
444 const ProcessInfo &rCurrentProcessInfo)
override{};
449 double &MeanValue){};
453 double &MeanValue){};
456 const double Density,
458 const double Weight){};
463 const double Weight){};
466 const double Weight){};
469 const double Weight){};
492 double &FVelJacobian,
503 double &volumetricDefRate,
523 double &DeviatoricInvariant);
545 const unsigned int g,
549 double &DeviatoricCoeff,
550 double &VolumetricCoeff)
564 template <
class TVariableType>
572 rResult = rShapeFunc[0] * rGeom[0].FastGetSolutionStepValue(Var);
576 rResult += rShapeFunc[
i] * rGeom[
i].FastGetSolutionStepValue(Var);
580 template <
class TVariableType>
589 if (rGeom[
i].
IsNot(RIGID))
591 rResult = rGeom[
i].FastGetSolutionStepValue(Var);
597 std::cout <<
"ATTENTION! NO PROPERTIES HAVE BEEN FOUNDED FOR THIS ELEMENT! X,Y " << rGeom[1].X() <<
"," << rGeom[1].Y() << std::endl;
610 template <
class TVariableType>
619 rResult = rShapeFunc[0] * rGeom[0].FastGetSolutionStepValue(Var, Step);
623 rResult += rShapeFunc[
i] * rGeom[
i].FastGetSolutionStepValue(Var, Step);
627 template <
class TVariableType>
635 rResult = rShapeFunc[0] * (rGeom[0].FastGetSolutionStepValue(Var, 0) - rGeom[0].FastGetSolutionStepValue(Var, 1));
639 rResult += rShapeFunc[
i] * (rGeom[
i].FastGetSolutionStepValue(Var, 0) - rGeom[
i].FastGetSolutionStepValue(Var, 1));
650 const double &var = rGeom[0].FastGetSolutionStepValue(Var);
652 rResult[
d] = rDN_DX(0,
d) * var;
656 const double &var = rGeom[
i].FastGetSolutionStepValue(Var);
658 rResult[
d] += rDN_DX(
i,
d) * var;
670 const double &var = rGeom[0].FastGetSolutionStepValue(Var, Step);
672 rResult[
d] = rDN_DX(0,
d) * var;
676 const double &var = rGeom[
i].FastGetSolutionStepValue(Var, Step);
678 rResult[
d] += rDN_DX(
i,
d) * var;
689 const double &var = rGeom[0].FastGetSolutionStepValue(Var, 0) - rGeom[0].FastGetSolutionStepValue(Var, 1);
691 rResult[
d] = rDN_DX(0,
d) * var;
695 const double &var = rGeom[
i].FastGetSolutionStepValue(Var, 0) - rGeom[
i].FastGetSolutionStepValue(Var, 1);
697 rResult[
d] += rDN_DX(
i,
d) * var;
709 const double &var = (1.0 + weight) * rGeom[0].FastGetSolutionStepValue(Var, 0) - rGeom[0].FastGetSolutionStepValue(Var, 1);
711 rResult[
d] = rDN_DX(0,
d) * var;
715 const double &var = (1.0 + weight) * rGeom[
i].FastGetSolutionStepValue(Var, 0) - rGeom[
i].FastGetSolutionStepValue(Var, 1);
717 rResult[
d] += rDN_DX(
i,
d) * var;
734 rResult += rDN_DX(
i,
d) * var[
d];
744 template <
class TValueType>
746 std::vector<TValueType> &rOutput)
750 rOutput.resize(NumValues,
false);
758 const TValueType &Val = const_this->
GetValue(rVariable);
760 for (
unsigned int i = 0;
i < NumValues;
i++)
769 unsigned int otherId)
772 double deltaX = rGeom[idB].X() - rGeom[idA].X();
773 double deltaY = rGeom[idB].Y() - rGeom[idA].Y();
774 double elementSize = sqrt(deltaX * deltaX + deltaY * deltaY);
775 if (fabs(deltaX) > fabs(deltaY))
777 NormalVector[0] = -deltaY / deltaX;
778 NormalVector[1] = 1.0;
779 double normNormal = NormalVector[0] * NormalVector[0] + NormalVector[1] * NormalVector[1];
780 NormalVector *= 1.0 / sqrt(normNormal);
784 NormalVector[0] = 1.0;
785 NormalVector[1] = -deltaX / deltaY;
786 double normNormal = NormalVector[0] * NormalVector[0] + NormalVector[1] * NormalVector[1];
787 NormalVector *= 1.0 / sqrt(normNormal);
790 const array_1d<double, 3> MeanPoint = (rGeom[idB].Coordinates() + rGeom[idA].Coordinates()) * 0.5;
791 const array_1d<double, 3> DistanceA = rGeom[otherId].Coordinates() - (MeanPoint + NormalVector * elementSize);
792 const array_1d<double, 3> DistanceB = rGeom[otherId].Coordinates() - (MeanPoint - NormalVector * elementSize);
793 const double normA = DistanceA[0] * DistanceA[0] + DistanceA[1] * DistanceA[1];
794 const double normB = DistanceB[0] * DistanceB[0] + DistanceB[1] * DistanceB[1];
797 NormalVector *= -1.0;
804 unsigned int otherId,
808 double deltaX = rGeom[idB].X() - rGeom[idA].X();
809 double deltaY = rGeom[idB].Y() - rGeom[idA].Y();
810 edgeLength = sqrt(deltaX * deltaX + deltaY * deltaY);
811 if (fabs(deltaX) > fabs(deltaY))
813 NormalVector[0] = -deltaY / deltaX;
814 NormalVector[1] = 1.0;
815 double normNormal = NormalVector[0] * NormalVector[0] + NormalVector[1] * NormalVector[1];
816 NormalVector *= 1.0 / sqrt(normNormal);
820 NormalVector[0] = 1.0;
821 NormalVector[1] = -deltaX / deltaY;
822 double normNormal = NormalVector[0] * NormalVector[0] + NormalVector[1] * NormalVector[1];
823 NormalVector *= 1.0 / sqrt(normNormal);
826 const array_1d<double, 3> MeanPoint = (rGeom[idB].Coordinates() + rGeom[idA].Coordinates()) * 0.5;
827 const array_1d<double, 3> DistanceA = rGeom[otherId].Coordinates() - (MeanPoint + NormalVector * edgeLength);
828 const array_1d<double, 3> DistanceB = rGeom[otherId].Coordinates() - (MeanPoint - NormalVector * edgeLength);
829 const double normA = DistanceA[0] * DistanceA[0] + DistanceA[1] * DistanceA[1];
830 const double normB = DistanceB[0] * DistanceB[0] + DistanceB[1] * DistanceB[1];
833 NormalVector *= -1.0;
841 unsigned int otherId)
845 const array_1d<double, 3> TangentEta = rGeom[idC].Coordinates() - rGeom[idA].Coordinates();
848 double normNormal = NormalVector[0] * NormalVector[0] + NormalVector[1] * NormalVector[1] + NormalVector[2] * NormalVector[2];
849 NormalVector *= 1.0 / sqrt(normNormal);
852 double deltaX = rGeom[idB].X() - rGeom[idA].X();
853 double deltaY = rGeom[idB].Y() - rGeom[idA].Y();
854 double deltaZ = rGeom[idB].Z() - rGeom[idA].Z();
855 double elementSize = sqrt(deltaX * deltaX + deltaY * deltaY + deltaZ * deltaZ);
856 const array_1d<double, 3> MeanPoint = (rGeom[idC].Coordinates() + rGeom[idB].Coordinates() + rGeom[idA].Coordinates()) / 3.0;
857 const array_1d<double, 3> DistanceA = rGeom[otherId].Coordinates() - (MeanPoint + NormalVector * elementSize);
858 const array_1d<double, 3> DistanceB = rGeom[otherId].Coordinates() - (MeanPoint - NormalVector * elementSize);
859 const double normA = DistanceA[0] * DistanceA[0] + DistanceA[1] * DistanceA[1] + DistanceA[2] * DistanceA[2];
860 const double normB = DistanceB[0] * DistanceB[0] + DistanceB[1] * DistanceB[1] + DistanceB[2] * DistanceB[2];
863 NormalVector *= -1.0;
871 unsigned int otherId,
876 const array_1d<double, 3> TangentEta = rGeom[idC].Coordinates() - rGeom[idA].Coordinates();
879 double normNormal = NormalVector[0] * NormalVector[0] + NormalVector[1] * NormalVector[1] + NormalVector[2] * NormalVector[2];
880 NormalVector *= 1.0 / sqrt(normNormal);
883 double deltaX = rGeom[idB].X() - rGeom[idA].X();
884 double deltaY = rGeom[idB].Y() - rGeom[idA].Y();
885 double deltaZ = rGeom[idB].Z() - rGeom[idA].Z();
891 const double s = (
a +
b +
c) / 2.0;
893 surfaceArea= std::sqrt(s * (s -
a) * (s -
b) * (s -
c));
895 double elementSize = sqrt(deltaX * deltaX + deltaY * deltaY + deltaZ * deltaZ);
896 const array_1d<double, 3> MeanPoint = (rGeom[idC].Coordinates() + rGeom[idB].Coordinates() + rGeom[idA].Coordinates()) / 3.0;
897 const array_1d<double, 3> DistanceA = rGeom[otherId].Coordinates() - (MeanPoint + NormalVector * elementSize);
898 const array_1d<double, 3> DistanceB = rGeom[otherId].Coordinates() - (MeanPoint - NormalVector * elementSize);
899 const double normA = DistanceA[0] * DistanceA[0] + DistanceA[1] * DistanceA[1] + DistanceA[2] * DistanceA[2];
900 const double normB = DistanceB[0] * DistanceB[0] + DistanceB[1] * DistanceB[1] + DistanceB[2] * DistanceB[2];
903 NormalVector *= -1.0;
935 void save(
Serializer &rSerializer)
const override
985 template <
unsigned int TDim>
993 template <
unsigned int TDim>
998 rOStream << std::endl;
PeriodicInterfaceProcess & operator=(const PeriodicInterfaceProcess &)=delete
Definition: constitutive_law.h:47
Base class for all Elements.
Definition: element.h:60
std::size_t SizeType
Definition: element.h:94
std::vector< DofType::Pointer > DofsVectorType
Definition: element.h:100
std::vector< std::size_t > EquationIdVectorType
Definition: element.h:98
std::size_t IndexType
Definition: flags.h:74
bool IsNot(Flags const &rOther) const
Definition: flags.h:291
TVariableType::Type & GetValue(const TVariableType &rThisVariable)
Definition: geometrical_object.h:248
GeometryType & GetGeometry()
Returns the reference of the geometry.
Definition: geometrical_object.h:158
IntegrationMethod
Definition: geometry_data.h:76
Geometry base class.
Definition: geometry.h:71
SizeType PointsNumber() const
Definition: geometry.h:528
TPointType const & GetPoint(const int Index) const
Definition: geometry.h:1816
SizeType IntegrationPointsNumber() const
Definition: geometry.h:2257
This object defines an indexed object.
Definition: indexed_object.h:54
IndexType Id() const
Definition: indexed_object.h:107
static double Norm3(const TVectorType &a)
Calculates the norm of vector "a" which is assumed to be of size 3.
Definition: math_utils.h:691
static T CrossProduct(const T &a, const T &b)
Performs the vector product of the two input vectors a,b.
Definition: math_utils.h:762
This class defines the node.
Definition: node.h:65
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
Properties encapsulates data shared by different Elements or Conditions. It can store any type of dat...
Definition: properties.h:69
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.
Definition: updated_lagrangian_element.h:64
UpdatedLagrangianElement()
Definition: updated_lagrangian_element.hpp:207
Variable class contains all information needed to store and retrive data from a data container.
Definition: variable.h:63
#define KRATOS_THROW_ERROR(ExceptionType, ErrorMessage, MoreInfo)
Definition: define.h:77
#define KRATOS_SERIALIZE_SAVE_BASE_CLASS(Serializer, BaseType)
Definition: define.h:812
#define KRATOS_CATCH(MoreInfo)
Definition: define.h:110
#define KRATOS_TRY
Definition: define.h:109
#define KRATOS_SERIALIZE_LOAD_BASE_CLASS(Serializer, BaseType)
Definition: define.h:815
void ComputeMechanicalDissipation(ElementalVariables &rElementalVariables)
VectorType CurrentTotalCauchyStress
Definition: updated_lagrangian_element.h:92
void CalcSpatialVelocityGrad(MatrixType &invFgrad, MatrixType &VelDefgrad, MatrixType &SpatialVelocityGrad)
Definition: updated_lagrangian_element.cpp:774
void CalcVelDefGrad(const ShapeFunctionDerivativesType &rDN_DX, MatrixType &FgradVel, const double theta)
Definition: updated_lagrangian_element.cpp:662
void GetPositions(Vector &rValues, const ProcessInfo &rCurrentProcessInfo, const double theta)
Node NodeType
Node type (default is: Node)
Definition: updated_lagrangian_element.h:107
void GetOutwardsUnitNormalForThreePoints(array_1d< double, 3 > &NormalVector, unsigned int idA, unsigned int idB, unsigned int idC, unsigned int otherId, double &surfaceArea)
Definition: updated_lagrangian_element.h:867
MatrixType FgradVel
Definition: updated_lagrangian_element.h:86
void CalcMDGreenLagrangeMaterial(MatrixType &Fgrad, MatrixType &VelDefgrad, VectorType &MDGreenLagrangeMaterial)
double EquivalentStrainRate(const ShapeFunctionDerivativesType &rDN_DX) const
EquivalentStrainRate Calculate the second invariant of the strain rate tensor GammaDot = (2SijSij)^0....
Definition: updated_lagrangian_element.cpp:1597
VectorType UpdatedTotalCauchyStress
Definition: updated_lagrangian_element.h:93
void CalcVolDefRateFromSpatialVelGrad(double &volumetricDefRate, MatrixType &SpatialVelocityGrad)
Definition: updated_lagrangian_element.cpp:789
void CheckStrain1(double &VolumetricDefRate, MatrixType &SpatialVelocityGrad)
virtual void Initialize(const ProcessInfo &rCurrentProcessInfo) override
Definition: updated_lagrangian_element.h:225
std::string Info() const override
Turn back information as a string.
Definition: updated_lagrangian_element.h:309
void EvaluateGradientDifferenceInPoint(array_1d< double, TDim > &rResult, const Kratos::Variable< double > &Var, const ShapeFunctionDerivativesType &rDN_DX)
Definition: updated_lagrangian_element.h:682
void CalcSpatialDefRate(VectorType &MDGreenLagrangeMaterial, MatrixType &invFgrad, VectorType &SpatialDefRate)
void CalcMeanPressure(double &meanPressure, const int Step)
Kratos::Vector ShapeFunctionsType
Type for shape function values container.
Definition: updated_lagrangian_element.h:132
void GetVelocityValues(Vector &rValues, const int Step=0)
virtual void CalculateLocalContinuityEqForPressure(MatrixType &rLeftHandSideMatrix, VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo)
Definition: updated_lagrangian_element.h:351
void GetOutwardsUnitNormalForThreePoints(array_1d< double, 3 > &NormalVector, unsigned int idA, unsigned int idB, unsigned int idC, unsigned int otherId)
Definition: updated_lagrangian_element.h:837
void GetFluidFractionRateValues(Vector &rValues)
Definition: updated_lagrangian_element.cpp:204
virtual void CalculateExplicitContinuityEquation(MatrixType &rLeftHandSideMatrix, VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo)
Definition: updated_lagrangian_element.h:355
bool CalcStrainRate(ElementalVariables &rElementalVariables, const ProcessInfo &rCurrentProcessInfo, const ShapeFunctionDerivativesType &rDN_DX, const double theta)
Definition: updated_lagrangian_element.cpp:1379
virtual void ComputeBulkMatrixRHS(MatrixType &BulkMatrix, const double Weight)
Definition: updated_lagrangian_element.h:468
double CalcNormalProjectionDefRate(VectorType &SpatialDefRate)
double VolumetricDefRate
Definition: updated_lagrangian_element.h:81
Element::Pointer Create(IndexType NewId, NodesArrayType const &ThisNodes, PropertiesType::Pointer pProperties) const override
Create a new element of this type.
Definition: updated_lagrangian_element.h:217
void GetDensityValues(Vector &rValues, const int Step=0)
Definition: updated_lagrangian_element.cpp:219
bool CalcMechanicsUpdated(ElementalVariables &rElementalVariables, const ProcessInfo &rCurrentProcessInfo, const ShapeFunctionDerivativesType &rDN_DX)
Definition: updated_lagrangian_element.cpp:1106
void GetOutwardsUnitNormalForTwoPoints(array_1d< double, 3 > &NormalVector, unsigned int idA, unsigned int idB, unsigned int otherId, double &edgeLength)
Definition: updated_lagrangian_element.h:801
void EvaluateInPoint(TVariableType &rResult, const Kratos::Variable< TVariableType > &Var, const ShapeFunctionsType &rShapeFunc)
Write the value of a variable at a point inside the element to a double.
Definition: updated_lagrangian_element.h:565
MatrixType SpatialVelocityGrad
Definition: updated_lagrangian_element.h:88
bool CheckStrain3(VectorType &SpatialDefRate, MatrixType &SpatialVelocityGrad)
virtual void CalculateMassMatrix(Matrix &rMassMatrix, const ProcessInfo &rCurrentProcessInfo) override
Add integration point contribution to the mass matrix.
Definition: updated_lagrangian_element.h:443
KRATOS_CLASS_INTRUSIVE_POINTER_DEFINITION(UpdatedLagrangianElement)
Pointer definition of UpdatedLagrangianElement.
void CalcMeanVelocityNorm(double &meanVelocity, const int Step)
void GetDofList(DofsVectorType &rElementalDofList, const ProcessInfo &rCurrentProcessInfo) const override
Returns a list of the element's Dofs.
Definition: updated_lagrangian_element.h:268
virtual double GetThetaContinuity()
Definition: updated_lagrangian_element.h:365
unsigned int voigtsize
Definition: updated_lagrangian_element.h:75
void GetPressureDofList(DofsVectorType &rElementalDofList, const ProcessInfo &rCurrentProcessInfo) const
Definition: updated_lagrangian_element.cpp:171
void CheckStrain2(MatrixType &SpatialVelocityGrad, MatrixType &Fgrad, MatrixType &VelDefgrad)
virtual ~UpdatedLagrangianElement()
Destructor.
Definition: updated_lagrangian_element.h:197
GeometryType::ShapeFunctionsGradientsType ShapeFunctionDerivativesArrayType
Type for an array of shape function gradient matrices.
Definition: updated_lagrangian_element.h:138
virtual void CalcElasticPlasticCauchySplitted(ElementalVariables &rElementalVariables, const unsigned int g, const Vector &rN, const ProcessInfo &rCurrentProcessInfo, double &Density, double &DeviatoricCoeff, double &VolumetricCoeff)
Definition: updated_lagrangian_element.h:543
double DetFgrad
Definition: updated_lagrangian_element.h:77
ConstitutiveLaw ConstitutiveLawType
Reference type definition for constitutive laws.
Definition: updated_lagrangian_element.h:145
double DetFgradVel
Definition: updated_lagrangian_element.h:78
void GetElementalValueForOutput(const Kratos::Variable< TValueType > &rVariable, std::vector< TValueType > &rOutput)
Helper function to print results on gauss points.
Definition: updated_lagrangian_element.h:745
void EvaluatePropertyFromANotRigidNode(TVariableType &rResult, const Kratos::Variable< TVariableType > &Var)
Definition: updated_lagrangian_element.h:581
void GetAccelerationValues(Vector &rValues, const int Step=0)
void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
Definition: updated_lagrangian_element.h:317
bool CalcCompleteStrainRate(ElementalVariables &rElementalVariables, const ProcessInfo &rCurrentProcessInfo, const ShapeFunctionDerivativesType &rDN_DX, const double theta)
void EvaluateInPoint(TVariableType &rResult, const Kratos::Variable< TVariableType > &Var, const ShapeFunctionsType &rShapeFunc, const IndexType Step)
Write the value of a variable at a point inside the element to a double.
Definition: updated_lagrangian_element.h:611
double EquivalentStrainRate
Definition: updated_lagrangian_element.h:80
void CalcEquivalentStrainRate(VectorType &SpatialDefRate, double &EquivalentStrainRate)
void CalculateDeltaPosition(Matrix &rDeltaPosition)
Definition: updated_lagrangian_element.cpp:283
double MeanPressure
Definition: updated_lagrangian_element.h:91
virtual void InitializeSolutionStep(const ProcessInfo &rCurrentProcessInfo) override
Initializes the element and all geometric information required for the problem.
Definition: updated_lagrangian_element.h:228
void GetElementalAcceleration(Vector &rValues, const int Step, const double TimeStep)
Definition: updated_lagrangian_element.cpp:389
void GetPressureVelocityValues(Vector &rValues, const int Step)
Definition: updated_lagrangian_element.cpp:1090
virtual void CalculateLocalSystem(MatrixType &rLeftHandSideMatrix, VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo) override
Calculate the element's local contribution to the system for the current step.
Definition: updated_lagrangian_element.h:235
std::size_t SizeType
Definition: updated_lagrangian_element.h:123
MatrixType InvFgrad
Definition: updated_lagrangian_element.h:85
MatrixType Fgrad
Definition: updated_lagrangian_element.h:84
void EvaluateGradientDifferenceInPoint(array_1d< double, TDim > &rResult, const Kratos::Variable< double > &Var, const ShapeFunctionDerivativesType &rDN_DX, const double weight)
Definition: updated_lagrangian_element.h:701
Geometry< NodeType >::PointsArrayType NodesArrayType
Definition of nodes container type, redefined from GeometryType.
Definition: updated_lagrangian_element.h:113
GeometryData::IntegrationMethod GetIntegrationMethod() const override
Definition: updated_lagrangian_element.cpp:63
double CalcNormalProjectionDefRate(const VectorType &SpatialDefRate, const array_1d< double, 3 > NormalVector)
VectorType UpdatedDeviatoricCauchyStress
Definition: updated_lagrangian_element.h:95
double ElementSize()
Definition: updated_lagrangian_element.cpp:534
void CalculateLeftHandSide(MatrixType &rLeftHandSideMatrix, const ProcessInfo &rCurrentProcessInfo) override
Definition: updated_lagrangian_element.h:239
virtual void ComputeMassMatrix(Matrix &rMassMatrix, const ShapeFunctionsType &rN, const double Weight, double &MeanValue)
Definition: updated_lagrangian_element.h:446
UpdatedLagrangianElement(IndexType NewId, GeometryType::Pointer pGeometry, PropertiesType::Pointer pProperties)
Constuctor using geometry and properties.
Definition: updated_lagrangian_element.h:188
void EvaluateDifferenceInPoint(TVariableType &rResult, const Kratos::Variable< TVariableType > &Var, const ShapeFunctionsType &rShapeFunc)
Definition: updated_lagrangian_element.h:628
double mMaterialDensity
Definition: updated_lagrangian_element.h:332
UpdatedLagrangianElement(IndexType NewId=0)
Default constuctor.
Definition: updated_lagrangian_element.h:160
double DeviatoricInvariant
Definition: updated_lagrangian_element.h:79
virtual void InitializeElementalVariables(ElementalVariables &rElementalVariables)
Definition: updated_lagrangian_element.h:277
VectorType CurrentDeviatoricCauchyStress
Definition: updated_lagrangian_element.h:94
double mMaterialDeviatoricCoefficient
Definition: updated_lagrangian_element.h:330
MatrixType ConstitutiveMatrix
Definition: updated_lagrangian_element.h:89
void GetPressureValues(Vector &rValues, const int Step=0)
Definition: updated_lagrangian_element.cpp:188
virtual void AddInternalForces(Vector &rRHSVector, const ShapeFunctionDerivativesType &rDN_DX, ElementalVariables &rElementalVariables, const double Weight)
Definition: updated_lagrangian_element.h:460
VectorType SpatialDefRate
Definition: updated_lagrangian_element.h:82
void CalcFGrad(const ShapeFunctionDerivativesType &rDN_DX, MatrixType &Fgrad, MatrixType &invFgrad, double &FJacobian, const ProcessInfo &rCurrentProcessInfo, const double theta)
Definition: updated_lagrangian_element.cpp:588
UpdatedLagrangianElement(IndexType NewId, const NodesArrayType &ThisNodes)
Constructor using an array of nodes.
Definition: updated_lagrangian_element.h:169
void EvaluateDivergenceInPoint(double &rResult, const Kratos::Variable< array_1d< double, 3 >> &Var, const ShapeFunctionDerivativesType &rDN_DX)
Definition: updated_lagrangian_element.h:721
Vector VectorType
Vector type for local contributions to the linear system.
Definition: updated_lagrangian_element.h:116
void EvaluateGradientInPoint(array_1d< double, TDim > &rResult, const Kratos::Variable< double > &Var, const ShapeFunctionDerivativesType &rDN_DX)
Definition: updated_lagrangian_element.h:643
virtual void AddExternalForces(Vector &rRHSVector, const double Density, const ShapeFunctionsType &rN, const double Weight)
Definition: updated_lagrangian_element.h:455
Matrix MatrixType
Matrix type for local contributions to the linear system.
Definition: updated_lagrangian_element.h:119
void GetVelocityDofList(DofsVectorType &rElementalDofList, const ProcessInfo &rCurrentProcessInfo) const
ConstitutiveLawType::Pointer ConstitutiveLawPointerType
Pointer type for constitutive laws.
Definition: updated_lagrangian_element.h:148
void VelocityEquationIdVector(EquationIdVectorType &rResult, const ProcessInfo &rCurrentProcessInfo) const
PointerVectorSet< Dof< double >, IndexedObject > DofsArrayType
Definition: updated_lagrangian_element.h:129
Element::PropertiesType PropertiesType
Definition: updated_lagrangian_element.h:142
void EquationIdVector(EquationIdVectorType &rResult, const ProcessInfo &rCurrentProcessInfo) const override
Provides the global indices for each one of this element's local rows.
Definition: updated_lagrangian_element.h:258
ConstitutiveLaw::Pointer mpConstitutiveLaw
Definition: updated_lagrangian_element.h:337
VectorType MDGreenLagrangeMaterial
Definition: updated_lagrangian_element.h:83
virtual void ComputeBulkMatrixLump(MatrixType &BulkMatrix, const double Weight)
Definition: updated_lagrangian_element.h:465
std::vector< std::size_t > EquationIdVectorType
Definition: updated_lagrangian_element.h:125
void GetOutwardsUnitNormalForTwoPoints(array_1d< double, 3 > &NormalVector, unsigned int idA, unsigned int idB, unsigned int otherId)
Definition: updated_lagrangian_element.h:766
virtual void Calculate(const Variable< array_1d< double, 3 >> &rVariable, array_1d< double, 3 > &rOutput, const ProcessInfo &rCurrentProcessInfo) override
Definition: updated_lagrangian_element.h:232
void CalculateRightHandSide(VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo) override
Definition: updated_lagrangian_element.h:247
virtual void UpdateCauchyStress(unsigned int g, const ProcessInfo &rCurrentProcessInfo)
Definition: updated_lagrangian_element.h:275
void EvaluateGradientInPoint(array_1d< double, TDim > &rResult, const Kratos::Variable< double > &Var, const ShapeFunctionDerivativesType &rDN_DX, const IndexType Step)
Definition: updated_lagrangian_element.h:662
UpdatedLagrangianElement(IndexType NewId, GeometryType::Pointer pGeometry)
Constructor using a geometry object.
Definition: updated_lagrangian_element.h:178
Kratos::Matrix ShapeFunctionDerivativesType
Type for a matrix containing the shape function gradients.
Definition: updated_lagrangian_element.h:135
void CalcDeviatoricInvariant(VectorType &SpatialDefRate, double &DeviatoricInvariant)
virtual void InitializeNonLinearIteration(const ProcessInfo &rCurrentProcessInfo) override
Definition: updated_lagrangian_element.h:230
MatrixType InvFgradVel
Definition: updated_lagrangian_element.h:87
Geometry< NodeType > GeometryType
Geometry type (using with given NodeType)
Definition: updated_lagrangian_element.h:110
void CalcVolumetricDefRate(const ShapeFunctionDerivativesType &rDN_DX, double &volumetricDefRate, MatrixType &invGradDef, const double theta)
std::vector< Dof< double >::Pointer > DofsVectorType
Definition: updated_lagrangian_element.h:127
void GetDisplacementValues(Vector &rValues, const int Step=0)
void PrintData(std::ostream &rOStream) const override
Print object's data.
Definition: updated_lagrangian_element.hpp:177
virtual void CalculateGeometryData(ShapeFunctionDerivativesArrayType &rDN_DX, Matrix &rNContainer, Vector &rGaussWeights)
Determine integration point weights and shape funcition derivatives from the element's geometry.
Definition: updated_lagrangian_element.cpp:492
Element::Pointer Clone(IndexType NewId, NodesArrayType const &ThisNodes) const override
It creates a new element pointer and clones the previous element data.
Definition: updated_lagrangian_element.cpp:33
double mMaterialVolumetricCoefficient
Definition: updated_lagrangian_element.h:331
virtual void ComputeLumpedMassMatrix(Matrix &rMassMatrix, const double Weight, double &MeanValue)
Definition: updated_lagrangian_element.h:451
void CalcVelDefGradAndInverse(const ShapeFunctionDerivativesType &rDN_DX, MatrixType &FgradVel, MatrixType &invFgradVel, double &FVelJacobian, const double theta)
Definition: updated_lagrangian_element.cpp:692
virtual void CalculateLocalMomentumEquations(MatrixType &rLeftHandSideMatrix, VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo)
Definition: updated_lagrangian_element.h:347
virtual double GetThetaMomentum()
Definition: updated_lagrangian_element.h:359
void PressureEquationIdVector(EquationIdVectorType &rResult, const ProcessInfo &rCurrentProcessInfo) const
Definition: updated_lagrangian_element.cpp:114
std::size_t IndexType
Definition: updated_lagrangian_element.h:121
int Check(const ProcessInfo &rCurrentProcessInfo) const override
Checks the input and that all required Kratos variables have been registered.
Definition: updated_lagrangian_element.h:298
std::size_t IndexType
The definition of the index type.
Definition: key_hash.h:35
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
ModelPart::NodesContainerType NodesArrayType
Definition: gid_gauss_point_container.h:42
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
a
Definition: generate_stokes_twofluid_element.py:77
b
Definition: generate_total_lagrangian_mixed_volumetric_strain_element.py:31
c
Definition: generate_weakly_compressible_navier_stokes_element.py:108
def load(f)
Definition: ode_solve.py:307
int d
Definition: ode_solve.py:397
integer i
Definition: TensorModule.f:17
Definition: updated_lagrangian_element.h:74