https://mooseframework.inl.gov
ACInterfaceCleavageFracture.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 
13 
15 
18 {
20  params.addClassDescription("Gradient energy Allen-Cahn Kernel where crack propagation along weak"
21  "cleavage plane is preferred");
22  params.addRequiredParam<Real>(
23  "beta_penalty",
24  "penalty to penalize fracture on planes not normal to one cleavage plane normal which is "
25  "normal to weak cleavage plane. Setting beta=0 results in isotropic damage.");
26  params.addRequiredParam<RealVectorValue>("cleavage_plane_normal",
27  "Normal to the weak cleavage plane");
28  return params;
29 }
30 
32  : ACInterface(parameters),
33  _beta_penalty(getParam<Real>("beta_penalty")),
34  _cleavage_plane_normal(getParam<RealVectorValue>("cleavage_plane_normal"))
35 {
36 }
37 
38 Real
40 {
43 }
44 
45 Real
47 {
48  return (1 + _beta_penalty) * _grad_u[_qp] * kappaNablaLPsi() - betaNablaPsi();
49 }
50 
51 Real
53 {
56  RealGradient dsum =
57  (_dkappadop[_qp] * _L[_qp] + _kappa[_qp] * _dLdop[_qp]) * _phi[_j][_qp] * _grad_test[_i][_qp];
58 
60  if (_variable_L)
61  {
62  RealGradient dgradL =
64 
65  for (unsigned int i = 0; i < _n_args; ++i)
66  dgradL += (*_gradarg[i])[_qp] * _phi[_j][_qp] * (*_d2Ldargdop[i])[_qp];
67 
68  dsum += (_kappa[_qp] * dgradL + _dkappadop[_qp] * _phi[_j][_qp] * gradL()) * _test[_i][_qp];
69  }
70 
71  return (1 + _beta_penalty) * _grad_phi[_j][_qp] * kappaNablaLPsi() + _grad_u[_qp] * dsum -
74 }
static InputParameters validParams()
Definition: ACInterface.C:15
std::vector< const VariableGradient * > _gradarg
Gradients for all coupled variables.
Definition: ACInterface.h:68
const MaterialProperty< Real > & _L
Mobility.
Definition: ACInterface.h:43
const bool _variable_L
flag set if L is a function of non-linear variables in args
Definition: ACInterface.h:48
RealGradient kappaNablaLPsi()
the term
Definition: ACInterface.C:100
void addRequiredParam(const std::string &name, const std::string &doc_string)
const MaterialProperty< Real > & _dLdop
Mobility derivatives w.r.t. order parameter.
Definition: ACInterface.h:51
std::vector< const MaterialProperty< Real > * > _d2Ldargdop
Definition: ACInterface.h:60
static InputParameters validParams()
Compute the Allen-Cahn interface term with the weak form residual .
Definition: ACInterface.h:20
registerMooseObject("PhaseFieldApp", ACInterfaceCleavageFracture)
Considers cleavage plane anisotropy in the crack propagation.
const RealVectorValue _cleavage_plane_normal
Plane normal to the weak cleavage plane: M in (Clayton & Knap, 2015)
const Real _beta_penalty
penalty for damage on planes not normal to the weak (favoured) cleavage plane (Clayton & Knap...
const MaterialProperty< Real > & _dkappadop
kappa derivative w.r.t. order parameter
Definition: ACInterface.h:56
const MaterialProperty< Real > & _kappa
Interfacial parameter.
Definition: ACInterface.h:45
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const MaterialProperty< Real > & _d2Ldop2
Definition: ACInterface.h:52
Considers cleavage plane anisotropy in the crack propagation.
ACInterfaceCleavageFracture(const InputParameters &parameters)
void addClassDescription(const std::string &doc_string)
Real betaNablaPsi()
term with beta penalty
RealGradient gradL()
Definition: ACInterface.C:79