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.
solid_element.hpp
Go to the documentation of this file.
1 //
2 // Project Name: KratosSolidMechanicsApplication $
3 // Created by: $Author: JMCarbonell $
4 // Last modified by: $Co-Author: $
5 // Date: $Date: July 2013 $
6 // Revision: $Revision: 0.0 $
7 //
8 //
9 
10 #if !defined(KRATOS_SOLID_ELEMENT_H_INCLUDED)
11 #define KRATOS_SOLID_ELEMENT_H_INCLUDED
12 
13 // System includes
14 
15 // External includes
16 
17 // Project includes
18 #include "includes/kratos_flags.h"
19 #include "includes/checks.h"
20 #include "includes/element.h"
21 #include "custom_utilities/element_utilities.hpp"
22 
23 
24 namespace Kratos
25 {
40 
42 
48 class KRATOS_API(SOLID_MECHANICS_APPLICATION) SolidElement
49  : public Element
50 {
51 public:
52 
58  typedef ConstitutiveLawType::Pointer ConstitutiveLawPointerType;
65 
68 
69 protected:
70 
75  KRATOS_DEFINE_LOCAL_FLAG( COMPUTE_RHS_VECTOR );
76  KRATOS_DEFINE_LOCAL_FLAG( COMPUTE_LHS_MATRIX );
77  KRATOS_DEFINE_LOCAL_FLAG( FINALIZED_STEP );
78 
83  struct ElementData
84  {
85  private:
86 
87  //variables including all integration points
89  const Matrix* pNcontainer;
90  const ProcessInfo* pProcessInfo;
91 
92  public:
93 
94  StressMeasureType StressMeasure;
95 
96  double Tau;
97  double IntegrationWeight;
98 
99  //for axisymmetric use only
100  double CurrentRadius;
101  double ReferenceRadius;
102 
103  //general variables for large displacement use
104  double detF;
105  double detF0;
106  double detH; //Wildcard ( detF(0 to n+1) )
107  double detJ;
108  Vector StrainVector;
109  Vector StressVector;
110  Vector N;
111  Matrix B;
112  Matrix H; //Wildcard ( Displacement Gradient, F(0 to n+1), B-bar, Velocity Gradient...)
113  Matrix F; //Incremental Deformation Gradient (n to n+1)
114  Matrix F0; //Historical Deformation Gradient (0 to n)
115  Matrix DN_DX;
116  Matrix ConstitutiveMatrix;
117 
118  //variables including all integration points
121  Matrix DeltaPosition;
122 
123 
128  {
129  pDN_De=&rDN_De;
130  };
131 
132  void SetShapeFunctions(const Matrix& rNcontainer)
133  {
134  pNcontainer=&rNcontainer;
135  };
136 
137  void SetProcessInfo(const ProcessInfo& rProcessInfo)
138  {
139  pProcessInfo=&rProcessInfo;
140  };
141 
142 
143 
148  {
149  return *pDN_De;
150  };
151 
153  {
154  return *pNcontainer;
155  };
156 
158  {
159  return *pProcessInfo;
160  };
161 
162  void Initialize( const unsigned int& voigt_size,
163  const unsigned int& dimension,
164  const unsigned int& number_of_nodes )
165  {
166  StressMeasure = ConstitutiveLaw::StressMeasure_PK2;
167 
168  //stabilization
169  Tau = 0;
170 
171  //time step
172  IntegrationWeight = 1;
173 
174  //radius
175  CurrentRadius = 0;
176  ReferenceRadius = 0;
177 
178  //jacobians
179  detF = 1;
180  detF0 = 1;
181  detH = 1;
182  detJ = 1;
183 
184  //vectors
185  StrainVector.resize(voigt_size,false);
186  StressVector.resize(voigt_size,false);
187  N.resize(number_of_nodes,false);
188  noalias(StrainVector) = ZeroVector(voigt_size);
189  noalias(StressVector) = ZeroVector(voigt_size);
190  noalias(N) = ZeroVector(number_of_nodes);
191 
192  //matrices
193  B.resize(voigt_size, dimension*number_of_nodes,false);
194  H.resize(dimension,dimension,false);
195  F.resize(dimension,dimension,false);
196  F0.resize(dimension,dimension,false);
197  DN_DX.resize(number_of_nodes, dimension,false);
198  ConstitutiveMatrix.resize(voigt_size, voigt_size,false);
199  DeltaPosition.resize(number_of_nodes, dimension,false);
200 
201  noalias(B) = ZeroMatrix(voigt_size, dimension*number_of_nodes);
205  noalias(DN_DX) = ZeroMatrix(number_of_nodes, dimension);
206  noalias(ConstitutiveMatrix) = ZeroMatrix(voigt_size, voigt_size);
207  noalias(DeltaPosition) = ZeroMatrix(number_of_nodes, dimension);
208 
209  //others
210  J.resize(1,false);
211  j.resize(1,false);
212  J[0].resize(dimension,dimension,false);
213  j[0].resize(dimension,dimension,false);
216 
217  //pointers
218  pDN_De = NULL;
219  pNcontainer = NULL;
220  pProcessInfo = NULL;
221  }
222 
223  };
224 
225 
233  struct LocalSystemComponents
234  {
235  private:
236 
237  //for calculation local system with compacted LHS and RHS
238  MatrixType *mpLeftHandSideMatrix;
239  VectorType *mpRightHandSideVector;
240 
241  public:
242 
243  //calculation flags
244  Flags CalculationFlags;
245 
249  void SetLeftHandSideMatrix( MatrixType& rLeftHandSideMatrix ) { mpLeftHandSideMatrix = &rLeftHandSideMatrix; };
250 
251  void SetRightHandSideVector( VectorType& rRightHandSideVector ) { mpRightHandSideVector = &rRightHandSideVector; };
252 
253 
257  MatrixType& GetLeftHandSideMatrix() { return *mpLeftHandSideMatrix; };
258 
259  VectorType& GetRightHandSideVector() { return *mpRightHandSideVector; };
260 
261  };
262 
263 
264 public:
265 
266 
269 
273 
276 
278  SolidElement(IndexType NewId, GeometryType::Pointer pGeometry);
279 
280  SolidElement(IndexType NewId, GeometryType::Pointer pGeometry, PropertiesType::Pointer pProperties);
281 
283  SolidElement(SolidElement const& rOther);
284 
286  ~SolidElement() override;
287 
291 
294 
298 
306  Element::Pointer Create(IndexType NewId, NodesArrayType const& ThisNodes, PropertiesType::Pointer pProperties) const override;
307 
315  Element::Pointer Clone(IndexType NewId, NodesArrayType const& ThisNodes) const override;
316 
317 
318  //************* GETTING METHODS
319 
325 
329  void GetDofList(DofsVectorType& rElementalDofList, const ProcessInfo& rCurrentProcessInfo) const override;
330 
334  void EquationIdVector(EquationIdVectorType& rResult, const ProcessInfo& rCurrentProcessInfo) const override;
335 
339  void GetValuesVector(Vector& rValues, int Step = 0) const override;
340 
344  void GetFirstDerivativesVector(Vector& rValues, int Step = 0) const override;
345 
349  void GetSecondDerivativesVector(Vector& rValues, int Step = 0) const override;
350 
351 
352 
353  //on integration points:
365  //SET
369  void SetValuesOnIntegrationPoints(const Variable<double>& rVariable, const std::vector<double>& rValues, const ProcessInfo& rCurrentProcessInfo) override;
370 
374  void SetValuesOnIntegrationPoints(const Variable<Vector>& rVariable, const std::vector<Vector>& rValues, const ProcessInfo& rCurrentProcessInfo) override;
375 
379  void SetValuesOnIntegrationPoints(const Variable<Matrix>& rVariable, const std::vector<Matrix>& rValues, const ProcessInfo& rCurrentProcessInfo) override;
380 
385  const std::vector<ConstitutiveLaw::Pointer>& rValues,
386  const ProcessInfo& rCurrentProcessInfo ) override;
387 
388 
389  //GET:
390 
395  std::vector<ConstitutiveLaw::Pointer>& rValues,
396  const ProcessInfo& rCurrentProcessInfo ) override;
397 
398 
399 
400  //************* STARTING - ENDING METHODS
401 
406  void Initialize(const ProcessInfo& rCurrentProcessInfo) override;
407 
411  void InitializeSolutionStep(const ProcessInfo& rCurrentProcessInfo) override;
412 
416  void InitializeNonLinearIteration(const ProcessInfo& rCurrentProcessInfo) override;
417 
421  void FinalizeNonLinearIteration(const ProcessInfo& rCurrentProcessInfo) override;
422 
426  void FinalizeSolutionStep(const ProcessInfo& rCurrentProcessInfo) override;
427 
428 
429  //************* COMPUTING METHODS
430 
431 
441  void CalculateLocalSystem(MatrixType& rLeftHandSideMatrix,
442  VectorType& rRightHandSideVector,
443  const ProcessInfo& rCurrentProcessInfo) override;
444 
445 
452  void CalculateRightHandSide(VectorType& rRightHandSideVector,
453  const ProcessInfo& rCurrentProcessInfo) override;
454 
455 
462  void CalculateLeftHandSide (MatrixType& rLeftHandSideMatrix,
463  const ProcessInfo& rCurrentProcessInfo) override;
464 
473  VectorType& rRightHandSideVector,
474  const ProcessInfo& rCurrentProcessInfo) override;
475 
484  VectorType& rRightHandSideVector,
485  const ProcessInfo& rCurrentProcessInfo) override;
486 
493  void CalculateSecondDerivativesLHS(MatrixType& rLeftHandSideMatrix,
494  const ProcessInfo& rCurrentProcessInfo) override;
495 
496 
503  void CalculateSecondDerivativesRHS(VectorType& rRightHandSideVector,
504  const ProcessInfo& rCurrentProcessInfo) override;
505 
512  void CalculateMassMatrix(MatrixType& rMassMatrix,
513  const ProcessInfo& rCurrentProcessInfo) override;
514 
521  void CalculateDampingMatrix(MatrixType& rDampingMatrix,
522  const ProcessInfo& rCurrentProcessInfo) override;
523 
524 
534  void AddExplicitContribution(const VectorType& rRHSVector,
535  const Variable<VectorType>& rRHSVariable,
536  const Variable<array_1d<double,3> >& rDestinationVariable,
537  const ProcessInfo& rCurrentProcessInfo) override;
538 
539  //on integration points:
543  void CalculateOnIntegrationPoints(const Variable<double>& rVariable, std::vector<double>& rOutput, const ProcessInfo& rCurrentProcessInfo) override;
544 
548  void CalculateOnIntegrationPoints(const Variable<Vector>& rVariable, std::vector<Vector>& rOutput, const ProcessInfo& rCurrentProcessInfo) override;
549 
553  void CalculateOnIntegrationPoints(const Variable<Matrix >& rVariable, std::vector< Matrix >& rOutput, const ProcessInfo& rCurrentProcessInfo) override;
554 
555 
556  //************************************************************************************
557  //************************************************************************************
565  int Check(const ProcessInfo& rCurrentProcessInfo) const override;
566 
570 
578  std::string Info() const override
579  {
580  std::stringstream buffer;
581  buffer << "Large Displacement Element #" << Id();
582  return buffer.str();
583  }
584 
586  void PrintInfo(std::ostream& rOStream) const override
587  {
588  rOStream << "Large Displacement Element #" << Id();
589  }
590 
592  void PrintData(std::ostream& rOStream) const override
593  {
594  GetGeometry().PrintData(rOStream);
595  }
600 
601 protected:
607 
611  IntegrationMethod mThisIntegrationMethod;
612 
616  std::vector<ConstitutiveLaw::Pointer> mConstitutiveLawVector;
617 
618 
622 
623  //constexpr const std::size_t& Dimension() const {return GetGeometry().WorkingSpaceDimension();}
624 
628 
632  void IncreaseIntegrationMethod(IntegrationMethod& rThisIntegrationMethod,
633  unsigned int increment) const;
634 
639  const ProcessInfo& rCurrentProcessInfo);
640 
644  virtual void CalculateDynamicSystem(LocalSystemComponents& rLocalSystem,
645  const ProcessInfo& rCurrentProcessInfo);
646 
651 
652 
656  void CalculatePerturbedLeftHandSide (MatrixType& rLeftHandSideMatrix,
657  const ProcessInfo& rCurrentProcessInfo);
658 
663  virtual void CalculateAndAddLHS(LocalSystemComponents& rLocalSystem,
664  ElementDataType& rVariables,
665  double& rIntegrationWeight);
666 
671  virtual void CalculateAndAddRHS(LocalSystemComponents& rLocalSystem,
672  ElementDataType& rVariables,
673  Vector& rVolumeForce,
674  double& rIntegrationWeight);
675 
676 
677 
682  virtual void CalculateAndAddDynamicLHS(MatrixType& rLeftHandSideMatrix,
683  ElementDataType& rVariables,
684  const ProcessInfo& rCurrentProcessInfo,
685  double& rIntegrationWeight);
686 
691  virtual void CalculateAndAddDynamicRHS(VectorType& rRightHandSideVector,
692  ElementDataType& rVariables,
693  const ProcessInfo& rCurrentProcessInfo,
694  double& rIntegrationWeight);
695 
696 
697 
702  virtual void CalculateAndAddKuum(MatrixType& rLeftHandSideMatrix,
703  ElementDataType& rVariables,
704  double& rIntegrationWeight);
705 
709  virtual void CalculateAndAddKuug(MatrixType& rLeftHandSideMatrix,
710  ElementDataType& rVariables,
711  double& rIntegrationWeight);
712 
713 
717  virtual void CalculateAndAddExternalForces(VectorType& rRightHandSideVector,
718  ElementDataType& rVariables,
719  Vector& rVolumeForce,
720  double& rIntegrationWeight);
721 
722 
726  virtual void CalculateAndAddInternalForces(VectorType& rRightHandSideVector,
727  ElementDataType & rVariables,
728  double& rIntegrationWeight);
729 
730 
734  virtual void SetElementData(ElementDataType& rVariables,
736  const int & rPointNumber);
737 
741  virtual void CalculateMaterialResponse(ElementDataType& rVariables,
743  const int & rPointNumber);
747  virtual SizeType GetDofsSize() const;
748 
749 
753  bool IsSliver()
754  {
755  if( this->IsDefined(SELECTED) )
756  return this->Is(SELECTED);
757  else
758  return false;
759  }
760 
764  virtual void InitializeSystemMatrices(MatrixType& rLeftHandSideMatrix,
765  VectorType& rRightHandSideVector,
766  Flags& rCalculationFlags);
767 
768 
769 
774 
775 
779  void ResetConstitutiveLaw() override;
780 
781 
786 
787 
791  virtual void CalculateKinematics(ElementDataType& rVariables,
792  const double& rPointNumber);
793 
797  virtual void CalculateKinetics(ElementDataType& rVariables,
798  const double& rPointNumber);
799 
803  virtual void InitializeElementData(ElementDataType & rVariables,
804  const ProcessInfo& rCurrentProcessInfo);
805 
809  virtual void TransformElementData(ElementDataType & rVariables,
810  const double& rPointNumber);
811 
815  virtual void FinalizeStepVariables(ElementDataType & rVariables,
816  const double& rPointNumber);
817 
818 
822  virtual double& CalculateIntegrationWeight(double& rIntegrationWeight);
823 
824 
828  virtual double& CalculateTotalMass(double& rTotalMass, const ProcessInfo& rCurrentProcessInfo);
829 
833  virtual Matrix& CalculateDeltaPosition(Matrix & rDeltaPosition);
834 
838  virtual Matrix& CalculateTotalDeltaPosition(Matrix & rDeltaPosition);
839 
840 
844  virtual double& CalculateVolumeChange(double& rVolumeChange, ElementDataType& rVariables);
845 
849  virtual Vector& CalculateVolumeForce(Vector& rVolumeForce, ElementDataType& rVariables);
850 
851 
862 
863 private:
864 
870 
871 
875 
876 
880 
881 
886 
890  friend class Serializer;
891 
892  // A private default constructor necessary for serialization
893 
894  void save(Serializer& rSerializer) const override;
895 
896  void load(Serializer& rSerializer) override;
897 
898 
905 
906 }; // Class SolidElement
907 
915 
916 } // namespace Kratos.
917 #endif // KRATOS_SOLID_ELEMENT_H_INCLUDED defined
Definition: constitutive_law.h:47
StressMeasure
Definition: constitutive_law.h:69
@ StressMeasure_PK2
Definition: constitutive_law.h:71
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
Definition: flags.h:58
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:268
void InitializeConstitutiveLaw()
void CalculateLeftHandSide(MatrixType &rLeftHandSideMatrix, const ProcessInfo &rCurrentProcessInfo) override
Element::Pointer Clone(IndexType NewId, NodesArrayType const &ThisNodes) const override
void CalculateSecondDerivativesRHS(VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo) override
void FinalizeSolutionStep(const ProcessInfo &rCurrentProcessInfo) override
KRATOS_DEFINE_LOCAL_FLAG(COMPUTE_RHS_VECTOR)
void CalculateOnIntegrationPoints(const Variable< Vector > &rVariable, std::vector< Vector > &rOutput, const ProcessInfo &rCurrentProcessInfo) override
virtual void CalculateKinematics(ElementDataType &rVariables, const double &rPointNumber)
virtual void CalculateAndAddDynamicLHS(MatrixType &rLeftHandSideMatrix, ElementDataType &rVariables, const ProcessInfo &rCurrentProcessInfo, double &rIntegrationWeight)
virtual void CalculateAndAddDynamicRHS(VectorType &rRightHandSideVector, ElementDataType &rVariables, const ProcessInfo &rCurrentProcessInfo, double &rIntegrationWeight)
virtual void InitializeSystemMatrices(MatrixType &rLeftHandSideMatrix, VectorType &rRightHandSideVector, Flags &rCalculationFlags)
void SetValuesOnIntegrationPoints(const Variable< Vector > &rVariable, const std::vector< Vector > &rValues, const ProcessInfo &rCurrentProcessInfo) override
virtual void CalculateAndAddLHS(LocalSystemComponents &rLocalSystem, ElementDataType &rVariables, double &rIntegrationWeight)
virtual void CalculateAndAddInternalForces(VectorType &rRightHandSideVector, ElementDataType &rVariables, double &rIntegrationWeight)
void InitializeNonLinearIteration(const ProcessInfo &rCurrentProcessInfo) override
void ResetConstitutiveLaw() override
void CalculateOnIntegrationPoints(const Variable< double > &rVariable, std::vector< double > &rOutput, const ProcessInfo &rCurrentProcessInfo) override
std::string Info() const override
Turn back information as a string.
Definition: solid_element.hpp:578
void IncreaseIntegrationMethod(IntegrationMethod &rThisIntegrationMethod, unsigned int increment) const
KRATOS_DEFINE_LOCAL_FLAG(FINALIZED_STEP)
virtual double & CalculateTotalMass(double &rTotalMass, const ProcessInfo &rCurrentProcessInfo)
virtual void CalculateElementalSystem(LocalSystemComponents &rLocalSystem, const ProcessInfo &rCurrentProcessInfo)
void PrintData(std::ostream &rOStream) const override
Print object's data.
Definition: solid_element.hpp:592
virtual double & CalculateIntegrationWeight(double &rIntegrationWeight)
void CalculateFirstDerivativesContributions(MatrixType &rLeftHandSideMatrix, VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo) override
bool IsSliver()
Definition: solid_element.hpp:753
void GetSecondDerivativesVector(Vector &rValues, int Step=0) const override
virtual Matrix & CalculateTotalDeltaPosition(Matrix &rDeltaPosition)
virtual void FinalizeStepVariables(ElementDataType &rVariables, const double &rPointNumber)
ConstitutiveLaw ConstitutiveLawType
Definition: solid_element.hpp:56
void EquationIdVector(EquationIdVectorType &rResult, const ProcessInfo &rCurrentProcessInfo) const override
void AddExplicitContribution(const VectorType &rRHSVector, const Variable< VectorType > &rRHSVariable, const Variable< array_1d< double, 3 > > &rDestinationVariable, const ProcessInfo &rCurrentProcessInfo) override
void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
Definition: solid_element.hpp:586
SolidElement()
Empty constructor needed for serialization.
GeometryData::SizeType SizeType
Type for size.
Definition: solid_element.hpp:64
GeometryData::IntegrationMethod IntegrationMethod
Type definition for integration methods.
Definition: solid_element.hpp:62
virtual void CalculateAndAddExternalForces(VectorType &rRightHandSideVector, ElementDataType &rVariables, Vector &rVolumeForce, double &rIntegrationWeight)
Element::Pointer Create(IndexType NewId, NodesArrayType const &ThisNodes, PropertiesType::Pointer pProperties) const override
virtual Matrix & CalculateDeltaPosition(Matrix &rDeltaPosition)
void CalculateMassMatrix(MatrixType &rMassMatrix, const ProcessInfo &rCurrentProcessInfo) override
ConstitutiveLawType::Pointer ConstitutiveLawPointerType
Pointer type for constitutive laws.
Definition: solid_element.hpp:58
int Check(const ProcessInfo &rCurrentProcessInfo) const override
virtual void InitializeElementData(ElementDataType &rVariables, const ProcessInfo &rCurrentProcessInfo)
IntegrationMethod GetIntegrationMethod() const override
void SetValuesOnIntegrationPoints(const Variable< Matrix > &rVariable, const std::vector< Matrix > &rValues, const ProcessInfo &rCurrentProcessInfo) override
void CalculateDampingMatrix(MatrixType &rDampingMatrix, const ProcessInfo &rCurrentProcessInfo) override
void FinalizeNonLinearIteration(const ProcessInfo &rCurrentProcessInfo) override
~SolidElement() override
Destructor.
void CalculateOnIntegrationPoints(const Variable< Matrix > &rVariable, std::vector< Matrix > &rOutput, const ProcessInfo &rCurrentProcessInfo) override
virtual void CalculateMaterialResponse(ElementDataType &rVariables, ConstitutiveLaw::Parameters &rValues, const int &rPointNumber)
void Initialize(const ProcessInfo &rCurrentProcessInfo) override
void GetValuesVector(Vector &rValues, int Step=0) const override
SolidElement(SolidElement const &rOther)
Copy constructor.
virtual void TransformElementData(ElementDataType &rVariables, const double &rPointNumber)
void PrintElementCalculation(LocalSystemComponents &rLocalSystem, ElementDataType &rVariables)
void SetValuesOnIntegrationPoints(const Variable< ConstitutiveLaw::Pointer > &rVariable, const std::vector< ConstitutiveLaw::Pointer > &rValues, const ProcessInfo &rCurrentProcessInfo) override
void CalculateSecondDerivativesLHS(MatrixType &rLeftHandSideMatrix, const ProcessInfo &rCurrentProcessInfo) override
void SetValuesOnIntegrationPoints(const Variable< double > &rVariable, const std::vector< double > &rValues, const ProcessInfo &rCurrentProcessInfo) override
void InitializeSolutionStep(const ProcessInfo &rCurrentProcessInfo) override
void CalculatePerturbedLeftHandSide(MatrixType &rLeftHandSideMatrix, const ProcessInfo &rCurrentProcessInfo)
SolidElement(IndexType NewId, GeometryType::Pointer pGeometry)
Default constructors.
void CalculateSecondDerivativesContributions(MatrixType &rLeftHandSideMatrix, VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo) override
virtual void CalculateAndAddRHS(LocalSystemComponents &rLocalSystem, ElementDataType &rVariables, Vector &rVolumeForce, double &rIntegrationWeight)
SolidElement(IndexType NewId, GeometryType::Pointer pGeometry, PropertiesType::Pointer pProperties)
void InitializeExplicitContributions()
virtual void CalculateKinetics(ElementDataType &rVariables, const double &rPointNumber)
virtual void SetElementData(ElementDataType &rVariables, ConstitutiveLaw::Parameters &rValues, const int &rPointNumber)
KRATOS_CLASS_INTRUSIVE_POINTER_DEFINITION(SolidElement)
Counted pointer of SolidElement.
virtual void CalculateAndAddKuug(MatrixType &rLeftHandSideMatrix, ElementDataType &rVariables, double &rIntegrationWeight)
void CalculateRightHandSide(VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo) override
virtual void CalculateAndAddKuum(MatrixType &rLeftHandSideMatrix, ElementDataType &rVariables, double &rIntegrationWeight)
ConstitutiveLawType::StressMeasure StressMeasureType
StressMeasure from constitutive laws.
Definition: solid_element.hpp:60
void GetDofList(DofsVectorType &rElementalDofList, const ProcessInfo &rCurrentProcessInfo) const override
virtual double & CalculateVolumeChange(double &rVolumeChange, ElementDataType &rVariables)
virtual void CalculateDynamicSystem(LocalSystemComponents &rLocalSystem, const ProcessInfo &rCurrentProcessInfo)
virtual Vector & CalculateVolumeForce(Vector &rVolumeForce, ElementDataType &rVariables)
virtual SizeType GetDofsSize() const
void GetFirstDerivativesVector(Vector &rValues, int Step=0) const override
SolidElement & operator=(SolidElement const &rOther)
Assignment operator.
void CalculateLocalSystem(MatrixType &rLeftHandSideMatrix, VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo) override
Matrix MatrixType
Definition: geometrical_transformation_utilities.h:55
pybind11::list CalculateOnIntegrationPoints(TObject &dummy, const Variable< TDataType > &rVariable, const ProcessInfo &rProcessInfo)
Definition: add_mesh_to_python.cpp:142
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:127
void SetShapeFunctions(const Matrix &rNcontainer)
Definition: solid_element.hpp:132
const GeometryType::ShapeFunctionsGradientsType & GetShapeFunctionsGradients()
Definition: solid_element.hpp:147
const ProcessInfo & GetProcessInfo()
Definition: solid_element.hpp:157
void SetProcessInfo(const ProcessInfo &rProcessInfo)
Definition: solid_element.hpp:137
const Matrix & GetShapeFunctions()
Definition: solid_element.hpp:152
void Initialize(const unsigned int &voigt_size, const unsigned int &dimension, const unsigned int &number_of_nodes)
Definition: solid_element.hpp:162
Definition: solid_element.hpp:233
void SetRightHandSideVector(VectorType &rRightHandSideVector)
Definition: solid_element.hpp:251
MatrixType & GetLeftHandSideMatrix()
Definition: solid_element.hpp:257
VectorType & GetRightHandSideVector()
Definition: solid_element.hpp:259
void SetLeftHandSideMatrix(MatrixType &rLeftHandSideMatrix)
Definition: solid_element.hpp:249