https://mooseframework.inl.gov
Loading...
Searching...
No Matches
SolidMechanicsPlasticMeanCap.C
Go to the documentation of this file.
1//* This file is part of the MOOSE framework
2//* https://mooseframework.inl.gov
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#include "RankFourTensor.h"
12
14registerMooseObjectRenamed("SolidMechanicsApp",
15 TensorMechanicsPlasticMeanCap,
16 "01/01/2025 00:00",
18
21{
23 params.addParam<Real>("a", 1.0, "Yield function = a*mean_stress - strength");
24 params.addRequiredParam<UserObjectName>("strength", "Yield function = a*mean_stress - strength");
25 params.addClassDescription("Class that limits the mean stress. Yield function = a*mean_stress - "
26 "strength. mean_stress = (stress_xx + stress_yy + stress_zz)/3");
27
28 return params;
29}
30
32 : SolidMechanicsPlasticModel(parameters),
33 _a_over_3(getParam<Real>("a") / 3.0),
34 _strength(getUserObject<SolidMechanicsHardeningModel>("strength"))
35{
36}
37
38Real
40{
41 return _a_over_3 * stress.trace() - _strength.value(intnl);
42}
43
46 Real /*intnl*/) const
47{
48 return _a_over_3 * stress.dtrace();
49}
50
51Real
53 Real intnl) const
54{
55 return -_strength.derivative(intnl);
56}
57
60{
61 return _a_over_3 * stress.dtrace();
62}
63
66 Real /*intnl*/) const
67{
68 return RankFourTensor();
69}
70
73 Real /*intnl*/) const
74{
75 return RankTwoTensor();
76}
77
78std::string
80{
81 return "MeanCap";
82}
registerMooseObjectRenamed("SolidMechanicsApp", TensorMechanicsPlasticMeanCap, "01/01/2025 00:00", SolidMechanicsPlasticMeanCap)
registerMooseObject("SolidMechanicsApp", SolidMechanicsPlasticMeanCap)
void addRequiredParam(const std::string &name, const std::string &doc_string)
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
void addClassDescription(const std::string &doc_string)
RankTwoTensorTempl< T > dtrace() const
virtual Real derivative(Real intnl) const
virtual Real value(Real intnl) const
Class that limits the mean stress Yield function = a*mean_stress - strength mean_stress = (stress_xx ...
RankTwoTensor dyieldFunction_dstress(const RankTwoTensor &stress, Real intnl) const override
The derivative of yield function with respect to stress.
RankFourTensor dflowPotential_dstress(const RankTwoTensor &stress, Real intnl) const override
The derivative of the flow potential with respect to stress.
Real dyieldFunction_dintnl(const RankTwoTensor &stress, Real intnl) const override
The derivative of yield function with respect to the internal parameter.
Real yieldFunction(const RankTwoTensor &stress, Real intnl) const override
The following functions are what you should override when building single-plasticity models.
const SolidMechanicsHardeningModel & _strength
strength
SolidMechanicsPlasticMeanCap(const InputParameters &parameters)
virtual std::string modelName() const override
RankTwoTensor dflowPotential_dintnl(const RankTwoTensor &stress, Real intnl) const override
The derivative of the flow potential with respect to the internal parameter.
RankTwoTensor flowPotential(const RankTwoTensor &stress, Real intnl) const override
The flow potential.
Plastic Model base class The virtual functions written below must be over-ridden in derived classes t...
static InputParameters validParams()