10 #if !defined(KRATOS_SOLID_ELEMENT_H_INCLUDED)
11 #define KRATOS_SOLID_ELEMENT_H_INCLUDED
21 #include "custom_utilities/element_utilities.hpp"
133 pNcontainer=&rNcontainer;
138 pProcessInfo=&rProcessInfo;
158 return *pProcessInfo;
163 const unsigned int& number_of_nodes)
171 IntegrationWeight = 1;
184 StrainVector.
resize(voigt_size,
false);
185 StressVector.
resize(voigt_size,
false);
186 N.resize(number_of_nodes,
false);
192 B.resize(voigt_size,
dimension*number_of_nodes,
false);
197 ConstitutiveMatrix.
resize(voigt_size, voigt_size,
false);
341 void GetValuesVector(
Vector& rValues,
int Step = 0)
const override;
346 void GetFirstDerivativesVector(
Vector& rValues,
int Step = 0)
const override;
351 void GetSecondDerivativesVector(
Vector& rValues,
int Step = 0)
const override;
386 const std::vector<ConstitutiveLaw::Pointer>& rValues,
396 void Initialize(
const ProcessInfo& rCurrentProcessInfo)
override;
406 void InitializeNonLinearIteration(
const ProcessInfo& rCurrentProcessInfo)
override;
411 void FinalizeNonLinearIteration(
const ProcessInfo& rCurrentProcessInfo)
override;
416 void FinalizeSolutionStep(
const ProcessInfo& rCurrentProcessInfo)
override;
431 void CalculateLocalSystem(
MatrixType& rLeftHandSideMatrix,
442 void CalculateRightHandSide(
VectorType& rRightHandSideVector,
452 void CalculateLeftHandSide (
MatrixType& rLeftHandSideMatrix,
462 void CalculateFirstDerivativesContributions(
MatrixType& rLeftHandSideMatrix,
473 void CalculateSecondDerivativesContributions(
MatrixType& rLeftHandSideMatrix,
483 void CalculateSecondDerivativesLHS(
MatrixType& rLeftHandSideMatrix,
493 void CalculateSecondDerivativesRHS(
VectorType& rRightHandSideVector,
502 void CalculateMassMatrix(
MatrixType& rMassMatrix,
511 void CalculateDampingMatrix(
MatrixType& rDampingMatrix,
524 void AddExplicitContribution(
const VectorType& rRHSVector,
534 std::vector<double>& rOutput,
541 std::vector<Vector>& rOutput,
548 std::vector< Matrix >& rOutput,
561 int Check(
const ProcessInfo& rCurrentProcessInfo)
const override;
575 std::string
Info()
const override
577 std::stringstream buffer;
578 buffer <<
"Large Displacement Element #" << Id();
585 rOStream <<
"Large Displacement Element #" << Id();
591 GetGeometry().PrintData(rOStream);
631 unsigned int increment)
const;
654 void CalculatePerturbedLeftHandSide (
MatrixType& rLeftHandSideMatrix,
662 double& rIntegrationWeight);
670 double& rIntegrationWeight);
675 virtual void CalculateAndAddDynamicLHS(
MatrixType& rLeftHandSideMatrix,
678 double& rIntegrationWeight);
683 virtual void CalculateAndAddDynamicRHS(
VectorType& rRightHandSideVector,
686 double& rIntegrationWeight);
691 virtual void CalculateAndAddKuum(
MatrixType& rLeftHandSideMatrix,
693 double& rIntegrationWeight);
698 virtual void CalculateAndAddKuug(
MatrixType& rLeftHandSideMatrix,
700 double& rIntegrationWeight);
705 virtual void CalculateAndAddExternalForces(
VectorType& rRightHandSideVector,
708 double& rIntegrationWeight);
713 virtual void CalculateAndAddInternalForces(
VectorType& rRightHandSideVector,
715 double& rIntegrationWeight);
723 const int & rPointNumber);
730 const int & rPointNumber);
734 virtual SizeType GetDofsSize()
const;
741 if( this->IsDefined(SELECTED) )
742 return this->Is(SELECTED);
750 virtual void InitializeSystemMatrices(
MatrixType& rLeftHandSideMatrix,
752 Flags& rCalculationFlags);
757 void InitializeConstitutiveLaw();
762 void ResetConstitutiveLaw()
override;
767 void InitializeExplicitContributions();
772 virtual void CalculateKinematics(ElementDataType& rVariables,
773 const double& rPointNumber);
778 virtual void CalculateKinetics(ElementDataType& rVariables,
779 const double& rPointNumber);
784 virtual void InitializeElementData(ElementDataType & rVariables,
790 virtual void TransformElementData(ElementDataType & rVariables,
791 const double& rPointNumber);
796 virtual void FinalizeStepVariables(ElementDataType & rVariables,
797 const double& rPointNumber);
802 virtual double& CalculateIntegrationWeight(
double& rIntegrationWeight);
807 virtual double& CalculateTotalMass(
double& rTotalMass,
const ProcessInfo& rCurrentProcessInfo);
812 virtual Matrix& CalculateDeltaPosition(
Matrix & rDeltaPosition);
817 virtual Matrix& CalculateTotalDeltaPosition(
Matrix & rDeltaPosition);
822 virtual double& CalculateVolumeChange(
double& rVolumeChange, ElementDataType& rVariables);
827 virtual Vector& CalculateVolumeForce(
Vector& rVolumeForce, ElementDataType& rVariables);
871 void save(
Serializer& rSerializer)
const override;
PeriodicInterfaceProcess & operator=(const PeriodicInterfaceProcess &)=delete
Definition: constitutive_law.h:47
StressMeasure
Definition: constitutive_law.h:69
@ StressMeasure_PK2
Definition: constitutive_law.h:71
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
IntegrationMethod
Definition: geometry_data.h:76
std::size_t SizeType
Definition: geometry_data.h:173
Definition: amatrix_interface.h:41
void resize(std::size_t NewSize1, std::size_t NewSize2, bool preserve=0)
Definition: amatrix_interface.h:224
PointerVector is a container like stl vector but using a vector to store pointers to its data.
Definition: pointer_vector.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
Large Displacement Lagrangian Element for 3D and 2D geometries. (base class)
Definition: solid_element.hpp:49
KRATOS_DEFINE_LOCAL_FLAG(COMPUTE_LHS_MATRIX)
ElementData ElementDataType
Type for element variables.
Definition: solid_element.hpp:269
KRATOS_DEFINE_LOCAL_FLAG(COMPUTE_RHS_VECTOR)
std::string Info() const override
Turn back information as a string.
Definition: solid_element.hpp:575
KRATOS_DEFINE_LOCAL_FLAG(FINALIZED_STEP)
void PrintData(std::ostream &rOStream) const override
Print object's data.
Definition: solid_element.hpp:589
bool IsSliver()
Definition: solid_element.hpp:739
ConstitutiveLaw ConstitutiveLawType
Definition: solid_element.hpp:55
void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
Definition: solid_element.hpp:583
GeometryData::SizeType SizeType
Type for size.
Definition: solid_element.hpp:63
GeometryData::IntegrationMethod IntegrationMethod
Type definition for integration methods.
Definition: solid_element.hpp:61
ConstitutiveLawType::Pointer ConstitutiveLawPointerType
Pointer type for constitutive laws.
Definition: solid_element.hpp:57
std::vector< ConstitutiveLaw::Pointer > mConstitutiveLawVector
Definition: solid_element.hpp:614
IntegrationMethod mThisIntegrationMethod
Definition: solid_element.hpp:609
KRATOS_CLASS_INTRUSIVE_POINTER_DEFINITION(SolidElement)
Counted pointer of SolidElement.
ConstitutiveLawType::StressMeasure StressMeasureType
StressMeasure from constitutive laws.
Definition: solid_element.hpp:59
Modeler::Pointer Create(const std::string &ModelerName, Model &rModel, const Parameters ModelParameters)
Checks if the modeler is registered.
Definition: modeler_factory.cpp:30
void SetValuesOnIntegrationPoints(TObject &dummy, const Variable< TDataType > &rVariable, const std::vector< TDataType > &values, const ProcessInfo &rCurrentProcessInfo)
Definition: add_mesh_to_python.cpp:185
pybind11::list CalculateOnIntegrationPoints(TObject &dummy, const Variable< TDataType > &rVariable, const ProcessInfo &rProcessInfo)
Definition: add_mesh_to_python.cpp:142
void InitializeSolutionStep(ConstructionUtility &rThisUtil, std::string ThermalSubModelPartName, std::string MechanicalSubModelPartName, std::string HeatFluxSubModelPartName, std::string HydraulicPressureSubModelPartName, bool thermal_conditions, bool mechanical_conditions, int phase)
Definition: add_custom_utilities_to_python.cpp:45
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
KratosZeroVector< double > ZeroVector
Definition: amatrix_interface.h:561
AMatrix::IdentityMatrix< double > IdentityMatrix
Definition: amatrix_interface.h:564
KratosZeroMatrix< double > ZeroMatrix
Definition: amatrix_interface.h:559
T & noalias(T &TheMatrix)
Definition: amatrix_interface.h:484
H
Definition: generate_droplet_dynamics.py:257
F
Definition: hinsberg_optimization.py:144
int dimension
Definition: isotropic_damage_automatic_differentiation.py:123
def load(f)
Definition: ode_solve.py:307
int j
Definition: quadrature.py:648
J
Definition: sensitivityMatrix.py:58
N
Definition: sensitivityMatrix.py:29
B
Definition: sensitivityMatrix.py:76
Definition: constitutive_law.h:189
Definition: solid_element.hpp:83
void SetShapeFunctionsGradients(const GeometryType::ShapeFunctionsGradientsType &rDN_De)
Definition: solid_element.hpp:126
void SetShapeFunctions(const Matrix &rNcontainer)
Definition: solid_element.hpp:131
double ReferenceRadius
Definition: solid_element.hpp:100
Matrix DN_DX
Definition: solid_element.hpp:114
double detH
Definition: solid_element.hpp:105
double Tau
Definition: solid_element.hpp:95
Vector StrainVector
Definition: solid_element.hpp:107
GeometryType::JacobiansType j
Definition: solid_element.hpp:119
const GeometryType::ShapeFunctionsGradientsType & GetShapeFunctionsGradients()
Definition: solid_element.hpp:146
double detJ
Definition: solid_element.hpp:106
Matrix DeltaPosition
Definition: solid_element.hpp:120
Matrix ConstitutiveMatrix
Definition: solid_element.hpp:115
double detF
Definition: solid_element.hpp:103
Matrix F0
Definition: solid_element.hpp:113
const ProcessInfo & GetProcessInfo()
Definition: solid_element.hpp:156
void SetProcessInfo(const ProcessInfo &rProcessInfo)
Definition: solid_element.hpp:136
double IntegrationWeight
Definition: solid_element.hpp:96
Matrix F
Definition: solid_element.hpp:112
Matrix H
Definition: solid_element.hpp:111
Matrix B
Definition: solid_element.hpp:110
const Matrix & GetShapeFunctions()
Definition: solid_element.hpp:151
void Initialize(const unsigned int &voigt_size, const unsigned int &dimension, const unsigned int &number_of_nodes)
Definition: solid_element.hpp:161
double CurrentRadius
Definition: solid_element.hpp:99
double detF0
Definition: solid_element.hpp:104
Vector N
Definition: solid_element.hpp:109
StressMeasureType StressMeasure
Definition: solid_element.hpp:93
GeometryType::JacobiansType J
Definition: solid_element.hpp:118
Vector StressVector
Definition: solid_element.hpp:108
Definition: solid_element.hpp:233
void SetRightHandSideVector(VectorType &rRightHandSideVector)
Definition: solid_element.hpp:251
Flags CalculationFlags
Definition: solid_element.hpp:243
MatrixType & GetLeftHandSideMatrix()
Definition: solid_element.hpp:258
VectorType & GetRightHandSideVector()
Definition: solid_element.hpp:260
void SetLeftHandSideMatrix(MatrixType &rLeftHandSideMatrix)
Definition: solid_element.hpp:249