www.mooseframework.org
PhaseFieldFractureMechanicsOffDiag.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 
11 
13 
15 
16 InputParameters
18 {
19  InputParameters params = Kernel::validParams();
20  params.addClassDescription("Stress divergence kernel for phase-field fracture: Computes off "
21  "diagonal damage dependent Jacobian components. To be used with "
22  "StressDivergenceTensors or DynamicStressDivergenceTensors.");
23  params.addParam<std::string>("base_name", "Material property base name");
24  params.addRequiredParam<unsigned int>("component",
25  "An integer corresponding to the direction "
26  "the variable this kernel acts in. (0 for x, "
27  "1 for y, 2 for z)");
28  params.addCoupledVar(
29  "c",
30  "Phase field damage variable: Used to indicate calculation of Off Diagonal Jacobian term");
31  return params;
32 }
33 
35  const InputParameters & parameters)
36  : DerivativeMaterialInterface<Kernel>(parameters),
37  _base_name(isParamValid("base_name") ? getParam<std::string>("base_name") + "_" : ""),
38  _component(getParam<unsigned int>("component")),
39  _c_coupled(isCoupled("c")),
40  _c_var(_c_coupled ? coupled("c") : 0),
41  _d_stress_dc(
42  getMaterialPropertyDerivative<RankTwoTensor>(_base_name + "stress", getVar("c", 0)->name()))
43 {
44 }
45 
46 Real
48 {
49  if (_c_coupled && jvar == _c_var)
50  {
51  Real val = 0.0;
52  for (unsigned int k = 0; k < 3; ++k)
53  val += _d_stress_dc[_qp](_component, k) * _grad_test[_i][_qp](k);
54  return val * _phi[_j][_qp];
55  }
56 
57  // Returns if coupled variable is not c (damage variable)
58  return 0.0;
59 }
PhaseFieldFractureMechanicsOffDiag::computeQpOffDiagJacobian
virtual Real computeQpOffDiagJacobian(unsigned int jvar) override
Definition: PhaseFieldFractureMechanicsOffDiag.C:47
PhaseFieldFractureMechanicsOffDiag::_d_stress_dc
const MaterialProperty< RankTwoTensor > & _d_stress_dc
Definition: PhaseFieldFractureMechanicsOffDiag.h:46
PhaseFieldFractureMechanicsOffDiag::_c_coupled
const bool _c_coupled
Definition: PhaseFieldFractureMechanicsOffDiag.h:44
PhaseFieldFractureMechanicsOffDiag
Definition: PhaseFieldFractureMechanicsOffDiag.h:27
PhaseFieldFractureMechanicsOffDiag::_c_var
const unsigned int _c_var
Definition: PhaseFieldFractureMechanicsOffDiag.h:45
PhaseFieldFractureMechanicsOffDiag::PhaseFieldFractureMechanicsOffDiag
PhaseFieldFractureMechanicsOffDiag(const InputParameters &parameters)
Definition: PhaseFieldFractureMechanicsOffDiag.C:34
validParams
InputParameters validParams()
name
const std::string name
Definition: Setup.h:21
PhaseFieldFractureMechanicsOffDiag::_component
const unsigned int _component
Definition: PhaseFieldFractureMechanicsOffDiag.h:42
PhaseFieldFractureMechanicsOffDiag.h
RankTwoTensorTempl< Real >
registerMooseObject
registerMooseObject("TensorMechanicsApp", PhaseFieldFractureMechanicsOffDiag)
PhaseFieldFractureMechanicsOffDiag::validParams
static InputParameters validParams()
Definition: PhaseFieldFractureMechanicsOffDiag.C:17
defineLegacyParams
defineLegacyParams(PhaseFieldFractureMechanicsOffDiag)