https://mooseframework.inl.gov
Loading...
Searching...
No Matches
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
38Real
40{
41 return _beta_penalty * _L[_qp] * _kappa[_qp] * (_grad_u[_qp] * _cleavage_plane_normal) *
42 (_grad_test[_i][_qp] * _cleavage_plane_normal);
43}
44
45Real
50
51Real
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 =
63 _grad_phi[_j][_qp] * _dLdop[_qp] + _grad_u[_qp] * _phi[_j][_qp] * _d2Ldop2[_qp];
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 -
72 _beta_penalty * _L[_qp] * _kappa[_qp] * (_grad_u[_qp] * _cleavage_plane_normal) *
73 (_grad_phi[_j][_qp] * _cleavage_plane_normal);
74}
registerMooseObject("PhaseFieldApp", ACInterfaceCleavageFracture)
Considers cleavage plane anisotropy in the crack propagation.
Considers cleavage plane anisotropy in the crack propagation.
ACInterfaceCleavageFracture(const InputParameters &parameters)
const Real _beta_penalty
penalty for damage on planes not normal to the weak (favoured) cleavage plane (Clayton & Knap,...
Real betaNablaPsi()
term with beta penalty
const RealVectorValue _cleavage_plane_normal
Plane normal to the weak cleavage plane: M in (Clayton & Knap, 2015)
Compute the Allen-Cahn interface term with the weak form residual .
Definition ACInterface.h:21
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:94
std::vector< const VariableGradient * > _gradarg
Gradients for all coupled variables.
Definition ACInterface.h:68
RealGradient gradL()
Definition ACInterface.C:73
const MaterialProperty< Real > & _dLdop
Mobility derivatives w.r.t. order parameter.
Definition ACInterface.h:51
const MaterialProperty< Real > & _d2Ldop2
Definition ACInterface.h:52
static InputParameters validParams()
Definition ACInterface.C:15
const MaterialProperty< Real > & _L
Mobility.
Definition ACInterface.h:43
std::vector< const MaterialProperty< Real > * > _d2Ldargdop
Definition ACInterface.h:60
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
void addRequiredParam(const std::string &name, const std::string &doc_string)
void addClassDescription(const std::string &doc_string)