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.
shell_5p_hierarchic_element.h
Go to the documentation of this file.
1 #if !defined(KRATOS_SHELL_5p_HIERARCHIC_ELEMENT_H_INCLUDED)
2 #define KRATOS_SHELL_5p_HIERARCHIC_ELEMENT_H_INCLUDED
3 
4 
5 // System includes
6 #include "includes/variables.h"
7 #include "includes/element.h"
8 
9 // External includes
10 
11 // Project includes
12 
13 // Application includes
15 
16 namespace Kratos
17 {
21 /* Isogeometric hierarchic Reissner-Mindlin shell element parameterized by 5 parameters (5p). */
23  : public Element
24 {
25 public:
28 
31 
35 
37  Shell5pHierarchicElement(IndexType NewId, GeometryType::Pointer pGeometry)
38  : Element(NewId, pGeometry)
39  {};
40 
42  Shell5pHierarchicElement(IndexType NewId, GeometryType::Pointer pGeometry, PropertiesType::Pointer pProperties)
43  : Element(NewId, pGeometry, pProperties)
44  {};
45 
48 
50  virtual ~Shell5pHierarchicElement() override
51  {};
52 
56 
58  Element::Pointer Create(
59  IndexType NewId,
60  GeometryType::Pointer pGeom,
61  PropertiesType::Pointer pProperties
62  ) const override
63  {
64  return Kratos::make_intrusive<Shell5pHierarchicElement>(
65  NewId, pGeom, pProperties);
66  };
67 
69  Element::Pointer Create(
70  IndexType NewId,
71  NodesArrayType const& ThisNodes,
72  PropertiesType::Pointer pProperties
73  ) const override
74  {
75  KRATOS_ERROR << "Can not construct Shell5pHierarchicElement with NodesArrayType, because "
76  << "it is based on high order background with QuadraturePointGeometries. "
77  << "QuadraturePointGeometries would loose their evaluated shape function within this constructor."
78  << std::endl;
79  };
80 
84 
85  /* Called to initialize the element.
86  * Must be called before any calculation is done
87  */
88  void Initialize(
89  const ProcessInfo& rCurrentProcessInfo) override;
90 
99  void CalculateAll(
100  MatrixType& rLeftHandSideMatrix,
101  VectorType& rRightHandSideVector,
102  const ProcessInfo& rCurrentProcessInfo,
103  const bool CalculateStiffnessMatrixFlag,
104  const bool CalculateResidualVectorFlag
105  );
106 
108  void EquationIdVector(
109  EquationIdVectorType& rResult,
110  const ProcessInfo& rCurrentProcessInfo
111  ) const override;
112 
114  void GetDofList(
115  DofsVectorType& rElementalDofList,
116  const ProcessInfo& rCurrentProcessInfo
117  ) const override;
118 
121  VectorType& rRightHandSideVector,
122  const ProcessInfo& rCurrentProcessInfo
123  ) override
124  {
125  // Calculation flags
126  const bool CalculateStiffnessMatrixFlag = false;
127  const bool CalculateResidualVectorFlag = true;
128  MatrixType temp = Matrix();
129 
130  SizeType number_of_control_points = GetGeometry().size();
131  SizeType mat_size = number_of_control_points * 5;
132 
133  //resizing as needed the RHS
134  if (rRightHandSideVector.size() != mat_size)
135  rRightHandSideVector.resize(mat_size);
136  rRightHandSideVector = ZeroVector(mat_size);
137 
138  CalculateAll(temp, rRightHandSideVector, rCurrentProcessInfo, CalculateStiffnessMatrixFlag, CalculateResidualVectorFlag);
139  }
140 
142  void CalculateLeftHandSide(MatrixType& rLeftHandSideMatrix,
143  const ProcessInfo& rCurrentProcessInfo) override
144  {
145  // Calculation flags
146  const bool CalculateStiffnessMatrixFlag = true;
147  const bool CalculateResidualVectorFlag = false;
148  VectorType temp = Vector();
149 
150  SizeType number_of_control_points = GetGeometry().size();
151  SizeType mat_size = number_of_control_points * 5;
152 
153  //resizing as needed the LHS
154  if (rLeftHandSideMatrix.size1() != mat_size || rLeftHandSideMatrix.size2() != mat_size)
155  rLeftHandSideMatrix.resize(mat_size, mat_size);
156  noalias(rLeftHandSideMatrix) = ZeroMatrix(mat_size, mat_size);
157 
158  CalculateAll(rLeftHandSideMatrix, temp, rCurrentProcessInfo, CalculateStiffnessMatrixFlag, CalculateResidualVectorFlag);
159  }
160 
163  MatrixType& rLeftHandSideMatrix,
164  VectorType& rRightHandSideVector,
165  const ProcessInfo& rCurrentProcessInfo
166  ) override
167  {
168  //calculation flags
169  const bool CalculateStiffnessMatrixFlag = true;
170  const bool CalculateResidualVectorFlag = true;
171 
172  SizeType number_of_control_points = GetGeometry().size();
173  SizeType mat_size = number_of_control_points * 5;
174 
175  //resizing as needed the LHS
176  if (rLeftHandSideMatrix.size1() != mat_size || rLeftHandSideMatrix.size2() != mat_size)
177  rLeftHandSideMatrix.resize(mat_size, mat_size);
178  noalias(rLeftHandSideMatrix) = ZeroMatrix(mat_size, mat_size);
179 
180  //resizing as needed the RHS
181  if (rRightHandSideVector.size() != mat_size)
182  rRightHandSideVector.resize(mat_size);
183  rRightHandSideVector = ZeroVector(mat_size);
184 
185  CalculateAll(rLeftHandSideMatrix, rRightHandSideVector, rCurrentProcessInfo, CalculateStiffnessMatrixFlag, CalculateResidualVectorFlag);
186  }
187 
190  const Variable<double>& rVariable,
191  std::vector<double>& rOutput,
192  const ProcessInfo& rCurrentProcessInfo
193  ) override;
194 
202  int Check(
203  const ProcessInfo& rCurrentProcessInfo) const override;
204 
205  std::string Info() const override
206  {
207  std::stringstream buffer;
208  buffer << "Hierarchic 5p Shell #" << Id();
209  return buffer.str();
210  }
211 
213  void PrintInfo(std::ostream& rOStream) const override
214  {
215  rOStream << "Hierarchic 5p Shell #" << Id();
216 
217  }
218 
220 
221 private:
224 
226  std::vector<ConstitutiveLaw::Pointer> mConstitutiveLawVector;
227 
228  // curvilinear coordinate zeta (theta3)
229  double mZeta;
230 
231  // transformation matrix from contravariant curvilinear base to local Cartesian base both in the initial configuration
232  Matrix mInitialTransConToCar;
233 
235  struct MetricVariables
236  {
237  Vector a_ab; // covariant metric
238  Vector a_ab_con; // contravariant metric
239  Vector curvature; //
240  Matrix J; //Jacobian
241  Vector a1; //base vector 1
242  Vector a2; //base vector 2
243  Vector a3_kirchhoff_love; //base vector 3
244  Vector a3_kirchhoff_love_tilde; // unnormalized base vector 3, in Kiendl (2011) a_3_tilde
245  double dA; //differential area
246  Vector a1_con; // contravariant base vector 1
247  Vector a2_con; // contravariant base vector 2
248  Vector Da1_D1; // derivative of base vector 1 w.r.t. theta1
249  Vector Da1_D2; // derivative of base vector 1 w.r.t. theta2
250  Vector Da2_D2; // derivative of base vector 2 w.r.t. theta2
251  Matrix H; //Hessian (second derivative of cartesian coordinates w.r.t. curvilinear coordinates)
252 
253  /* The default constructor
254  * @param rWorkingSpaceDimension: The size of working space dimension
255  * @param rStrainSize: The size of the StrainVector
256  */
257  MetricVariables(const unsigned int& rWorkingSpaceDimension = 3, const unsigned int& rStrainSize = 5)
258  {
259  a_ab = ZeroVector(rWorkingSpaceDimension);
260  a_ab_con = ZeroVector(rWorkingSpaceDimension);
261 
262  curvature = ZeroVector(rWorkingSpaceDimension);
263 
264  J = ZeroMatrix(rWorkingSpaceDimension, 2);
265 
266  a1 = ZeroVector(rWorkingSpaceDimension);
267  a2 = ZeroVector(rWorkingSpaceDimension);
268  a3_kirchhoff_love = ZeroVector(rWorkingSpaceDimension);
269  a3_kirchhoff_love_tilde = ZeroVector(rWorkingSpaceDimension);
270 
271  dA = 1.0;
272 
273  a1_con = ZeroVector(rWorkingSpaceDimension);
274  a2_con = ZeroVector(rWorkingSpaceDimension);
275 
276  Da1_D1 = ZeroVector(rWorkingSpaceDimension);
277  Da1_D2 = ZeroVector(rWorkingSpaceDimension);
278  Da2_D2 = ZeroVector(rWorkingSpaceDimension);
279 
280  H = ZeroMatrix(rWorkingSpaceDimension, rWorkingSpaceDimension);
281  }
282  };
283 
285  struct ConstitutiveVariables
286  {
287  Vector E; //strain
288  Vector S; //stress
289  Matrix D; //constitutive matrix
290 
291  /* The default constructor
292  * @param StrainSize: The size of the strain vector in Voigt notation
293  */
294  ConstitutiveVariables(const unsigned int& rStrainSize)
295  {
296  E = ZeroVector(rStrainSize);
297  S = ZeroVector(rStrainSize);
298  D = ZeroMatrix(rStrainSize, rStrainSize);
299  }
300  };
301 
303  struct SecondVariations
304  {
305  Matrix B11;
306  Matrix B22;
307  Matrix B12;
308  Matrix B23;
309  Matrix B13;
310 
312  SecondVariations(const unsigned int& mat_size)
313  {
314  B11 = ZeroMatrix(mat_size, mat_size);
315  B22 = ZeroMatrix(mat_size, mat_size);
316  B12 = ZeroMatrix(mat_size, mat_size);
317  B23 = ZeroMatrix(mat_size, mat_size);
318  B13 = ZeroMatrix(mat_size, mat_size);
319  }
320 
322  SecondVariations operator+ (const SecondVariations& rSecondVariations)
323  {
324  KRATOS_TRY
325 
326  KRATOS_ERROR_IF(B11.size1() != rSecondVariations.B11.size1()) << "Addition of SecondVariations of different size." << std::endl;
327 
328  unsigned int mat_size = B11.size1();
329  SecondVariations second_variations(mat_size);
330  second_variations.B11 = B11 + rSecondVariations.B11;
331  second_variations.B22 = B22 + rSecondVariations.B22;
332  second_variations.B12 = B12 + rSecondVariations.B12;
333  second_variations.B23 = B23 + rSecondVariations.B23;
334  second_variations.B13 = B13 + rSecondVariations.B13;
335 
336  return second_variations;
337 
338  KRATOS_CATCH("")
339  }
340  };
341 
342  MetricVariables mInitialMetric = MetricVariables(3, 5);
343 
345  struct GaussQuadratureThickness
346  {
347  unsigned int num_GP_thickness;
348  Vector integration_weight_thickness;
349  Vector zeta;
350 
351  // The default constructor
352  GaussQuadratureThickness(){}
353  // constructor
354  GaussQuadratureThickness(const unsigned int& rNumGPThickness)
355  {
356  num_GP_thickness = rNumGPThickness;
357  integration_weight_thickness = ZeroVector(rNumGPThickness);
358  zeta = ZeroVector(rNumGPThickness);
359 
360  if (rNumGPThickness == 3)
361  {
362  integration_weight_thickness(0) = 5.0 / 9.0;
363  zeta(0) = -sqrt(3.0 / 5.0);
364  integration_weight_thickness(1) = 8.0/9.0;
365  zeta(1) = 0.0;
366  integration_weight_thickness(2) = 5.0 / 9.0;
367  zeta(2) = sqrt(3.0 / 5.0);
368  }
369  else
370  {
371  KRATOS_ERROR << "Desired number of Gauss-Points unlogical or not implemented. You can choose 3 Gauss-Points." << std::endl;
372  }
373 
374  }
375  };
376 
377  // here the number of Gauss-Points over the thickness is specified
378  GaussQuadratureThickness mGaussIntegrationThickness = GaussQuadratureThickness(3);
379 
383 
384  /* @brief Calculation of the Stiffness Matrix
385  * @detail Km = integration_weight * B^T * D *B
386  * @param B = B matrix
387  * @param D = material stiffness matrix
388  */
389  void CalculateAndAddKm(
390  MatrixType& rLeftHandSideMatrix,
391  const Matrix& B,
392  const Matrix& D,
393  const double& rIntegrationWeight );
394 
395  /* @brief The method calculates and adds the non-linear part of the stiffness matrix
396  * @param SD = stress
397  */
398  void CalculateAndAddNonlinearKm(
399  Matrix& rLeftHandSideMatrix,
400  const SecondVariations& SecondVariationsStrain,
401  const Vector& SD,
402  const double& rIntegrationWeight);
403 
405  void CalculateMetric( MetricVariables& rMetric);
406 
407  /* @brief The method calculates the transformation matrix from the contravariant to the local Cartesian base both in the initial configuration
408  * @param rG1_con = first initial contravariant base vector
409  * @param rG2_con = second initial contravariant base vector
410  */
411  void CalculateTransformationMatrixInitialTransConToCar(
412  const array_1d<double, 3>& rG1_con,
413  const array_1d<double, 3>& rG2_con);
414 
415  /* @brief The method calculates the transformation matrix from the local Cartesian to the covariant base both in the initial configuration
416  * @param rInitialTransCarToCov = transformation matrix from the local Cartesian to the covariant base both in the initial configuration
417  */
418  void CalculateTransformationMatrixInitialTransCarToCov(Matrix& rInitialTransCarToCov);
419 
420  /* @brief The method calculates the transformation matrix from the contravariant to the local Cartesian base both in the actual configuration
421  * @param rg1 = first actual covariant base vector
422  * @param rg2 = second actual covariant base vector
423  * @param rg3 = third actual covariant base vector
424  * @param ra2_con = second actual covariant base vector of the mid-surface
425  * @param ra3_kirchhoff_love = third actual covariant Kirchhoff-Love base vector of the mid-surface
426  */
427  void CalculateTransformationMatrixActualTransCovToCar(
428  Matrix& rActualTransCovToCar,
429  const Vector& rg1,
430  const Vector& rg2,
431  const Vector& rg3,
432  const Vector& ra2_con,
433  const Vector& ra3_kirchhoff_love);
434 
435  /* @brief Function determines the values of the shear dofs w_1 and w_2 and calculates the shear difference vector as well as the derivatives of itself and its components
436  * @detail Reissner-Mindlin shell with hierarchic rotations (Oesterle 2018)
437  * @param rw = shear difference vector
438  * @param rDw_D1 = derivative of the shear difference vector w.r.t. theta1
439  * @param rDw_D2 = derivative of the shear difference vector w.r.t. theta2
440  * @param rw_alpha = the components w_1 and w_2 of the shear difference vector (shear dofs)
441  * @param rDw_alpha_Dbeta = derivative of the components w_1 resp. w_2 w.r.t theta1 and theta2
442  */
443  void CalculateShearDifferenceVector(
444  array_1d<double, 3>& rw,
445  array_1d<double, 3>& rDw_D1,
446  array_1d<double, 3>& rDw_D2,
447  array_1d<double, 2>& rw_alpha,
448  Matrix& rDw_alpha_Dbeta,
449  const MetricVariables& rActualMetric,
450  IndexType IntegrationPointIndex = 0);
451 
452  /* @brief Calculation of the base vectors of the shell body (in contrast to the mid-surface) for the initial configuration
453  * @detail A linearized metric (g_alpha = a_alpha + zeta * Da3_Dalpha) is assumed. Base vector a refer to the mid-span and base vector g refer to the shell body.
454  * @param rG1 = first covariant base vector of the shell body in the initial configuration
455  * @param rG2 = second covariant base vector of the shell body in the initial configuration
456  * @param rG1_con = first contravariant base vector of the shell body in the initial configuration
457  * @param rG2_con = second contravariant base vector of the shell body in the initial configuration
458  */
459  void CalculateInitialBaseVectorsLinearised(
460  array_1d<double, 3>& rG1,
461  array_1d<double, 3>& rG2,
462  array_1d<double, 3>& rG1_con,
463  array_1d<double, 3>& rG2_con);
464 
465  /* @brief Calculation of the base vectors of the shell body (in contrast to the mid-surface) for the actual configuration
466  * @detail A linearized metric (g_alpha = a_alpha + zeta * Da3_Dalpha) is assumed.
467  * @param rw = shear difference vector
468  * @param rDw_D1 = derivative of the shear difference vector w.r.t. theta1
469  * @param rDw_D2 = derivative of the shear difference vector w.r.t. theta2
470  * @param rg1 = first covariant base vector of the shell body in the actual configuration
471  * @param rg2 = second covariant base vector of the shell body in the actual configuration
472  * @param rg3 = third covariant base vector of the shell body in the actual configuration
473  */
474  void CalculateActualBaseVectorsLinearised(
475  const MetricVariables& rActualMetric,
476  const Vector& rw,
477  const Vector& rDw_D1,
478  const Vector& rDw_D2,
479  array_1d<double, 3>& rg1,
480  array_1d<double, 3>& rg2,
481  array_1d<double, 3>& rg3);
482 
483  /* @brief Calculates deformation gradient F for a Gauss point
484  * @param rG1, rG2 = base vectors of the shell body of the reference configuration (G3=A3)
485  * @param rg1, rg2, rg3 = base vectors of the shell body of the actual configuration
486  * @param rF = deformation gradient
487  * @param rdetF = determinant of deformation gradient
488  */
489  void CalculateDeformationGradient(
490  const array_1d<double, 3> rG1,
491  const array_1d<double, 3> rG2,
492  const array_1d<double, 3> rg1,
493  const array_1d<double, 3> rg2,
494  const array_1d<double, 3> rg3,
495  Matrix& rF,
496  double& rdetF);
497 
498  /* @brief This functions updates the constitutive variables.
499  * @param rActualMetric = actual metric
500  * @param rw = shear difference vector
501  * @param rDw_D1 = derivative of shear difference vector w.r.t. theta1
502  * @param rDw_D2 = derivative of shear difference vector w.r.t. theta2
503  * @param rThisConstitutiveVariables = The constitutive variables to be calculated
504  * @param rValues = The constitutive law parameters
505  * @param ThisStressMeasure = The stress measure considered
506  */
507  void CalculateConstitutiveVariables(
508  const MetricVariables& rActualMetric,
509  const Vector& rw,
510  const Vector& rDw_D1,
511  const Vector& rDw_D2,
512  ConstitutiveVariables& rThisConstitutiveVariables,
513  ConstitutiveLaw::Parameters& rValues,
514  const ConstitutiveLaw::StressMeasure ThisStressMeasure);
515 
516  /* @brief This method calculates the strain according to the Kirchhoff-Love theory
517  * @param ra_ab = covariant metric
518  */
519  void CalculateStrain(
520  array_1d<double, 5>& rStrainVector,
521  const Vector& ra_ab,
522  const Vector& rCurvature);
523 
524  /* @brief This method calculates the additional strain components according to the Reissner-Mindlin theory
525  * @param rw = shear difference vector
526  * @param rDw_D1, rDw_D2 = derivative of the shear difference vector w.r.t. theta1 respecitvely theta2
527  * @param ra1, ra2 = first repecitvely second covariant base vector of the actual configuration
528  */
529  void CalculateStrainReissnerMindlin(
530  array_1d<double, 5>& rStrainVectorReissnerMindlin,
531  const Vector& rw,
532  const Vector& rDw_D1,
533  const Vector& rDw_D2,
534  const Vector& ra1,
535  const Vector& ra2);
536 
538  void TransformationCurvilinearStrainSize5ToCartesianStrainSize6(
539  const Vector& rCurvilinearStrain,
540  Vector& rCartesianStrain);
541 
542  /* @brief The method calculates the B matrix of the Kirchhoff-Love contributions
543  * @param rB = B matrix
544  */
545  void CalculateB(
546  Matrix& rB,
547  const MetricVariables& rActualMetric,
548  IndexType IntegrationPointIndex = 0);
549 
551  void CalculateSecondVariations(
552  SecondVariations& rSecondVariations,
553  const MetricVariables& rActualMetric,
554  IndexType IntegrationPointIndex = 0);
555 
556  /* @brief The method calculates the additional terms of the B matrix and the second variations according to Reissner-Mindlin
557  * @param rw = hierarchic shear difference vector
558  * @param rDw_D1 = derivative of the shear difference vector w.r.t. theta1
559  * @param rDw_D2 = derivative of the shear difference vector w.r.t. theta2
560  * @param rw_alpha = components of the shear difference vector
561  * @param rDw_alpha_Dbeta = derivative of the component alpha of the shear difference vector w.r.t. theta(beta) which means theta1 or theta2
562  */
563  void CalculateVariationsReissnerMindlin(
564  Matrix& rB,
565  SecondVariations& rSecondVariations,
566  const Vector& rw,
567  const Vector& rDw_D1,
568  const Vector& rDw_D2,
569  const Vector& rw_alpha,
570  const Matrix& rDw_alpha_Dbeta,
571  const MetricVariables& rActualMetric,
572  const bool& rCalculateStiffnessMatrixFlag,
573  IndexType IntegrationPointIndex = 0);
574 
578 
580  virtual void InitializeMaterial();
581 
583  void CalculateHessian(
584  Matrix& Hessian,
585  const Matrix& rDDN_DDe);
586 
589 
590  friend class Serializer;
591 
592  void save(Serializer& rSerializer) const override
593  {
595  }
596 
597  void load(Serializer& rSerializer) override
598  {
600  }
601 
603 
604 }; // Class Shell5pHierarchicElement
605 
607 
608 } // namespace Kratos.
609 
610 #endif // KRATOS_SHELL_5p_HIERARCHIC_ELEMENT_H_INCLUDED defined
StressMeasure
Definition: constitutive_law.h:69
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
Matrix MatrixType
Definition: element.h:90
std::vector< std::size_t > EquationIdVectorType
Definition: element.h:98
std::size_t IndexType
Definition: element.h:92
std::size_t IndexType
Definition: flags.h:74
GeometryType & GetGeometry()
Returns the reference of the geometry.
Definition: geometrical_object.h:158
SizeType size() const
Definition: geometry.h:518
IndexType Id() const
Definition: indexed_object.h:107
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
Definition: shell_5p_hierarchic_element.h:24
std::string Info() const override
Turn back information as a string.
Definition: shell_5p_hierarchic_element.h:205
void CalculateLocalSystem(MatrixType &rLeftHandSideMatrix, VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo) override
Calls CalculateAll.
Definition: shell_5p_hierarchic_element.h:162
void CalculateOnIntegrationPoints(const Variable< double > &rVariable, std::vector< double > &rOutput, const ProcessInfo &rCurrentProcessInfo) override
Stress recovery.
Definition: shell_5p_hierarchic_element.cpp:1087
Shell5pHierarchicElement(IndexType NewId, GeometryType::Pointer pGeometry, PropertiesType::Pointer pProperties)
Constructor using an array of nodes with properties.
Definition: shell_5p_hierarchic_element.h:42
Element::Pointer Create(IndexType NewId, GeometryType::Pointer pGeom, PropertiesType::Pointer pProperties) const override
Create with GeometryType::Pointer.
Definition: shell_5p_hierarchic_element.h:58
Element::Pointer Create(IndexType NewId, NodesArrayType const &ThisNodes, PropertiesType::Pointer pProperties) const override
Create with NodesArrayType.
Definition: shell_5p_hierarchic_element.h:69
int Check(const ProcessInfo &rCurrentProcessInfo) const override
Definition: shell_5p_hierarchic_element.cpp:1305
void CalculateLeftHandSide(MatrixType &rLeftHandSideMatrix, const ProcessInfo &rCurrentProcessInfo) override
Calls CalculateAll without computing ResidualVector.
Definition: shell_5p_hierarchic_element.h:142
Shell5pHierarchicElement(IndexType NewId, GeometryType::Pointer pGeometry)
Constructor using an array of nodes.
Definition: shell_5p_hierarchic_element.h:37
void CalculateAll(MatrixType &rLeftHandSideMatrix, VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo, const bool CalculateStiffnessMatrixFlag, const bool CalculateResidualVectorFlag)
Definition: shell_5p_hierarchic_element.cpp:74
void GetDofList(DofsVectorType &rElementalDofList, const ProcessInfo &rCurrentProcessInfo) const override
returns dof list
Definition: shell_5p_hierarchic_element.cpp:1279
KRATOS_CLASS_INTRUSIVE_POINTER_DEFINITION(Shell5pHierarchicElement)
Counted pointer of Shell5pHierarchicElement.
void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
Definition: shell_5p_hierarchic_element.h:213
void EquationIdVector(EquationIdVectorType &rResult, const ProcessInfo &rCurrentProcessInfo) const override
Sets on rResult the ID's of the element degrees of freedom.
Definition: shell_5p_hierarchic_element.cpp:1252
void CalculateRightHandSide(VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo) override
Calls CalculateAll without computing StiffnessMatrix.
Definition: shell_5p_hierarchic_element.h:120
Shell5pHierarchicElement()
default constructor
Definition: shell_5p_hierarchic_element.h:47
virtual ~Shell5pHierarchicElement() override
Destructor.
Definition: shell_5p_hierarchic_element.h:50
void Initialize(const ProcessInfo &rCurrentProcessInfo) override
Definition: shell_5p_hierarchic_element.cpp:39
#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
#define KRATOS_ERROR
Definition: exception.h:161
#define KRATOS_ERROR_IF(conditional)
Definition: exception.h:162
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
KratosZeroVector< double > ZeroVector
Definition: amatrix_interface.h:561
Internals::Matrix< double, AMatrix::dynamic, 1 > Vector
Definition: amatrix_interface.h:472
KratosZeroMatrix< double > ZeroMatrix
Definition: amatrix_interface.h:559
Internals::Matrix< double, AMatrix::dynamic, AMatrix::dynamic > Matrix
Definition: amatrix_interface.h:470
T & noalias(T &TheMatrix)
Definition: amatrix_interface.h:484
Expression::Pointer operator+(const Expression::ConstPointer &rpLeft, const double Right)
H
Definition: generate_droplet_dynamics.py:257
E
Definition: generate_hyper_elastic_simo_taylor_neo_hookean.py:26
S
Definition: generate_total_lagrangian_mixed_volumetric_strain_element.py:39
def load(f)
Definition: ode_solve.py:307
float temp
Definition: rotating_cone.py:85
J
Definition: sensitivityMatrix.py:58
B
Definition: sensitivityMatrix.py:76