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

Phase field based fracture model, non-split form This kernel computes the residual and Jacobian for bulk free energy contribution to c Refer to Formulation: Miehe et. More...

#include <PFFractureBulkRate.h>

Inheritance diagram for PFFractureBulkRate:
[legend]

Public Member Functions

 PFFractureBulkRate (const InputParameters &parameters)
 

Protected Member Functions

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

Protected Attributes

const VariableSecond & _second_u
 second derivative of the kernel variable More...
 
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, non-split form 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 PFFractureBulkRate.h.

Constructor & Destructor Documentation

PFFractureBulkRate::PFFractureBulkRate ( const InputParameters &  parameters)

Definition at line 22 of file PFFractureBulkRate.C.

23  : PFFractureBulkRateBase(parameters), _second_u(second())
24 {
25 }
PFFractureBulkRateBase(const InputParameters &parameters)
const VariableSecond & _second_u
second derivative of the kernel variable

Member Function Documentation

Real PFFractureBulkRate::computeQpJacobian ( )
protectedvirtual

Definition at line 51 of file PFFractureBulkRate.C.

52 {
53  const Real & gc = _gc_prop[_qp];
54  const Real & c = _u[_qp];
55  const Real beta = _second_u[_qp].tr();
56  const Real x = _width * beta + 2.0 * (1.0 - c) * _G0_pos[_qp] / gc - c / _width;
57 
58  if (x > 0)
59  {
60  const Real dx =
61  -_width * _grad_phi[_j][_qp] * _grad_test[_i][_qp] -
62  (2.0 * _phi[_j][_qp] * _G0_pos[_qp] / gc - _phi[_j][_qp] / _width) * _test[_i][_qp];
63 
64  return -dx / _viscosity;
65  }
66 
67  return 0.0;
68 }
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 VariableSecond & _second_u
second derivative of the kernel variable
const Real _viscosity
Viscosity parameter ( viscosity -> 0, rate independent )
Real PFFractureBulkRate::computeQpOffDiagJacobian ( unsigned int  jvar)
protectedvirtual

Definition at line 71 of file PFFractureBulkRate.C.

72 {
73  // bail out early if no stress derivative has been provided
74  if (_dG0_pos_dstrain == NULL)
75  return 0.0;
76 
77  // displacement variables
78  unsigned int c_comp = 0;
79  for (; c_comp < _ndisp; ++c_comp)
80  if (jvar == _disp_var[c_comp])
81  break;
82 
83  // Contribution of displacements to off-diagonal Jacobian of c
84  if (c_comp < _ndisp)
85  {
86  const Real & c = _u[_qp];
87  const Real & gc = _gc_prop[_qp];
88  const Real beta = _second_u[_qp].tr();
89  const Real x1 = _width * beta;
90  const Real x2 = 2.0 * (1.0 - c) * _G0_pos[_qp] / gc - c / _width;
91  if (x1 + x2 > 0)
92  {
93  const Real xfac = -(-_width * _grad_u[_qp] * _grad_test[_i][_qp] + x2 * _test[_i][_qp]) /
94  _viscosity * 2.0 * (1.0 - c) / gc;
95 
96  Real val = 0.0;
97  for (unsigned int i = 0; i < LIBMESH_DIM; ++i)
98  val += ((*_dG0_pos_dstrain)[_qp](c_comp, i) + (*_dG0_pos_dstrain)[_qp](i, c_comp)) / 2.0 *
99  _grad_phi[_j][_qp](i);
100 
101  return xfac * val;
102  }
103  }
104 
105  return 0.0;
106 }
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 VariableSecond & _second_u
second derivative of the kernel variable
const Real _viscosity
Viscosity parameter ( viscosity -> 0, rate independent )
Real PFFractureBulkRate::computeQpResidual ( )
protectedvirtual

This if implements the <...>+ positive part operator. To determine if the expression is positive we use the original form that is not integrated by parts. The residual we return, however, replaces x1 with the expression that is integrated by parts once (_second_u[_qp].tr() * _test[_i][_qp] -> -_grad_u[_qp] * _grad_test[_i][_qp]). This allows the user to use H1 (square integrable first derivatives) shape functions (such as Lagrange).

Definition at line 28 of file PFFractureBulkRate.C.

29 {
30  const Real & gc = _gc_prop[_qp];
31  const Real & c = _u[_qp];
32  const Real beta = _second_u[_qp].tr();
33  const Real x2 = 2.0 * (1.0 - c) * _G0_pos[_qp] / gc - c / _width;
34  const Real x1 = _width * beta;
35 
44  if (x1 + x2 > 0)
45  return -(-_width * _grad_u[_qp] * _grad_test[_i][_qp] + x2 * _test[_i][_qp]) / _viscosity;
46 
47  return 0.0;
48 }
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 VariableSecond & _second_u
second derivative of the kernel variable
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 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 computeQpOffDiagJacobian(), and SplitPFFractureBulkRate::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 VariableSecond& PFFractureBulkRate::_second_u
protected

second derivative of the kernel variable

Definition at line 34 of file PFFractureBulkRate.h.

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

const Real PFFractureBulkRateBase::_viscosity
protectedinherited
const Real PFFractureBulkRateBase::_width
protectedinherited

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