23 params.addRequiredParam<Real>(
"coefficient",
"Leading coefficent in power-law equation");
24 params.addRequiredParam<Real>(
"n_exponent",
"Exponent on effective stress in power-law equation");
25 params.addParam<Real>(
"m_exponent", 0.0,
"Exponent on time in power-law equation");
26 params.addRequiredParam<Real>(
"activation_energy",
"Activation energy");
27 params.addParam<Real>(
"gas_constant", 8.3143,
"Universal gas constant");
30 params.addRequiredParam<Real>(
"yield_stress",
31 "The point at which plastic strain begins accumulating");
32 params.addRequiredParam<Real>(
"hardening_constant",
"Hardening slope");
35 params.addParam<
unsigned int>(
"max_its", 30,
"Maximum number of sub-newton iterations");
36 params.addParam<
bool>(
"internal_solve_full_iteration_history",
38 "Set true to output sub-newton iteration information");
39 params.addParam<Real>(
40 "relative_tolerance", 1e-5,
"Relative convergence tolerance for sub-newtion iteration");
41 params.addParam<Real>(
42 "absolute_tolerance", 1e-20,
"Absolute convergence tolerance for sub-newtion iteration");
43 params.addParam<PostprocessorName>(
44 "output",
"",
"The reporting postprocessor to use for the max_iterations value.");
47 params.addParam<Real>(
"absolute_stress_tolerance",
49 "Convergence tolerance for combined plasticity-creep stress iteration");
56 _coefficient(parameters.get<Real>(
"coefficient")),
57 _n_exponent(parameters.get<Real>(
"n_exponent")),
58 _m_exponent(parameters.get<Real>(
"m_exponent")),
59 _activation_energy(parameters.get<Real>(
"activation_energy")),
60 _gas_constant(parameters.get<Real>(
"gas_constant")),
62 _yield_stress(parameters.get<Real>(
"yield_stress")),
63 _hardening_constant(parameters.get<Real>(
"hardening_constant")),
65 _max_its(parameters.get<unsigned int>(
"max_its")),
66 _internal_solve_full_iteration_history(getParam<bool>(
"internal_solve_full_iteration_history")),
67 _relative_tolerance(parameters.get<Real>(
"relative_tolerance")),
68 _absolute_tolerance(parameters.get<Real>(
"absolute_tolerance")),
70 _absolute_stress_tolerance(parameters.get<Real>(
"absolute_stress_tolerance")),
72 _creep_strain(declareProperty<
SymmTensor>(
"creep_strain")),
73 _creep_strain_old(getMaterialPropertyOld<
SymmTensor>(
"creep_strain")),
75 _plastic_strain(declareProperty<
SymmTensor>(
"plastic_strain")),
76 _plastic_strain_old(getMaterialPropertyOld<
SymmTensor>(
"plastic_strain")),
78 _hardening_variable(declareProperty<Real>(
"hardening_variable")),
79 _hardening_variable_old(getMaterialPropertyOld<Real>(
"hardening_variable")),
81 _output(getParam<PostprocessorName>(
"output") !=
"" ? &getPostprocessorValue(
"output") : NULL)
86 mooseError(
"Yield stress must be greater than zero");
105 if (_t_step == 0 && !_app.isRestarting())
110 _console << std::endl
111 <<
"iteration output for combined creep-plasticity solve:"
112 <<
" time=" << _t <<
" temperature=" <<
_temperature[_qp] <<
" int_pt=" << _qp
125 Real first_delS(delS);
132 elastic_strain_increment -= plastic_strain_increment;
137 computeCreep(elastic_strain_increment, creep_strain_increment, stress_new);
142 elastic_strain_increment -= creep_strain_increment;
144 computeLSH(elastic_strain_increment, plastic_strain_increment, stress_new);
146 elastic_strain_increment -= plastic_strain_increment;
149 SymmTensor deltaS(stress_new_last - stress_new);
155 stress_new_last = stress_new;
159 _console <<
"stress_it=" <<
counter <<
" rel_delS=" << delS / first_delS
170 mooseError(
"Max stress iteration hit during plasticity-creep solve!");
184 dev_trial_stress.
addDiag(-dev_trial_stress.
trace() / 3.0);
188 Real effective_trial_stress = std::sqrt(1.5 * dts_squared);
201 Real creep_residual = 10;
202 Real norm_creep_residual = 10;
203 Real first_norm_creep_residual = 10;
211 exponential * expTime;
215 exponential * expTime;
217 creep_residual = phi - del_p / _dt;
218 norm_creep_residual = std::abs(creep_residual);
221 first_norm_creep_residual = norm_creep_residual;
224 del_p += creep_residual / (1 / _dt - dphi_ddelp);
228 _console <<
"crp_it=" << it <<
" trl_strs=" << effective_trial_stress <<
" phi=" << phi
229 <<
" dphi=" << dphi_ddelp <<
" del_p=" << del_p
230 <<
" rel_res=" << norm_creep_residual / first_norm_creep_residual
241 mooseError(
"Max sub-newton iteration hit during creep solve!");
246 if (effective_trial_stress < 0.01)
248 effective_trial_stress = 0.01;
251 creep_strain_increment = dev_trial_stress;
252 creep_strain_increment *= (1.5 * del_p / effective_trial_stress);
254 SymmTensor elastic_strain_increment(strain_increment);
255 elastic_strain_increment -= creep_strain_increment;
279 Real effective_trial_stress = std::sqrt(1.5 * dts_squared);
287 if (yield_condition >
291 Real plastic_residual = 0;
292 Real norm_plas_residual = 10;
293 Real first_norm_plas_residual = 10;
294 Real scalar_plastic_strain_increment = 0;
299 plastic_residual = effective_trial_stress -
302 norm_plas_residual = std::abs(plastic_residual);
305 first_norm_plas_residual = norm_plas_residual;
308 scalar_plastic_strain_increment +=
316 _console <<
"pls_it=" << it <<
" trl_strs=" << effective_trial_stress
317 <<
" del_p=" << scalar_plastic_strain_increment
319 <<
" rel_res=" << norm_plas_residual / first_norm_plas_residual
330 mooseError(
"Max sub-newton iteration hit during plasticity increment solve!");
333 if (effective_trial_stress < 0.01)
335 effective_trial_stress = 0.01;
337 plastic_strain_increment = dev_trial_stress;
338 plastic_strain_increment *= (1.5 * scalar_plastic_strain_increment / effective_trial_stress);
340 SymmTensor elastic_strain_increment(strain_increment);
341 elastic_strain_increment -= plastic_strain_increment;