www.mooseframework.org
Element.h
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
10 #pragma once
11 
12 #include "Material.h"
13 #include "InputParameters.h"
14 #include "SymmTensor.h"
15 
16 // Forward declarations
17 class SolidModel;
18 
19 namespace SolidMechanics
20 {
21 
25 class Element : public Coupleable
26 {
27 public:
28  Element(SolidModel & solid_model, const std::string & name, const InputParameters & parameters);
29  virtual ~Element();
30 
31  static Real detMatrix(const ColumnMajorMatrix & A);
32 
33  static void invertMatrix(const ColumnMajorMatrix & A, ColumnMajorMatrix & Ainv);
34 
35  static void rotateSymmetricTensor(const ColumnMajorMatrix & R,
36  const RealTensorValue & T,
37  RealTensorValue & result);
38 
39  static void
40  rotateSymmetricTensor(const ColumnMajorMatrix & R, const SymmTensor & T, SymmTensor & result);
41  static void
42  unrotateSymmetricTensor(const ColumnMajorMatrix & R, const SymmTensor & T, SymmTensor & result);
43 
44  static void polarDecompositionEigen(const ColumnMajorMatrix & Fhat,
45  ColumnMajorMatrix & Rhat,
46  SymmTensor & strain_increment);
47 
48  virtual void init() {}
49 
50  virtual void computeDeformationGradient(unsigned int /*qp*/, ColumnMajorMatrix & /*F*/)
51  {
52  mooseError("computeDeformationGradient not defined for element type used");
53  }
54 
55  virtual void computeStrain(const unsigned qp,
56  const SymmTensor & total_strain_old,
57  SymmTensor & total_strain_new,
58  SymmTensor & strain_increment) = 0;
59 
60  virtual Real volumeRatioOld(unsigned /*qp*/) const { return 1; }
61 
63  virtual void finalizeStress(std::vector<SymmTensor *> & /*t*/) {}
64 
65  virtual unsigned int getNumKnownCrackDirs() const { return 0; }
66 
67  void fillMatrix(unsigned int qp,
68  const VariableGradient & grad_x,
69  const VariableGradient & grad_y,
70  const VariableGradient & grad_z,
71  ColumnMajorMatrix & A);
72 
73 protected:
75 
76 private:
77 };
78 
79 } // namespace solid_mechanics
80 
SymmTensor.h
SolidMechanics::Element::unrotateSymmetricTensor
static void unrotateSymmetricTensor(const ColumnMajorMatrix &R, const SymmTensor &T, SymmTensor &result)
Definition: Element.C:152
SolidMechanics::Element::init
virtual void init()
Definition: Element.h:48
SolidMechanics::Element::rotateSymmetricTensor
static void rotateSymmetricTensor(const ColumnMajorMatrix &R, const RealTensorValue &T, RealTensorValue &result)
Definition: Element.C:81
SolidMechanics::Element::polarDecompositionEigen
static void polarDecompositionEigen(const ColumnMajorMatrix &Fhat, ColumnMajorMatrix &Rhat, SymmTensor &strain_increment)
Definition: Element.C:185
SolidMechanics::Element::Element
Element(SolidModel &solid_model, const std::string &name, const InputParameters &parameters)
Definition: Element.C:17
SolidMechanics
Definition: AxisymmetricRZ.h:16
SolidMechanics::Element::fillMatrix
void fillMatrix(unsigned int qp, const VariableGradient &grad_x, const VariableGradient &grad_y, const VariableGradient &grad_z, ColumnMajorMatrix &A)
Definition: Element.C:228
SolidModel
SolidModel is the base class for all this module's solid mechanics material models.
Definition: SolidModel.h:33
name
const std::string name
Definition: Setup.h:21
SolidMechanics::Element::_solid_model
SolidModel & _solid_model
Definition: Element.h:74
SolidMechanics::Element
Element is the base class for all of this module's solid mechanics element formulations.
Definition: Element.h:25
SolidMechanics::Element::detMatrix
static Real detMatrix(const ColumnMajorMatrix &A)
Definition: Element.C:31
SymmTensor
Definition: SymmTensor.h:21
SolidMechanics::Element::computeStrain
virtual void computeStrain(const unsigned qp, const SymmTensor &total_strain_old, SymmTensor &total_strain_new, SymmTensor &strain_increment)=0
SolidMechanics::Element::volumeRatioOld
virtual Real volumeRatioOld(unsigned) const
Definition: Element.h:60
SolidMechanics::Element::computeDeformationGradient
virtual void computeDeformationGradient(unsigned int, ColumnMajorMatrix &)
Definition: Element.h:50
SolidMechanics::Element::~Element
virtual ~Element()
Definition: Element.C:26
SolidMechanics::Element::finalizeStress
virtual void finalizeStress(std::vector< SymmTensor * > &)
Rotate stress to current configuration.
Definition: Element.h:63
SolidMechanics::Element::getNumKnownCrackDirs
virtual unsigned int getNumKnownCrackDirs() const
Definition: Element.h:65
SolidMechanics::Element::invertMatrix
static void invertMatrix(const ColumnMajorMatrix &A, ColumnMajorMatrix &Ainv)
Definition: Element.C:52