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