www.mooseframework.org
Nonlinear.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 NONLINEAR_H
8 #define NONLINEAR_H
9 
10 #include "Element.h"
11 
12 // Forward declarations
13 class MaterialModel;
14 class VolumetricModel;
15 
16 namespace SolidMechanics
17 {
18 
22 class Nonlinear : public Element
23 {
24 public:
25  Nonlinear(SolidModel & solid_model, const std::string & name, const InputParameters & parameters);
26 
27  virtual ~Nonlinear();
28 
29  const ColumnMajorMatrix & incrementalRotation() const { return _incremental_rotation; }
30 
31  const std::vector<ColumnMajorMatrix> & Fhat() const { return _Fhat; }
32 
33 protected:
35  {
37  Eigen = 1
38  };
39 
41 
42  ColumnMajorMatrix _incremental_rotation;
43  ColumnMajorMatrix _Uhat;
44 
45  std::vector<ColumnMajorMatrix> _Fhat;
46  std::vector<ColumnMajorMatrix> _Fbar;
47  ColumnMajorMatrix _F;
48 
49  virtual void init();
50 
51  virtual void computeStrain(const unsigned qp,
52  const SymmTensor & total_strain_old,
53  SymmTensor & total_strain_new,
54  SymmTensor & strain_increment);
55 
56  virtual Real volumeRatioOld(unsigned /*qp*/) const { mooseError("volumeRatioOld not defined"); }
57 
59  virtual void finalizeStress(std::vector<SymmTensor *> & t);
60 
61  virtual void computeIncrementalDeformationGradient(std::vector<ColumnMajorMatrix> & Fhat) = 0;
62  void computeStrainIncrement(const ColumnMajorMatrix & Fhat, SymmTensor & strain_increment);
63  void computePolarDecomposition(const ColumnMajorMatrix & Fhat);
64 
65  void computeStrainAndRotationIncrement(const ColumnMajorMatrix & Fhat,
66  SymmTensor & strain_increment);
67 };
68 
69 } // namespace solid_mechanics
70 
71 #endif
DecompMethod _decomp_method
Definition: Nonlinear.h:40
Nonlinear is the base class for all large strain/rotation models.
Definition: Nonlinear.h:22
Element is the base class for all of this module&#39;s solid mechanics element formulations.
Definition: Element.h:23
void computeStrainIncrement(const ColumnMajorMatrix &Fhat, SymmTensor &strain_increment)
Definition: Nonlinear.C:76
Nonlinear(SolidModel &solid_model, const std::string &name, const InputParameters &parameters)
Definition: Nonlinear.C:18
void computePolarDecomposition(const ColumnMajorMatrix &Fhat)
Definition: Nonlinear.C:137
std::vector< ColumnMajorMatrix > _Fbar
Definition: Nonlinear.h:46
SolidModel is the base class for all this module&#39;s solid mechanics material models.
Definition: SolidModel.h:31
ColumnMajorMatrix _F
Definition: Nonlinear.h:47
ColumnMajorMatrix _incremental_rotation
Definition: Nonlinear.h:42
virtual void computeStrain(const unsigned qp, const SymmTensor &total_strain_old, SymmTensor &total_strain_new, SymmTensor &strain_increment)
Definition: Nonlinear.C:193
void computeStrainAndRotationIncrement(const ColumnMajorMatrix &Fhat, SymmTensor &strain_increment)
Definition: Nonlinear.C:53
const ColumnMajorMatrix & incrementalRotation() const
Definition: Nonlinear.h:29
ColumnMajorMatrix _Uhat
Definition: Nonlinear.h:43
virtual void computeIncrementalDeformationGradient(std::vector< ColumnMajorMatrix > &Fhat)=0
const std::vector< ColumnMajorMatrix > & Fhat() const
Definition: Nonlinear.h:31
std::vector< ColumnMajorMatrix > _Fhat
Definition: Nonlinear.h:45
virtual void init()
Definition: Nonlinear.C:207
virtual Real volumeRatioOld(unsigned) const
Definition: Nonlinear.h:56
virtual void finalizeStress(std::vector< SymmTensor * > &t)
Rotate stress to current configuration.
Definition: Nonlinear.C:181