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

Phase-field fracture This class computes the stress and energy contribution to fracture Small strain Anisotropic Elastic formulation Stiffness matrix scaled for heterogeneous elasticity property. More...

#include <ComputeLinearElasticPFFractureStress.h>

Inheritance diagram for ComputeLinearElasticPFFractureStress:
[legend]

Public Member Functions

 ComputeLinearElasticPFFractureStress (const InputParameters &parameters)
 

Protected Member Functions

virtual void computeQpStress ()
 
virtual void initQpStatefulProperties () override
 
virtual void computeQpProperties () override
 
void addQpInitialStress ()
 InitialStress Deprecation: remove this method. More...
 

Protected Attributes

const VariableValue & _c
 
Real _kdamage
 Small number to avoid non-positive definiteness at or near complete damage. More...
 
MaterialProperty< Real > & _F
 
MaterialProperty< Real > & _dFdc
 
MaterialProperty< Real > & _d2Fdc2
 
MaterialProperty< RankTwoTensor > & _d2Fdcdstrain
 
MaterialProperty< RankTwoTensor > & _dstress_dc
 
const std::string _base_name
 
const std::string _elasticity_tensor_name
 
const MaterialProperty< RankTwoTensor > & _mechanical_strain
 
MaterialProperty< RankTwoTensor > & _stress
 
MaterialProperty< RankTwoTensor > & _elastic_strain
 
const MaterialProperty< RankFourTensor > & _elasticity_tensor
 
const MaterialProperty< RankTwoTensor > & _extra_stress
 Extra stress tensor. More...
 
std::vector< Function * > _initial_stress_fcn
 initial stress components More...
 
MaterialProperty< RankFourTensor > & _Jacobian_mult
 derivative of stress w.r.t. strain (_dstress_dstrain) More...
 
const bool _store_stress_old
 Parameter which decides whether to store old stress. This is required for HHT time integration and Rayleigh damping. More...
 
const bool _initial_stress_provided
 Whether initial stress was provided. InitialStress Deprecation: remove this. More...
 
MaterialProperty< RankTwoTensor > * _initial_stress
 Initial stress, if provided. InitialStress Deprecation: remove this. More...
 
const MaterialProperty< RankTwoTensor > * _initial_stress_old
 Old value of initial stress, which is needed to correctly implement finite-strain rotations. InitialStress Deprecation: remove this. More...
 

Detailed Description

Phase-field fracture This class computes the stress and energy contribution to fracture Small strain Anisotropic Elastic formulation Stiffness matrix scaled for heterogeneous elasticity property.

Definition at line 18 of file ComputeLinearElasticPFFractureStress.h.

Constructor & Destructor Documentation

ComputeLinearElasticPFFractureStress::ComputeLinearElasticPFFractureStress ( const InputParameters &  parameters)

Definition at line 23 of file ComputeLinearElasticPFFractureStress.C.

25  : ComputeStressBase(parameters),
26  _c(coupledValue("c")),
27  _kdamage(getParam<Real>("kdamage")),
28  _F(declareProperty<Real>(getParam<MaterialPropertyName>("F_name"))),
29  _dFdc(declarePropertyDerivative<Real>(getParam<MaterialPropertyName>("F_name"),
30  getVar("c", 0)->name())),
31  _d2Fdc2(declarePropertyDerivative<Real>(
32  getParam<MaterialPropertyName>("F_name"), getVar("c", 0)->name(), getVar("c", 0)->name())),
33  _d2Fdcdstrain(declareProperty<RankTwoTensor>("d2Fdcdstrain")),
35  declarePropertyDerivative<RankTwoTensor>(_base_name + "stress", getVar("c", 0)->name()))
36 {
37 }
const std::string _base_name
ComputeStressBase(const InputParameters &parameters)
Real _kdamage
Small number to avoid non-positive definiteness at or near complete damage.

Member Function Documentation

void ComputeStressBase::addQpInitialStress ( )
protectedinherited

InitialStress Deprecation: remove this method.

Adds initial stress, if it is provided, to _stress[_qp]. This function should NOT be used if you calculate stress using

stress = stress_old + elasticity * strain_increment

because stress_old will already include initial stress. However this function SHOULD be used if your code uses

stress = elasticity * (elastic_strain_old + strain_increment) or stress = elasticity * elastic_strain

since in these cases the elastic_strain and elastic_strain_old will not include any contribution from initial stress.

Definition at line 112 of file ComputeStressBase.C.

Referenced by ComputeLinearElasticStress::computeQpStress(), ComputeCosseratLinearElasticStress::computeQpStress(), ComputeFiniteStrainElasticStress::computeQpStress(), ComputeSmearedCrackingStress::computeQpStress(), ComputeMultipleInelasticStress::computeQpStressIntermediateConfiguration(), ComputeStressBase::initQpStatefulProperties(), ComputeMultipleInelasticStress::updateQpState(), and ComputeMultipleInelasticStress::updateQpStateSingleModel().

113 {
115  _stress[_qp] += (*_initial_stress)[_qp];
116 }
MaterialProperty< RankTwoTensor > & _stress
const bool _initial_stress_provided
Whether initial stress was provided. InitialStress Deprecation: remove this.
void ComputeStressBase::computeQpProperties ( )
overrideprotectedvirtualinherited

Reimplemented in ComputeBirchMurnaghanEquationOfStress, and ComputeStressEosBase.

Definition at line 99 of file ComputeStressBase.C.

100 {
101  // InitialStress Deprecation: remove the following 2 lines
103  (*_initial_stress)[_qp] = (*_initial_stress_old)[_qp];
104 
105  computeQpStress();
106 
107  // Add in extra stress
108  _stress[_qp] += _extra_stress[_qp];
109 }
virtual void computeQpStress()=0
MaterialProperty< RankTwoTensor > & _stress
const bool _initial_stress_provided
Whether initial stress was provided. InitialStress Deprecation: remove this.
const MaterialProperty< RankTwoTensor > & _extra_stress
Extra stress tensor.
void ComputeLinearElasticPFFractureStress::computeQpStress ( )
protectedvirtual

Implements ComputeStressBase.

Definition at line 40 of file ComputeLinearElasticPFFractureStress.C.

41 {
42  const Real c = _c[_qp];
43 
44  // Compute usual Jacobian mult
46 
47  // Zero out values when c > 1
48  Real cfactor = 1.0;
49  if (c > 1.0)
50  cfactor = 0.0;
51 
52  // Compute eigenvectors and eigenvalues of ustress
53  RankTwoTensor eigvec;
54  std::vector<Real> eigval(LIBMESH_DIM);
55  _mechanical_strain[_qp].symmetricEigenvaluesEigenvectors(eigval, eigvec);
56 
57  RankTwoTensor Ipos, Ineg, eigval_tensor;
58  RankTwoTensor I(RankTwoTensor::initIdentity);
59  eigval_tensor.fillFromInputVector(eigval);
60 
61  for (unsigned int i = 0; i < LIBMESH_DIM; ++i)
62  if (eigval[i] < 0.0)
63  Ineg(i, i) = 1.0;
64 
65  Ipos = I - Ineg;
66 
67  // Creation of some critical fourth order tensors
68  RankFourTensor QoQ = eigvec.mixedProductIkJl(eigvec);
69  RankFourTensor QToQT = (eigvec.transpose()).mixedProductIkJl(eigvec.transpose());
70  RankFourTensor IpoIp = Ipos.mixedProductIkJl(I);
71  RankFourTensor InoIn = Ineg.mixedProductIkJl(I);
72 
73  const RankFourTensor Jpos = _Jacobian_mult[_qp] * QoQ * IpoIp * QToQT;
74  const RankFourTensor Jneg = _Jacobian_mult[_qp] * QoQ * InoIn * QToQT;
75  _Jacobian_mult[_qp] = cfactor * Jpos * ((1.0 - c) * (1.0 - c) + _kdamage) + Jneg;
76 
77  RankTwoTensor stress0pos = Jpos * _mechanical_strain[_qp];
78  RankTwoTensor stress0neg = Jneg * _mechanical_strain[_qp];
79 
80  // Damage associated with positive component of stress
81  _stress[_qp] = cfactor * stress0pos * ((1.0 - c) * (1.0 - c) + _kdamage) + stress0neg;
82  // _stress[_qp] = _Jacobian_mult[_qp] * _mechanical_strain[_qp];
83 
84  // Energy with positive principal strains
85  const Real G0_pos = stress0pos.doubleContraction(_mechanical_strain[_qp]) / 2.0;
86  const Real G0_neg = stress0neg.doubleContraction(_mechanical_strain[_qp]) / 2.0;
87 
88  // Elastic free energy density
89  _F[_qp] = cfactor * G0_pos * ((1.0 - c) * (1.0 - c) + _kdamage) + G0_neg;
90 
91  // derivative of elastic free energy density wrt c
92  _dFdc[_qp] = -cfactor * G0_pos * 2.0 * (1.0 - c);
93 
94  // 2nd derivative of elastic free energy density wrt c
95  _d2Fdc2[_qp] = cfactor * G0_pos * 2.0;
96 
97  // 2nd derivative wrt c and strain
98  _d2Fdcdstrain[_qp] = -cfactor * stress0pos * (1.0 - c);
99 
100  // Used in StressDivergencePFFracTensors off-diagonal Jacobian
101  _dstress_dc[_qp] = -cfactor * stress0pos * 2.0 * (1.0 - c);
102 }
MaterialProperty< RankFourTensor > & _Jacobian_mult
derivative of stress w.r.t. strain (_dstress_dstrain)
MaterialProperty< RankTwoTensor > & _stress
const MaterialProperty< RankTwoTensor > & _mechanical_strain
Real _kdamage
Small number to avoid non-positive definiteness at or near complete damage.
const MaterialProperty< RankFourTensor > & _elasticity_tensor
void ComputeStressBase::initQpStatefulProperties ( )
overrideprotectedvirtualinherited

Reimplemented in FiniteStrainHyperElasticViscoPlastic, FiniteStrainUObasedCP, FiniteStrainCrystalPlasticity, ComputeMultipleInelasticCosseratStress, ComputeMultipleInelasticStress, ComputeMultiPlasticityStress, ComputeLinearViscoelasticStress, ComputeSmearedCrackingStress, FiniteStrainPlasticMaterial, ComputeFiniteStrainElasticStressBirchMurnaghan, ComputeFiniteStrainElasticStress, ComputeIsotropicLinearElasticPFFractureStress, and ComputeCosseratStressBase.

Definition at line 83 of file ComputeStressBase.C.

Referenced by ComputeCosseratStressBase::initQpStatefulProperties(), ComputeFiniteStrainElasticStress::initQpStatefulProperties(), ComputeFiniteStrainElasticStressBirchMurnaghan::initQpStatefulProperties(), FiniteStrainPlasticMaterial::initQpStatefulProperties(), ComputeMultiPlasticityStress::initQpStatefulProperties(), and ComputeMultipleInelasticStress::initQpStatefulProperties().

84 {
85  _elastic_strain[_qp].zero();
86  _stress[_qp].zero();
87  // InitialStress Deprecation: remove the following
89  {
90  for (unsigned i = 0; i < LIBMESH_DIM; ++i)
91  for (unsigned j = 0; j < LIBMESH_DIM; ++j)
92  (*_initial_stress)[_qp](i, j) =
93  _initial_stress_fcn[i * LIBMESH_DIM + j]->value(_t, _q_point[_qp]);
94  }
96 }
std::vector< Function * > _initial_stress_fcn
initial stress components
MaterialProperty< RankTwoTensor > & _stress
void addQpInitialStress()
InitialStress Deprecation: remove this method.
const bool _initial_stress_provided
Whether initial stress was provided. InitialStress Deprecation: remove this.
MaterialProperty< RankTwoTensor > & _elastic_strain
MaterialProperty< RankTwoTensor > * _initial_stress
Initial stress, if provided. InitialStress Deprecation: remove this.

Member Data Documentation

const std::string ComputeStressBase::_base_name
protectedinherited
const VariableValue& ComputeLinearElasticPFFractureStress::_c
protected

Definition at line 26 of file ComputeLinearElasticPFFractureStress.h.

Referenced by computeQpStress().

MaterialProperty<Real>& ComputeLinearElasticPFFractureStress::_d2Fdc2
protected

Definition at line 32 of file ComputeLinearElasticPFFractureStress.h.

Referenced by computeQpStress().

MaterialProperty<RankTwoTensor>& ComputeLinearElasticPFFractureStress::_d2Fdcdstrain
protected

Definition at line 33 of file ComputeLinearElasticPFFractureStress.h.

Referenced by computeQpStress().

MaterialProperty<Real>& ComputeLinearElasticPFFractureStress::_dFdc
protected

Definition at line 31 of file ComputeLinearElasticPFFractureStress.h.

Referenced by computeQpStress().

MaterialProperty<RankTwoTensor>& ComputeLinearElasticPFFractureStress::_dstress_dc
protected

Definition at line 34 of file ComputeLinearElasticPFFractureStress.h.

Referenced by computeQpStress().

MaterialProperty<RankTwoTensor>& ComputeStressBase::_elastic_strain
protectedinherited
const MaterialProperty<RankFourTensor>& ComputeStressBase::_elasticity_tensor
protectedinherited
const std::string ComputeStressBase::_elasticity_tensor_name
protectedinherited
const MaterialProperty<RankTwoTensor>& ComputeStressBase::_extra_stress
protectedinherited
MaterialProperty<Real>& ComputeLinearElasticPFFractureStress::_F
protected

Definition at line 30 of file ComputeLinearElasticPFFractureStress.h.

Referenced by computeQpStress().

MaterialProperty<RankTwoTensor>* ComputeStressBase::_initial_stress
protectedinherited

Initial stress, if provided. InitialStress Deprecation: remove this.

Definition at line 74 of file ComputeStressBase.h.

Referenced by ComputeStressBase::initQpStatefulProperties().

std::vector<Function *> ComputeStressBase::_initial_stress_fcn
protectedinherited

initial stress components

Definition at line 62 of file ComputeStressBase.h.

Referenced by ComputeStressBase::ComputeStressBase(), and ComputeStressBase::initQpStatefulProperties().

const MaterialProperty<RankTwoTensor>* ComputeStressBase::_initial_stress_old
protectedinherited

Old value of initial stress, which is needed to correctly implement finite-strain rotations. InitialStress Deprecation: remove this.

Definition at line 77 of file ComputeStressBase.h.

const bool ComputeStressBase::_initial_stress_provided
protectedinherited
MaterialProperty<RankFourTensor>& ComputeStressBase::_Jacobian_mult
protectedinherited
Real ComputeLinearElasticPFFractureStress::_kdamage
protected

Small number to avoid non-positive definiteness at or near complete damage.

Definition at line 28 of file ComputeLinearElasticPFFractureStress.h.

Referenced by computeQpStress().

const MaterialProperty<RankTwoTensor>& ComputeStressBase::_mechanical_strain
protectedinherited
const bool ComputeStressBase::_store_stress_old
protectedinherited

Parameter which decides whether to store old stress. This is required for HHT time integration and Rayleigh damping.

Definition at line 68 of file ComputeStressBase.h.

MaterialProperty<RankTwoTensor>& ComputeStressBase::_stress
protectedinherited

Definition at line 53 of file ComputeStressBase.h.

Referenced by ComputeStressBase::addQpInitialStress(), ComputeMultipleInelasticCosseratStress::computeAdmissibleState(), ComputeMultipleInelasticStress::computeAdmissibleState(), ComputeStressBase::computeQpProperties(), ComputeStressEosBase::computeQpProperties(), ComputeBirchMurnaghanEquationOfStress::computeQpProperties(), ComputeLinearElasticStress::computeQpStress(), ComputeStrainIncrementBasedStress::computeQpStress(), computeQpStress(), ComputeCosseratLinearElasticStress::computeQpStress(), ComputeFiniteStrainElasticStress::computeQpStress(), ComputeIsotropicLinearElasticPFFractureStress::computeQpStress(), ComputeFiniteStrainElasticStressBirchMurnaghan::computeQpStress(), FiniteStrainPlasticMaterial::computeQpStress(), ComputeMultiPlasticityStress::computeQpStress(), ComputeSmearedCrackingStress::computeQpStress(), ComputeLinearViscoelasticStress::computeQpStress(), ComputeMultipleInelasticStress::computeQpStressIntermediateConfiguration(), ComputeSmearedCrackingStress::crackingStressRotation(), ComputeMultipleInelasticStress::finiteStrainRotation(), ComputeStressBase::initQpStatefulProperties(), FiniteStrainCrystalPlasticity::initQpStatefulProperties(), FiniteStrainUObasedCP::initQpStatefulProperties(), FiniteStrainHyperElasticViscoPlastic::initQpStatefulProperties(), ComputeMultiPlasticityStress::postReturnMap(), FiniteStrainUObasedCP::postSolveQp(), FiniteStrainHyperElasticViscoPlastic::postSolveQp(), FiniteStrainCrystalPlasticity::postSolveQp(), ComputeMultipleInelasticStress::updateQpState(), ComputeMultipleInelasticStress::updateQpStateSingleModel(), and LinearIsoElasticPFDamage::updateVar().


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