www.mooseframework.org
ExponentialSoftening.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 "ExponentialSoftening.h"
11 
12 #include "MooseMesh.h"
13 
14 registerMooseObject("TensorMechanicsApp", ExponentialSoftening);
15 
17 
18 InputParameters
20 {
21  InputParameters params = SmearedCrackSofteningBase::validParams();
22  params.addClassDescription(
23  "Softening model with an exponential softening response upon cracking. This "
24  "class is intended to be used with ComputeSmearedCrackingStress.");
25  params.addRangeCheckedParam<Real>(
26  "residual_stress",
27  0.0,
28  "residual_stress <= 1 & residual_stress >= 0",
29  "The fraction of the cracking stress allowed to be maintained following a crack.");
30  params.addRangeCheckedParam<Real>(
31  "alpha",
32  -1.0,
33  "alpha <= 0",
34  "Initial slope of the exponential softening curve at crack initiation. "
35  "If not specified, it is equal to the negative of the Young's modulus.");
36  params.addRangeCheckedParam<Real>(
37  "beta",
38  1.0,
39  "beta >= 0",
40  "Multiplier applied to alpha to control the exponential softening "
41  "behavior.");
42  return params;
43 }
44 
45 ExponentialSoftening::ExponentialSoftening(const InputParameters & parameters)
46  : SmearedCrackSofteningBase(parameters),
47  _residual_stress(getParam<Real>("residual_stress")),
48  _alpha(getParam<Real>("alpha")),
49  _alpha_set_by_user(parameters.isParamSetByUser("alpha")),
50  _beta(getParam<Real>("beta"))
51 {
52 }
53 
54 void
56  Real & stiffness_ratio,
57  const Real /*strain*/,
58  const Real crack_initiation_strain,
59  const Real crack_max_strain,
60  const Real cracking_stress,
61  const Real youngs_modulus)
62 {
63  mooseAssert(crack_max_strain >= crack_initiation_strain,
64  "crack_max_strain must be >= crack_initiation_strain");
65 
66  Real alpha = 0.0;
68  alpha = _alpha;
69  else
70  alpha = -youngs_modulus;
71 
72  // Compute stress that follows exponental curve
73  stress = cracking_stress *
75  (1.0 - _residual_stress) * std::exp(alpha * _beta / cracking_stress *
76  (crack_max_strain - crack_initiation_strain)));
77  // Compute ratio of current stiffness to original stiffness
78  stiffness_ratio = stress * crack_initiation_strain / (crack_max_strain * cracking_stress);
79 }
ExponentialSoftening::_residual_stress
const Real & _residual_stress
Residual stress after full softening.
Definition: ExponentialSoftening.h:42
ExponentialSoftening
ExponentialSoftening is a smeared crack softening model that uses an exponential softening curve.
Definition: ExponentialSoftening.h:25
ExponentialSoftening::ExponentialSoftening
ExponentialSoftening(const InputParameters &parameters)
Definition: ExponentialSoftening.C:45
ExponentialSoftening::validParams
static InputParameters validParams()
Definition: ExponentialSoftening.C:19
SmearedCrackSofteningBase
SmearedCrackSofteningBase is the base class for a set of models that define the softening behavior of...
Definition: SmearedCrackSofteningBase.h:28
registerMooseObject
registerMooseObject("TensorMechanicsApp", ExponentialSoftening)
SmearedCrackSofteningBase::validParams
static InputParameters validParams()
Definition: SmearedCrackSofteningBase.C:17
ExponentialSoftening::_beta
const Real & _beta
Multiplier on alpha to determine the initial softening slope.
Definition: ExponentialSoftening.h:51
ExponentialSoftening::_alpha
const Real & _alpha
Initial slope of the softening curve.
Definition: ExponentialSoftening.h:45
ExponentialSoftening::_alpha_set_by_user
const bool _alpha_set_by_user
Variable to track whether _alpha was set by the user.
Definition: ExponentialSoftening.h:48
ExponentialSoftening.h
ExponentialSoftening::computeCrackingRelease
virtual void computeCrackingRelease(Real &stress, Real &stiffness_ratio, const Real strain, const Real crack_initiation_strain, const Real crack_max_strain, const Real cracking_stress, const Real youngs_modulus) override
Compute the effect of the cracking release model on the stress and stiffness in the direction of a si...
Definition: ExponentialSoftening.C:55
defineLegacyParams
defineLegacyParams(ExponentialSoftening)