www.mooseframework.org
CLSHPlasticModel.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 
10 #include "CLSHPlasticModel.h"
11 
13 #include <cmath>
14 
15 registerMooseObject("SolidMechanicsApp", CLSHPlasticModel);
16 
17 template <>
18 InputParameters
20 {
21  InputParameters params = validParams<ReturnMappingModel>();
22  params.addRequiredParam<Real>("yield_stress",
23  "The point at which plastic strain begins accumulating");
24  params.addRequiredParam<Real>("hardening_constant", "Hardening slope");
25  params.addRequiredParam<Real>("c_alpha", "creep constant");
26  params.addRequiredParam<Real>("c_beta", "creep constant");
27  return params;
28 }
29 
30 CLSHPlasticModel::CLSHPlasticModel(const InputParameters & parameters)
31  : ReturnMappingModel(parameters, "plastic"),
32  _yield_stress(parameters.get<Real>("yield_stress")),
33  _hardening_constant(parameters.get<Real>("hardening_constant")),
34  _c_alpha(parameters.get<Real>("c_alpha")),
35  _c_beta(parameters.get<Real>("c_beta")),
36  _hardening_variable(declareProperty<Real>("hardening_variable")),
37  _hardening_variable_old(getMaterialPropertyOld<Real>("hardening_variable")),
38  _plastic_strain(declareProperty<SymmTensor>("plastic_strain")),
39  _plastic_strain_old(getMaterialPropertyOld<SymmTensor>("plastic_strain"))
40 {
41 }
42 
43 void
45 {
46  _hardening_variable[_qp] = 0;
48 }
49 
50 void
52  const SymmElasticityTensor & elasticityTensor)
53 {
55  dynamic_cast<const SymmIsotropicElasticityTensor *>(&elasticityTensor);
56  if (!eT)
57  {
58  mooseError("CLSHPlasticModel requires a SymmIsotropicElasticityTensor");
59  }
61  _yield_condition = effectiveTrialStress - _hardening_variable_old[_qp] - _yield_stress;
64 }
65 
66 Real
67 CLSHPlasticModel::computeResidual(const Real effectiveTrialStress, const Real scalar)
68 {
69  Real residual = 0.0;
70  if (_yield_condition > 0)
71  {
72  const Real xflow = _c_beta * (effectiveTrialStress - (3. * _shear_modulus * scalar) -
74  Real xphi = _c_alpha * std::sinh(xflow);
75  _xphidp = -3. * _shear_modulus * _c_alpha * _c_beta * std::cosh(xflow);
76  _xphir = -_c_alpha * _c_beta * std::cosh(xflow);
77  residual = xphi * _dt - scalar;
78  }
79 
80  return residual;
81 }
82 
83 void
85 {
86  if (_yield_condition > 0)
88 }
89 
90 Real
92 {
93  return _hardening_variable_old[_qp] + (_hardening_constant * scalar);
94 }
95 
96 Real
97 CLSHPlasticModel::computeDerivative(const Real /*effectiveTrialStress*/, const Real /*scalar*/)
98 {
99  Real derivative = 1.0;
100  if (_yield_condition > 0)
101  derivative = _xphidp * _dt + _hardening_constant * _xphir * _dt - 1.0;
102 
103  return derivative;
104 }
105 
106 void
108 {
109  _plastic_strain[_qp] += plasticStrainIncrement;
110 }
CLSHPlasticModel::_yield_stress
const Real _yield_stress
Definition: CLSHPlasticModel.h:38
SymmIsotropicElasticityTensor
Defines an Isotropic Elasticity Tensor.
Definition: SymmIsotropicElasticityTensor.h:33
CLSHPlasticModel::_xphir
Real _xphir
Definition: CLSHPlasticModel.h:45
CLSHPlasticModel::iterationFinalize
virtual void iterationFinalize(Real scalar) override
Finalize internal state variables for a model for a given iteration.
Definition: CLSHPlasticModel.C:84
SymmIsotropicElasticityTensor.h
CLSHPlasticModel::_yield_condition
Real _yield_condition
Definition: CLSHPlasticModel.h:43
validParams< ReturnMappingModel >
InputParameters validParams< ReturnMappingModel >()
Definition: ReturnMappingModel.C:17
CLSHPlasticModel::computeResidual
virtual Real computeResidual(const Real effectiveTrialStress, const Real scalar) override
Compute the residual for a predicted value of the scalar.
Definition: CLSHPlasticModel.C:67
CLSHPlasticModel::_c_alpha
const Real _c_alpha
Definition: CLSHPlasticModel.h:40
CLSHPlasticModel::_hardening_constant
const Real _hardening_constant
Definition: CLSHPlasticModel.h:39
CLSHPlasticModel::computeStressInitialize
virtual void computeStressInitialize(Real effectiveTrialStress, const SymmElasticityTensor &elasticityTensor) override
Perform any necessary initialization before return mapping iterations.
Definition: CLSHPlasticModel.C:51
validParams< CLSHPlasticModel >
InputParameters validParams< CLSHPlasticModel >()
Definition: CLSHPlasticModel.C:19
SymmElasticityTensor
This class defines a basic set of capabilities any elasticity tensor should have.
Definition: SymmElasticityTensor.h:55
CLSHPlasticModel::initQpStatefulProperties
virtual void initQpStatefulProperties() override
Definition: CLSHPlasticModel.C:44
ReturnMappingModel
Base class for models that perform return mapping iterations to compute stress.
Definition: ReturnMappingModel.h:26
ReturnMappingModel::initQpStatefulProperties
virtual void initQpStatefulProperties() override
Definition: ReturnMappingModel.C:47
CLSHPlasticModel::_plastic_strain_old
const MaterialProperty< SymmTensor > & _plastic_strain_old
Definition: CLSHPlasticModel.h:51
CLSHPlasticModel::computeHardeningValue
Real computeHardeningValue(const Real scalar)
Definition: CLSHPlasticModel.C:91
CLSHPlasticModel::_c_beta
const Real _c_beta
Definition: CLSHPlasticModel.h:41
CLSHPlasticModel::_shear_modulus
Real _shear_modulus
Definition: CLSHPlasticModel.h:44
CLSHPlasticModel::_plastic_strain
MaterialProperty< SymmTensor > & _plastic_strain
Definition: CLSHPlasticModel.h:50
SymmTensor
Definition: SymmTensor.h:21
CLSHPlasticModel::_hardening_variable_old
const MaterialProperty< Real > & _hardening_variable_old
Definition: CLSHPlasticModel.h:49
registerMooseObject
registerMooseObject("SolidMechanicsApp", CLSHPlasticModel)
CLSHPlasticModel
Plastic material.
Definition: CLSHPlasticModel.h:22
CLSHPlasticModel::computeDerivative
virtual Real computeDerivative(const Real effectiveTrialStress, const Real scalar) override
Compute the derivative of the residual as a function of the scalar variable.
Definition: CLSHPlasticModel.C:97
CLSHPlasticModel::computeStressFinalize
virtual void computeStressFinalize(const SymmTensor &plasticStrainIncrement) override
Perform any necessary steps to finalize state after return mapping iterations.
Definition: CLSHPlasticModel.C:107
CLSHPlasticModel::_hardening_variable
MaterialProperty< Real > & _hardening_variable
Definition: CLSHPlasticModel.h:48
SymmIsotropicElasticityTensor::shearModulus
Real shearModulus() const
Return the shear modulus...
Definition: SymmIsotropicElasticityTensor.C:69
CLSHPlasticModel.h
CLSHPlasticModel::_xphidp
Real _xphidp
Definition: CLSHPlasticModel.h:46
CLSHPlasticModel::CLSHPlasticModel
CLSHPlasticModel(const InputParameters &parameters)
Definition: CLSHPlasticModel.C:30