www.mooseframework.org
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
SplitPFFractureBulkRate Class Reference

Phase field based fracture model, split form where beta = laplace(c) This kernel computes the residual and Jacobian for bulk free energy contribution to c Refer to Formulation: Miehe et. More...

#include <SplitPFFractureBulkRate.h>

Inheritance diagram for SplitPFFractureBulkRate:
[legend]

Public Member Functions

 SplitPFFractureBulkRate (const InputParameters &parameters)
 

Protected Member Functions

virtual Real computeQpResidual ()
 
virtual Real computeQpJacobian ()
 
virtual Real computeQpOffDiagJacobian (unsigned int jvar)
 

Protected Attributes

const VariableValue & _beta
 Auxiliary variable: beta = Laplacian of c. More...
 
const unsigned int _beta_var
 
const MaterialProperty< Real > & _gc_prop
 Critical energy release rate for fracture. More...
 
const MaterialProperty< Real > & _G0_pos
 Contribution of umdamaged strain energy to damage evolution. More...
 
const MaterialProperty< RankTwoTensor > * _dG0_pos_dstrain
 Variation of undamaged strain energy driving damage evolution with strain. More...
 
const unsigned int _ndisp
 Coupled displacement variables. More...
 
std::vector< unsigned int > _disp_var
 
std::string _base_name
 
const Real _width
 Diffuse crack width, controls damage zone thickness. More...
 
const Real _viscosity
 Viscosity parameter ( viscosity -> 0, rate independent ) More...
 

Detailed Description

Phase field based fracture model, split form where beta = laplace(c) This kernel computes the residual and Jacobian for bulk free energy contribution to c Refer to Formulation: Miehe et.

al., Int. J. Num. Methods Engg., 2010, 83. 1273-1311 Equation 63

Definition at line 23 of file SplitPFFractureBulkRate.h.

Constructor & Destructor Documentation

SplitPFFractureBulkRate::SplitPFFractureBulkRate ( const InputParameters &  parameters)

Definition at line 22 of file SplitPFFractureBulkRate.C.

23  : PFFractureBulkRateBase(parameters), _beta(coupledValue("beta")), _beta_var(coupled("beta"))
24 {
25 }
PFFractureBulkRateBase(const InputParameters &parameters)
const VariableValue & _beta
Auxiliary variable: beta = Laplacian of c.

Member Function Documentation

Real SplitPFFractureBulkRate::computeQpJacobian ( )
protectedvirtual

Definition at line 38 of file SplitPFFractureBulkRate.C.

39 {
40  const Real & gc = _gc_prop[_qp];
41  const Real & c = _u[_qp];
42  const Real x = _width * _beta[_qp] + 2.0 * (1.0 - c) * _G0_pos[_qp] / gc - c / _width;
43  const Real dx = -2.0 * _G0_pos[_qp] / gc - 1.0 / _width;
44 
45  return -MathUtils::heavyside(x) / _viscosity * dx * _phi[_j][_qp] * _test[_i][_qp];
46 }
Real heavyside(Real x)
Definition: MathUtils.h:38
const Real _width
Diffuse crack width, controls damage zone thickness.
const MaterialProperty< Real > & _G0_pos
Contribution of umdamaged strain energy to damage evolution.
const MaterialProperty< Real > & _gc_prop
Critical energy release rate for fracture.
const VariableValue & _beta
Auxiliary variable: beta = Laplacian of c.
const Real _viscosity
Viscosity parameter ( viscosity -> 0, rate independent )
Real SplitPFFractureBulkRate::computeQpOffDiagJacobian ( unsigned int  jvar)
protectedvirtual

Definition at line 49 of file SplitPFFractureBulkRate.C.

50 {
51 
52  const Real & c = _u[_qp];
53  const Real & gc = _gc_prop[_qp];
54  const Real x = _width * _beta[_qp] + 2.0 * (1.0 - c) * (_G0_pos[_qp] / gc) - c / _width;
55 
56  // Contribution of Laplacian split variable
57  if (jvar == _beta_var)
58  {
59  const Real xfacbeta = -MathUtils::heavyside(x) / _viscosity * _width;
60  return xfacbeta * _phi[_j][_qp] * _test[_i][_qp];
61  }
62 
63  // bail out early if no stress derivative has been provided
64  if (_dG0_pos_dstrain == NULL)
65  return 0.0;
66 
67  // displacement variables
68  unsigned int c_comp = 0;
69  for (; c_comp < _ndisp; ++c_comp)
70  if (jvar == _disp_var[c_comp])
71  break;
72 
73  // Contribution of displacements to off-diagonal Jacobian of c
74  if (c_comp < _ndisp)
75  {
76  const Real xfac = -MathUtils::heavyside(x) / _viscosity * 2.0 * (1.0 - c) / gc;
77  Real val = 0.0;
78  for (unsigned int i = 0; i < LIBMESH_DIM; ++i)
79  val += ((*_dG0_pos_dstrain)[_qp](c_comp, i) + (*_dG0_pos_dstrain)[_qp](i, c_comp)) / 2.0 *
80  _grad_phi[_j][_qp](i);
81 
82  return xfac * val * _test[_i][_qp];
83  }
84 
85  return 0.0;
86 }
Real heavyside(Real x)
Definition: MathUtils.h:38
const Real _width
Diffuse crack width, controls damage zone thickness.
const MaterialProperty< Real > & _G0_pos
Contribution of umdamaged strain energy to damage evolution.
std::vector< unsigned int > _disp_var
const MaterialProperty< Real > & _gc_prop
Critical energy release rate for fracture.
const unsigned int _ndisp
Coupled displacement variables.
const MaterialProperty< RankTwoTensor > * _dG0_pos_dstrain
Variation of undamaged strain energy driving damage evolution with strain.
const VariableValue & _beta
Auxiliary variable: beta = Laplacian of c.
const Real _viscosity
Viscosity parameter ( viscosity -> 0, rate independent )
Real SplitPFFractureBulkRate::computeQpResidual ( )
protectedvirtual

Definition at line 28 of file SplitPFFractureBulkRate.C.

29 {
30  const Real & gc = _gc_prop[_qp];
31  const Real & c = _u[_qp];
32  const Real x = _width * _beta[_qp] + 2.0 * (1.0 - c) * _G0_pos[_qp] / gc - c / _width;
33 
34  return -MathUtils::positivePart(x) / _viscosity * _test[_i][_qp];
35 }
const Real _width
Diffuse crack width, controls damage zone thickness.
const MaterialProperty< Real > & _G0_pos
Contribution of umdamaged strain energy to damage evolution.
const MaterialProperty< Real > & _gc_prop
Critical energy release rate for fracture.
const VariableValue & _beta
Auxiliary variable: beta = Laplacian of c.
Real positivePart(Real x)
Definition: MathUtils.h:43
const Real _viscosity
Viscosity parameter ( viscosity -> 0, rate independent )

Member Data Documentation

std::string PFFractureBulkRateBase::_base_name
protectedinherited

Definition at line 42 of file PFFractureBulkRateBase.h.

const VariableValue& SplitPFFractureBulkRate::_beta
protected

Auxiliary variable: beta = Laplacian of c.

Definition at line 34 of file SplitPFFractureBulkRate.h.

Referenced by computeQpJacobian(), computeQpOffDiagJacobian(), and computeQpResidual().

const unsigned int SplitPFFractureBulkRate::_beta_var
protected

Definition at line 35 of file SplitPFFractureBulkRate.h.

Referenced by computeQpOffDiagJacobian().

const MaterialProperty<RankTwoTensor>* PFFractureBulkRateBase::_dG0_pos_dstrain
protectedinherited

Variation of undamaged strain energy driving damage evolution with strain.

Definition at line 37 of file PFFractureBulkRateBase.h.

Referenced by PFFractureBulkRate::computeQpOffDiagJacobian(), and computeQpOffDiagJacobian().

std::vector<unsigned int> PFFractureBulkRateBase::_disp_var
protectedinherited
const MaterialProperty<Real>& PFFractureBulkRateBase::_G0_pos
protectedinherited
const MaterialProperty<Real>& PFFractureBulkRateBase::_gc_prop
protectedinherited
const unsigned int PFFractureBulkRateBase::_ndisp
protectedinherited
const Real PFFractureBulkRateBase::_viscosity
protectedinherited
const Real PFFractureBulkRateBase::_width
protectedinherited

The documentation for this class was generated from the following files: