www.mooseframework.org
IsotropicPowerLawHardening.C
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 /****************************************************************/
8 
10 
19 template <>
20 InputParameters
22 {
23  InputParameters params = validParams<IsotropicPlasticity>();
24 
25  params.set<Real>("yield_stress") = 1.0;
26  params.set<Real>("hardening_constant") = 1.0;
27 
28  params.suppressParameter<Real>("yield_stress");
29  params.suppressParameter<FunctionName>("yield_stress_function");
30  params.suppressParameter<Real>("hardening_constant");
31  params.suppressParameter<FunctionName>("hardening_function");
32 
33  params.addRequiredParam<Real>("strength_coefficient",
34  "The strength coefficient (K) for power law hardening");
35  params.addRequiredParam<Real>("strain_hardening_exponent",
36  "The strain hardening exponent (n) for power law hardening");
37  return params;
38 }
39 
40 IsotropicPowerLawHardening::IsotropicPowerLawHardening(const InputParameters & parameters)
41  : IsotropicPlasticity(parameters),
42  _K(parameters.get<Real>("strength_coefficient")),
43  _n(parameters.get<Real>("strain_hardening_exponent"))
44 {
45 }
46 
47 void
49 {
50  _yield_stress = std::pow(_K / pow(_youngs_modulus, _n), 1.0 / (1.0 - _n));
51 }
52 
53 void
55  const SymmElasticityTensor & elasticityTensor)
56 {
57  _effectiveTrialStress = effectiveTrialStress;
59  dynamic_cast<const SymmIsotropicElasticityTensor *>(&elasticityTensor);
60  if (!eT)
61  {
62  mooseError("IsotropicPowerLawHardening requires a SymmIsotropicElasticityTensor");
63  }
67  _yield_condition = effectiveTrialStress - _hardening_variable_old[_qp] - _yield_stress;
70 }
71 
72 Real
74 {
75  Real stress = _effectiveTrialStress - 3.0 * _shear_modulus * scalar;
76  Real slope = std::pow(stress, 1.0 / _n - 1.0) / _n * (1.0 / std::pow(_K, 1.0 / _n)) -
77  1.0 / _youngs_modulus;
78 
79  slope = 1.0 / slope;
80 
81  return slope;
82 }
This class defines a basic set of capabilities any elasticity tensor should have. ...
Real youngsModulus() const
Return the youngs modulus.
MaterialProperty< SymmTensor > & _plastic_strain
MaterialProperty< Real > & _hardening_variable
const MaterialProperty< Real > & _hardening_variable_old
const MaterialProperty< SymmTensor > & _plastic_strain_old
virtual Real computeHardeningDerivative(Real scalar)
InputParameters validParams< IsotropicPowerLawHardening >()
Isotropic power law hardening material model.
virtual void computeStressInitialize(Real effectiveTrialStress, const SymmElasticityTensor &elasticityTensor)
Perform any necessary initialization before return mapping iterations.
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)
InputParameters validParams< IsotropicPlasticity >()
IsotropicPowerLawHardening(const InputParameters &parameters)
Real shearModulus() const
Return the shear modulus...
Defines an Isotropic Elasticity Tensor.