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