www.mooseframework.org
TensorMechanicsPlasticModel.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 "GeneralUserObject.h"
13 #include "RankTwoTensor.h"
14 
16 
17 template <>
19 
42 class TensorMechanicsPlasticModel : public GeneralUserObject
43 {
44 public:
45  static InputParameters validParams();
46 
47  TensorMechanicsPlasticModel(const InputParameters & parameters);
48 
49  void initialize();
50  void execute();
51  void finalize();
52 
54  virtual unsigned int numberSurfaces() const;
55 
63  virtual void
64  yieldFunctionV(const RankTwoTensor & stress, Real intnl, std::vector<Real> & f) const;
65 
72  virtual void dyieldFunction_dstressV(const RankTwoTensor & stress,
73  Real intnl,
74  std::vector<RankTwoTensor> & df_dstress) const;
75 
82  virtual void dyieldFunction_dintnlV(const RankTwoTensor & stress,
83  Real intnl,
84  std::vector<Real> & df_dintnl) const;
85 
92  virtual void
93  flowPotentialV(const RankTwoTensor & stress, Real intnl, std::vector<RankTwoTensor> & r) const;
94 
101  virtual void dflowPotential_dstressV(const RankTwoTensor & stress,
102  Real intnl,
103  std::vector<RankFourTensor> & dr_dstress) const;
104 
111  virtual void dflowPotential_dintnlV(const RankTwoTensor & stress,
112  Real intnl,
113  std::vector<RankTwoTensor> & dr_dintnl) const;
114 
121  virtual void
122  hardPotentialV(const RankTwoTensor & stress, Real intnl, std::vector<Real> & h) const;
123 
130  virtual void dhardPotential_dstressV(const RankTwoTensor & stress,
131  Real intnl,
132  std::vector<RankTwoTensor> & dh_dstress) const;
133 
140  virtual void dhardPotential_dintnlV(const RankTwoTensor & stress,
141  Real intnl,
142  std::vector<Real> & dh_dintnl) const;
143 
159  virtual void activeConstraints(const std::vector<Real> & f,
160  const RankTwoTensor & stress,
161  Real intnl,
162  const RankFourTensor & Eijkl,
163  std::vector<bool> & act,
164  RankTwoTensor & returned_stress) const;
165 
166  virtual std::string modelName() const = 0;
167 
169  virtual bool useCustomReturnMap() const;
170 
172  virtual bool useCustomCTO() const;
173 
175  const Real _f_tol;
176 
178  const Real _ic_tol;
179 
256  virtual bool returnMap(const RankTwoTensor & trial_stress,
257  Real intnl_old,
258  const RankFourTensor & E_ijkl,
259  Real ep_plastic_tolerance,
260  RankTwoTensor & returned_stress,
261  Real & returned_intnl,
262  std::vector<Real> & dpm,
263  RankTwoTensor & delta_dp,
264  std::vector<Real> & yf,
265  bool & trial_stress_inadmissible) const;
266 
284  virtual RankFourTensor consistentTangentOperator(const RankTwoTensor & trial_stress,
285  Real intnl_old,
286  const RankTwoTensor & stress,
287  Real intnl,
288  const RankFourTensor & E_ijkl,
289  const std::vector<Real> & cumulative_pm) const;
290 
298  bool KuhnTuckerSingleSurface(Real yf, Real dpm, Real dpm_tol) const;
299 
300 protected:
302 
308  virtual Real yieldFunction(const RankTwoTensor & stress, Real intnl) const;
309 
316  virtual RankTwoTensor dyieldFunction_dstress(const RankTwoTensor & stress, Real intnl) const;
317 
324  virtual Real dyieldFunction_dintnl(const RankTwoTensor & stress, Real intnl) const;
325 
332  virtual RankTwoTensor flowPotential(const RankTwoTensor & stress, Real intnl) const;
333 
340  virtual RankFourTensor dflowPotential_dstress(const RankTwoTensor & stress, Real intnl) const;
341 
348  virtual RankTwoTensor dflowPotential_dintnl(const RankTwoTensor & stress, Real intnl) const;
349 
356  virtual Real hardPotential(const RankTwoTensor & stress, Real intnl) const;
357 
364  virtual RankTwoTensor dhardPotential_dstress(const RankTwoTensor & stress, Real intnl) const;
365 
372  virtual Real dhardPotential_dintnl(const RankTwoTensor & stress, Real intnl) const;
373 };
TensorMechanicsPlasticModel::numberSurfaces
virtual unsigned int numberSurfaces() const
The number of yield surfaces for this plasticity model.
Definition: TensorMechanicsPlasticModel.C:57
TensorMechanicsPlasticModel::hardPotentialV
virtual void hardPotentialV(const RankTwoTensor &stress, Real intnl, std::vector< Real > &h) const
The hardening potential.
Definition: TensorMechanicsPlasticModel.C:152
TensorMechanicsPlasticModel::useCustomCTO
virtual bool useCustomCTO() const
Returns false. You will want to override this in your derived class if you write a custom consistent ...
Definition: TensorMechanicsPlasticModel.C:215
TensorMechanicsPlasticModel::dflowPotential_dintnl
virtual RankTwoTensor dflowPotential_dintnl(const RankTwoTensor &stress, Real intnl) const
The derivative of the flow potential with respect to the internal parameter.
Definition: TensorMechanicsPlasticModel.C:133
TensorMechanicsPlasticModel::validParams
static InputParameters validParams()
Definition: TensorMechanicsPlasticModel.C:18
TensorMechanicsPlasticModel::useCustomReturnMap
virtual bool useCustomReturnMap() const
Returns false. You will want to override this in your derived class if you write a custom returnMap f...
Definition: TensorMechanicsPlasticModel.C:209
TensorMechanicsPlasticModel::dyieldFunction_dintnlV
virtual void dyieldFunction_dintnlV(const RankTwoTensor &stress, Real intnl, std::vector< Real > &df_dintnl) const
The derivative of yield functions with respect to the internal parameter.
Definition: TensorMechanicsPlasticModel.C:98
TensorMechanicsPlasticModel::dyieldFunction_dstress
virtual RankTwoTensor dyieldFunction_dstress(const RankTwoTensor &stress, Real intnl) const
The derivative of yield function with respect to stress.
Definition: TensorMechanicsPlasticModel.C:77
TensorMechanicsPlasticModel::dhardPotential_dintnl
virtual Real dhardPotential_dintnl(const RankTwoTensor &stress, Real intnl) const
The derivative of the hardening potential with respect to the internal parameter.
Definition: TensorMechanicsPlasticModel.C:174
TensorMechanicsPlasticModel::dflowPotential_dintnlV
virtual void dflowPotential_dintnlV(const RankTwoTensor &stress, Real intnl, std::vector< RankTwoTensor > &dr_dintnl) const
The derivative of the flow potential with respect to the internal parameter.
Definition: TensorMechanicsPlasticModel.C:139
TensorMechanicsPlasticModel::KuhnTuckerSingleSurface
bool KuhnTuckerSingleSurface(Real yf, Real dpm, Real dpm_tol) const
Returns true if the Kuhn-Tucker conditions for the single surface are satisfied.
Definition: TensorMechanicsPlasticModel.C:248
TensorMechanicsPlasticModel::dhardPotential_dstressV
virtual void dhardPotential_dstressV(const RankTwoTensor &stress, Real intnl, std::vector< RankTwoTensor > &dh_dstress) const
The derivative of the hardening potential with respect to stress.
Definition: TensorMechanicsPlasticModel.C:166
TensorMechanicsPlasticModel::dhardPotential_dintnlV
virtual void dhardPotential_dintnlV(const RankTwoTensor &stress, Real intnl, std::vector< Real > &dh_dintnl) const
The derivative of the hardening potential with respect to the internal parameter.
Definition: TensorMechanicsPlasticModel.C:180
TensorMechanicsPlasticModel::initialize
void initialize()
Definition: TensorMechanicsPlasticModel.C:42
TensorMechanicsPlasticModel::finalize
void finalize()
Definition: TensorMechanicsPlasticModel.C:52
validParams< TensorMechanicsPlasticModel >
InputParameters validParams< TensorMechanicsPlasticModel >()
TensorMechanicsPlasticModel::_f_tol
const Real _f_tol
Tolerance on yield function.
Definition: TensorMechanicsPlasticModel.h:175
TensorMechanicsPlasticModel::TensorMechanicsPlasticModel
TensorMechanicsPlasticModel(const InputParameters &parameters)
Definition: TensorMechanicsPlasticModel.C:34
TensorMechanicsPlasticModel::dflowPotential_dstressV
virtual void dflowPotential_dstressV(const RankTwoTensor &stress, Real intnl, std::vector< RankFourTensor > &dr_dstress) const
The derivative of the flow potential with respect to stress.
Definition: TensorMechanicsPlasticModel.C:125
TensorMechanicsPlasticModel::hardPotential
virtual Real hardPotential(const RankTwoTensor &stress, Real intnl) const
The hardening potential.
Definition: TensorMechanicsPlasticModel.C:147
TensorMechanicsPlasticModel::yieldFunctionV
virtual void yieldFunctionV(const RankTwoTensor &stress, Real intnl, std::vector< Real > &f) const
Calculates the yield functions.
Definition: TensorMechanicsPlasticModel.C:69
TensorMechanicsPlasticModel::returnMap
virtual bool returnMap(const RankTwoTensor &trial_stress, Real intnl_old, const RankFourTensor &E_ijkl, Real ep_plastic_tolerance, RankTwoTensor &returned_stress, Real &returned_intnl, std::vector< Real > &dpm, RankTwoTensor &delta_dp, std::vector< Real > &yf, bool &trial_stress_inadmissible) const
Performs a custom return-map.
Definition: TensorMechanicsPlasticModel.C:221
TensorMechanicsPlasticModel::consistentTangentOperator
virtual RankFourTensor consistentTangentOperator(const RankTwoTensor &trial_stress, Real intnl_old, const RankTwoTensor &stress, Real intnl, const RankFourTensor &E_ijkl, const std::vector< Real > &cumulative_pm) const
Calculates a custom consistent tangent operator.
Definition: TensorMechanicsPlasticModel.C:254
TensorMechanicsPlasticModel::_ic_tol
const Real _ic_tol
Tolerance on internal constraint.
Definition: TensorMechanicsPlasticModel.h:178
TensorMechanicsPlasticModel::execute
void execute()
Definition: TensorMechanicsPlasticModel.C:47
RankFourTensorTempl< Real >
TensorMechanicsPlasticModel
Plastic Model base class The virtual functions written below must be over-ridden in derived classes t...
Definition: TensorMechanicsPlasticModel.h:42
TensorMechanicsPlasticModel::dflowPotential_dstress
virtual RankFourTensor dflowPotential_dstress(const RankTwoTensor &stress, Real intnl) const
The derivative of the flow potential with respect to stress.
Definition: TensorMechanicsPlasticModel.C:119
TensorMechanicsPlasticModel::modelName
virtual std::string modelName() const =0
Definition: TensorMechanicsPlasticModel.C:203
TensorMechanicsPlasticModel::yieldFunction
virtual Real yieldFunction(const RankTwoTensor &stress, Real intnl) const
The following functions are what you should override when building single-plasticity models.
Definition: TensorMechanicsPlasticModel.C:63
TensorMechanicsPlasticModel::flowPotential
virtual RankTwoTensor flowPotential(const RankTwoTensor &stress, Real intnl) const
The flow potential.
Definition: TensorMechanicsPlasticModel.C:106
RankTwoTensorTempl< Real >
TensorMechanicsPlasticModel::dhardPotential_dstress
virtual RankTwoTensor dhardPotential_dstress(const RankTwoTensor &stress, Real intnl) const
The derivative of the hardening potential with respect to stress.
Definition: TensorMechanicsPlasticModel.C:160
TensorMechanicsPlasticModel::flowPotentialV
virtual void flowPotentialV(const RankTwoTensor &stress, Real intnl, std::vector< RankTwoTensor > &r) const
The flow potentials.
Definition: TensorMechanicsPlasticModel.C:111
TensorMechanicsPlasticModel::dyieldFunction_dstressV
virtual void dyieldFunction_dstressV(const RankTwoTensor &stress, Real intnl, std::vector< RankTwoTensor > &df_dstress) const
The derivative of yield functions with respect to stress.
Definition: TensorMechanicsPlasticModel.C:84
TensorMechanicsPlasticModel::activeConstraints
virtual void activeConstraints(const std::vector< Real > &f, const RankTwoTensor &stress, Real intnl, const RankFourTensor &Eijkl, std::vector< bool > &act, RankTwoTensor &returned_stress) const
The active yield surfaces, given a vector of yield functions.
Definition: TensorMechanicsPlasticModel.C:188
TensorMechanicsPlasticModel::dyieldFunction_dintnl
virtual Real dyieldFunction_dintnl(const RankTwoTensor &stress, Real intnl) const
The derivative of yield function with respect to the internal parameter.
Definition: TensorMechanicsPlasticModel.C:92