20 "This reporter computes the crack growth increment at all active crack front points " 21 "in the CrackMeshCut3DUserObject for stress corrosion cracking fit to an exponential " 22 "function. Crack growth rates computed by this reporter are stored in the same order as in " 23 "the fracture integral VectorPostprocessors.");
27 "Value of K_I below which the crack growth rate is " 28 "constant and equal to the mid growth rate function " 29 "evaluated with a K_I=k_low.");
32 "Value of K_I above which the crack growth rate is " 33 "constant and equal to the mid growth rate function " 34 "evaluated with a K_I=k_high.");
36 "Growth rate multiplier when K_I is between k_low and k_high");
40 "growth_increment_name",
42 "ReporterValueName for storing computed growth increments for the crack front points.");
44 "time_to_max_growth_increment_name",
45 "max_growth_timestep",
46 "ReporterValueName for storing computed timestep to reach max_growth_increment.");
53 _k_low(getParam<
Real>(
"k_low")),
54 _k_high(getParam<
Real>(
"k_high")),
55 _growth_rate_mid_multiplier(getParam<
Real>(
"growth_rate_mid_multiplier")),
56 _growth_rate_mid_exp_factor(getParam<
Real>(
"growth_rate_mid_exp_factor")),
58 _time_increment(declareValueByName<
Real>(
59 getParam<ReporterValueName>(
"time_to_max_growth_increment_name"),
REPORTER_MODE_ROOT)),
60 _growth_increment(declareValueByName<
std::vector<
Real>>(
64 paramError(
"k_high",
"k_high must be larger than k_low");
71 std::vector<Real> growth_rate(
_ki_x.size(), 0.0);
73 for (std::size_t i = 0; i <
_ki_vpp.size(); ++i)
87 Real max_growth_rate = *std::max_element(growth_rate.begin(), growth_rate.end());
88 if (max_growth_rate <= 0)
89 mooseError(
"Negative max growth rate encountered on crack front. ");
93 for (std::size_t i = 0; i <
_ki_vpp.size(); ++i)
std::vector< Real > & _growth_increment
growth increment reporters
void paramError(const std::string ¶m, Args... args) const
const Real _max_growth_increment
Maximum crack growth increment allowed for any of the crack front points.
const ReporterMode REPORTER_MODE_ROOT
virtual void computeGrowth(std::vector< int > &index) override
Compute crack growth increment at the specified crack front point and store increments in an internal...
registerMooseObject("XFEMApp", StressCorrosionCrackingExponential)
static InputParameters validParams()
const std::vector< Real > & _ki_vpp
The name of the reporter with K_I fracture integral values.
const Real & _growth_rate_mid_exp_factor
Real & _time_increment
timestep size to reach max_growth_increment postprocessor
StressCorrosionCrackingExponential(const InputParameters ¶meters)
const std::vector< Real > & _ki_x
static InputParameters validParams()
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const Real & _growth_rate_mid_multiplier
void mooseError(Args &&... args) const
MooseUnits pow(const MooseUnits &, int)
const Real & _k_low
Material specific scc parameters.