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