18 params.
addClassDescription(
"Computes energy and modifies the stress for phase field fracture");
20 params.
addParam<Real>(
"kdamage", 1e-9,
"Stiffness of damaged matrix");
21 params.
addParam<
bool>(
"finite_strain_model",
false,
"The model is using finite strain");
23 "use_current_history_variable",
false,
"Use the current value of the history variable.");
24 params.
addParam<MaterialPropertyName>(
25 "F_name",
"E_el",
"Name of material property storing the elastic energy");
26 params.
addParam<MaterialPropertyName>(
29 "Name of material property being created to store the interfacial parameter kappa");
30 params.
addParam<MaterialPropertyName>(
31 "mobility_name",
"L",
"Name of material property being created to store the mobility L");
32 params.
addParam<std::string>(
"base_name",
"The base name used to save the cracked stress");
34 "The base name used to calculate the original stress");
40 _base_name(isParamValid(
"base_name") ? getParam<
std::string>(
"base_name") +
"_" :
""),
41 _uncracked_base_name(getParam<
std::string>(
"uncracked_base_name") +
"_"),
42 _finite_strain_model(getParam<bool>(
"finite_strain_model")),
43 _use_current_hist(getParam<bool>(
"use_current_history_variable")),
46 ? getMaterialPropertyByName<
RankTwoTensor>(_uncracked_base_name +
"elastic_strain")
47 : getMaterialPropertyByName<
RankTwoTensor>(_uncracked_base_name +
"mechanical_strain")),
48 _uncracked_stress(getMaterialPropertyByName<
RankTwoTensor>(_uncracked_base_name +
"stress")),
49 _uncracked_Jacobian_mult(
50 getMaterialPropertyByName<
RankFourTensor>(_uncracked_base_name +
"Jacobian_mult")),
51 _c(coupledValue(
"c")),
52 _gc_prop(getMaterialProperty<Real>(
"gc_prop")),
53 _l(getMaterialProperty<Real>(
"l")),
54 _visco(getMaterialProperty<Real>(
"visco")),
55 _kdamage(getParam<Real>(
"kdamage")),
56 _stress(declareProperty<
RankTwoTensor>(_base_name +
"stress")),
57 _F(declareProperty<Real>(getParam<MaterialPropertyName>(
"F_name"))),
58 _dFdc(declarePropertyDerivative<Real>(getParam<MaterialPropertyName>(
"F_name"),
59 coupledName(
"c", 0))),
60 _d2Fdc2(declarePropertyDerivative<Real>(
61 getParam<MaterialPropertyName>(
"F_name"), coupledName(
"c", 0), coupledName(
"c", 0))),
62 _d2Fdcdstrain(declareProperty<
RankTwoTensor>(
"d2Fdcdstrain")),
63 _dstress_dc(declarePropertyDerivative<
RankTwoTensor>(
"stress", coupledName(
"c", 0))),
64 _hist(declareProperty<Real>(
"hist")),
65 _hist_old(getMaterialPropertyOld<Real>(
"hist")),
66 _Jacobian_mult(declareProperty<
RankFourTensor>(_base_name +
"Jacobian_mult")),
67 _kappa(declareProperty<Real>(getParam<MaterialPropertyName>(
"kappa_name"))),
68 _L(declareProperty<Real>(getParam<MaterialPropertyName>(
"mobility_name")))
82 const Real
c =
_c[_qp];
91 std::vector<Real> eigval;
101 Real G0_pos = (stress0pos).doubleContraction(
_strain[_qp]) / 2.0;
102 Real G0_neg = (stress0neg).doubleContraction(
_strain[_qp]) / 2.0;
112 hist_variable =
_hist[_qp];
116 Real dhdc = -2.0 * cfactor * (1.0 -
c) * (1.0 -
_kdamage);
117 Real d2hdc2 = 2.0 * cfactor * (1.0 -
_kdamage);
125 _F[_qp] = hist_variable * h - G0_neg +
_gc_prop[_qp] *
c *
c / (2 *
_l[_qp]);
registerMooseObject("SolidMechanicsApp", ComputeCrackedStress)
Computes energy and modifies the stress for phase field fracture.
const MaterialProperty< Real > & _l
Characteristic length, controls damage zone thickness.
bool _use_current_hist
Use current value of history variable.
const MaterialProperty< Real > & _hist_old
const MaterialProperty< Real > & _visco
ComputeCrackedStress(const InputParameters ¶meters)
MaterialProperty< Real > & _d2Fdc2
MaterialProperty< Real > & _hist
history variable storing the maximum positive deformation energy
const MaterialProperty< RankTwoTensor > & _uncracked_stress
Uncracked stress calculated by another material.
MaterialProperty< Real > & _F
MaterialProperty< RankFourTensor > & _Jacobian_mult
derivative of stress w.r.t. strain (_dstress_dstrain)
const MaterialProperty< RankFourTensor > & _uncracked_Jacobian_mult
Uncracked Jacobian_mult calculated by another material.
MaterialProperty< RankTwoTensor > & _dstress_dc
MaterialProperty< Real > & _dFdc
Real _kdamage
Small number to avoid non-positive definiteness at or near complete damage.
MaterialProperty< RankTwoTensor > & _stress
Stress being computed by this kernel.
MaterialProperty< Real > & _L
Property where the value for L will be defined.
virtual void initQpStatefulProperties()
const VariableValue & _c
Variable defining the phase field damage parameter.
static InputParameters validParams()
MaterialProperty< Real > & _kappa
Property where the value for kappa will be defined.
virtual void computeQpProperties()
const MaterialProperty< Real > & _gc_prop
Critical energy release rate for fracture.
const MaterialProperty< RankTwoTensor > & _strain
Mechanical_strain if finite_strain_model = false, otherwise elastic_strain.
MaterialProperty< RankTwoTensor > & _d2Fdcdstrain
static InputParameters validParams()
initIdentitySymmetricFour