www.mooseframework.org
Element.h
Go to the documentation of this file.
1 /****************************************************************/
2 /* MOOSE - Multiphysics Object Oriented Simulation Environment */
3 /* */
4 /* All contents are licensed under LGPL V2.1 */
5 /* See LICENSE for full restrictions */
6 /****************************************************************/
7 #ifndef ELEMENT_H
8 #define ELEMENT_H
9 
10 #include "Material.h"
11 #include "InputParameters.h"
12 #include "SymmTensor.h"
13 
14 // Forward declarations
15 class SolidModel;
16 
17 namespace SolidMechanics
18 {
19 
23 class Element : public Coupleable, public ZeroInterface
24 {
25 public:
26  Element(SolidModel & solid_model, const std::string & name, const InputParameters & parameters);
27  virtual ~Element();
28 
29  static Real detMatrix(const ColumnMajorMatrix & A);
30 
31  static void invertMatrix(const ColumnMajorMatrix & A, ColumnMajorMatrix & Ainv);
32 
33  static void rotateSymmetricTensor(const ColumnMajorMatrix & R,
34  const RealTensorValue & T,
35  RealTensorValue & result);
36 
37  static void
38  rotateSymmetricTensor(const ColumnMajorMatrix & R, const SymmTensor & T, SymmTensor & result);
39  static void
40  unrotateSymmetricTensor(const ColumnMajorMatrix & R, const SymmTensor & T, SymmTensor & result);
41 
42  static void polarDecompositionEigen(const ColumnMajorMatrix & Fhat,
43  ColumnMajorMatrix & Rhat,
44  SymmTensor & strain_increment);
45 
46  virtual void init() {}
47 
48  virtual void computeDeformationGradient(unsigned int /*qp*/, ColumnMajorMatrix & /*F*/)
49  {
50  mooseError("computeDeformationGradient not defined for element type used");
51  }
52 
53  virtual void computeStrain(const unsigned qp,
54  const SymmTensor & total_strain_old,
55  SymmTensor & total_strain_new,
56  SymmTensor & strain_increment) = 0;
57 
58  virtual Real volumeRatioOld(unsigned /*qp*/) const { return 1; }
59 
61  virtual void finalizeStress(std::vector<SymmTensor *> & /*t*/) {}
62 
63  virtual unsigned int getNumKnownCrackDirs() const { return 0; }
64 
65  void fillMatrix(unsigned int qp,
66  const VariableGradient & grad_x,
67  const VariableGradient & grad_y,
68  const VariableGradient & grad_z,
69  ColumnMajorMatrix & A);
70 
71 protected:
73 
74 private:
75 };
76 
77 } // namespace solid_mechanics
78 
79 #endif
static void polarDecompositionEigen(const ColumnMajorMatrix &Fhat, ColumnMajorMatrix &Rhat, SymmTensor &strain_increment)
Definition: Element.C:182
static void unrotateSymmetricTensor(const ColumnMajorMatrix &R, const SymmTensor &T, SymmTensor &result)
Definition: Element.C:149
Element is the base class for all of this module&#39;s solid mechanics element formulations.
Definition: Element.h:23
virtual void computeDeformationGradient(unsigned int, ColumnMajorMatrix &)
Definition: Element.h:48
virtual Real volumeRatioOld(unsigned) const
Definition: Element.h:58
Element(SolidModel &solid_model, const std::string &name, const InputParameters &parameters)
Definition: Element.C:14
virtual void computeStrain(const unsigned qp, const SymmTensor &total_strain_old, SymmTensor &total_strain_new, SymmTensor &strain_increment)=0
static void rotateSymmetricTensor(const ColumnMajorMatrix &R, const RealTensorValue &T, RealTensorValue &result)
Definition: Element.C:78
virtual unsigned int getNumKnownCrackDirs() const
Definition: Element.h:63
SolidModel is the base class for all this module&#39;s solid mechanics material models.
Definition: SolidModel.h:31
virtual ~Element()
Definition: Element.C:23
static Real detMatrix(const ColumnMajorMatrix &A)
Definition: Element.C:28
SolidModel & _solid_model
Definition: Element.h:72
void fillMatrix(unsigned int qp, const VariableGradient &grad_x, const VariableGradient &grad_y, const VariableGradient &grad_z, ColumnMajorMatrix &A)
Definition: Element.C:225
virtual void finalizeStress(std::vector< SymmTensor * > &)
Rotate stress to current configuration.
Definition: Element.h:61
static void invertMatrix(const ColumnMajorMatrix &A, ColumnMajorMatrix &Ainv)
Definition: Element.C:49
virtual void init()
Definition: Element.h:46