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

EshelbyTensor defines a strain increment and rotation increment, for finite strains. More...

#include <EshelbyTensor.h>

Inheritance diagram for EshelbyTensor:
[legend]

Public Member Functions

 EshelbyTensor (const InputParameters &parameters)
 
virtual void initQpStatefulProperties () override
 
virtual void computeQpProperties () override
 

Protected Attributes

std::string _base_name
 
const MaterialProperty< Real > & _sed
 
MaterialProperty< RankTwoTensor > & _eshelby_tensor
 
const MaterialProperty< RankTwoTensor > & _stress
 
const MaterialProperty< RankTwoTensor > & _stress_old
 
std::vector< const VariableGradient * > _grad_disp
 
MaterialProperty< RealVectorValue > & _J_thermal_term_vec
 
const VariableGradient & _grad_temp
 
const bool _has_temp
 
const MaterialProperty< RankTwoTensor > * _total_deigenstrain_dT
 

Detailed Description

EshelbyTensor defines a strain increment and rotation increment, for finite strains.

Definition at line 26 of file EshelbyTensor.h.

Constructor & Destructor Documentation

◆ EshelbyTensor()

EshelbyTensor::EshelbyTensor ( const InputParameters &  parameters)

Definition at line 35 of file EshelbyTensor.C.

36  : DerivativeMaterialInterface<Material>(parameters),
37  _base_name(isParamValid("base_name") ? getParam<std::string>("base_name") + "_" : ""),
38  _sed(getMaterialPropertyByName<Real>(_base_name + "strain_energy_density")),
39  _eshelby_tensor(declareProperty<RankTwoTensor>(_base_name + "Eshelby_tensor")),
40  _stress(getMaterialProperty<RankTwoTensor>(_base_name + "stress")),
41  _stress_old(getMaterialPropertyOld<RankTwoTensor>(_base_name + "stress")),
42  _grad_disp(3),
43  _J_thermal_term_vec(declareProperty<RealVectorValue>("J_thermal_term_vec")),
44  _grad_temp(coupledGradient("temperature")),
45  _has_temp(isCoupled("temperature")),
46  _total_deigenstrain_dT(hasMaterialProperty<RankTwoTensor>("total_deigenstrain_dT")
47  ? &getMaterialProperty<RankTwoTensor>("total_deigenstrain_dT")
48  : nullptr)
49 {
50  unsigned int ndisp = coupledComponents("displacements");
51 
52  // Checking for consistency between mesh size and length of the provided displacements vector
53  if (ndisp != _mesh.dimension())
54  mooseError(
55  "The number of variables supplied in 'displacements' must match the mesh dimension.");
56 
57  // fetch coupled gradients
58  for (unsigned int i = 0; i < ndisp; ++i)
59  _grad_disp[i] = &coupledGradient("displacements", i);
60 
61  // set unused dimensions to zero
62  for (unsigned i = ndisp; i < 3; ++i)
63  _grad_disp[i] = &_grad_zero;
64 
66  mooseError("EshelbyTensor Error: To include thermal strain term in Fracture integral "
67  "calculation, must both couple temperature in DomainIntegral block and compute "
68  "total_deigenstrain_dT using ThermalFractureIntegral material model.");
69 }
const MaterialProperty< RankTwoTensor > * _total_deigenstrain_dT
Definition: EshelbyTensor.h:46
MaterialProperty< RealVectorValue > & _J_thermal_term_vec
Definition: EshelbyTensor.h:43
std::vector< const VariableGradient * > _grad_disp
Definition: EshelbyTensor.h:41
const VariableGradient & _grad_temp
Definition: EshelbyTensor.h:44
const MaterialProperty< RankTwoTensor > & _stress_old
Definition: EshelbyTensor.h:40
const MaterialProperty< RankTwoTensor > & _stress
Definition: EshelbyTensor.h:39
const bool _has_temp
Definition: EshelbyTensor.h:45
const MaterialProperty< Real > & _sed
Definition: EshelbyTensor.h:37
std::string _base_name
Definition: EshelbyTensor.h:35
MaterialProperty< RankTwoTensor > & _eshelby_tensor
Definition: EshelbyTensor.h:38

Member Function Documentation

◆ computeQpProperties()

void EshelbyTensor::computeQpProperties ( )
overridevirtual

Definition at line 77 of file EshelbyTensor.C.

78 {
79  RankTwoTensor F((*_grad_disp[0])[_qp],
80  (*_grad_disp[1])[_qp],
81  (*_grad_disp[2])[_qp]); // Deformation gradient
82 
83  RankTwoTensor H(F);
84  F.addIa(1.0);
85  Real detF = F.det();
86  RankTwoTensor FinvT(F.inverse().transpose());
87 
88  // 1st Piola-Kirchoff Stress (P):
89  RankTwoTensor P = detF * _stress[_qp] * FinvT;
90 
91  // HTP = H^T * P = H^T * detF * sigma * FinvT;
92  RankTwoTensor HTP = H.transpose() * P;
93 
94  RankTwoTensor WI = RankTwoTensor(RankTwoTensor::initIdentity);
95  WI *= (_sed[_qp] * detF);
96 
97  _eshelby_tensor[_qp] = WI - HTP;
98 
99  if (_has_temp)
100  {
101  Real sigma_alpha = _stress[_qp].doubleContraction((*_total_deigenstrain_dT)[_qp]);
102  _J_thermal_term_vec[_qp] = sigma_alpha * _grad_temp[_qp];
103  }
104  else
105  _J_thermal_term_vec[_qp].zero();
106 }
const MaterialProperty< RankTwoTensor > * _total_deigenstrain_dT
Definition: EshelbyTensor.h:46
MaterialProperty< RealVectorValue > & _J_thermal_term_vec
Definition: EshelbyTensor.h:43
std::vector< const VariableGradient * > _grad_disp
Definition: EshelbyTensor.h:41
const VariableGradient & _grad_temp
Definition: EshelbyTensor.h:44
const MaterialProperty< RankTwoTensor > & _stress
Definition: EshelbyTensor.h:39
const bool _has_temp
Definition: EshelbyTensor.h:45
const MaterialProperty< Real > & _sed
Definition: EshelbyTensor.h:37
MaterialProperty< RankTwoTensor > & _eshelby_tensor
Definition: EshelbyTensor.h:38

◆ initQpStatefulProperties()

void EshelbyTensor::initQpStatefulProperties ( )
overridevirtual

Definition at line 72 of file EshelbyTensor.C.

73 {
74 }

Member Data Documentation

◆ _base_name

std::string EshelbyTensor::_base_name
protected

Definition at line 35 of file EshelbyTensor.h.

◆ _eshelby_tensor

MaterialProperty<RankTwoTensor>& EshelbyTensor::_eshelby_tensor
protected

Definition at line 38 of file EshelbyTensor.h.

Referenced by computeQpProperties().

◆ _grad_disp

std::vector<const VariableGradient *> EshelbyTensor::_grad_disp
protected

Definition at line 41 of file EshelbyTensor.h.

Referenced by computeQpProperties(), and EshelbyTensor().

◆ _grad_temp

const VariableGradient& EshelbyTensor::_grad_temp
protected

Definition at line 44 of file EshelbyTensor.h.

Referenced by computeQpProperties().

◆ _has_temp

const bool EshelbyTensor::_has_temp
protected

Definition at line 45 of file EshelbyTensor.h.

Referenced by computeQpProperties(), and EshelbyTensor().

◆ _J_thermal_term_vec

MaterialProperty<RealVectorValue>& EshelbyTensor::_J_thermal_term_vec
protected

Definition at line 43 of file EshelbyTensor.h.

Referenced by computeQpProperties().

◆ _sed

const MaterialProperty<Real>& EshelbyTensor::_sed
protected

Definition at line 37 of file EshelbyTensor.h.

Referenced by computeQpProperties().

◆ _stress

const MaterialProperty<RankTwoTensor>& EshelbyTensor::_stress
protected

Definition at line 39 of file EshelbyTensor.h.

Referenced by computeQpProperties().

◆ _stress_old

const MaterialProperty<RankTwoTensor>& EshelbyTensor::_stress_old
protected

Definition at line 40 of file EshelbyTensor.h.

◆ _total_deigenstrain_dT

const MaterialProperty<RankTwoTensor>* EshelbyTensor::_total_deigenstrain_dT
protected

Definition at line 46 of file EshelbyTensor.h.

Referenced by computeQpProperties(), and EshelbyTensor().


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