www.mooseframework.org
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
ComputeBirchMurnaghanEquationOfStress Class Referenceabstract

#include <ComputeBirchMurnaghanEquationOfStress.h>

Inheritance diagram for ComputeBirchMurnaghanEquationOfStress:
[legend]

Public Member Functions

 ComputeBirchMurnaghanEquationOfStress (const InputParameters &parameters)
 

Protected Member Functions

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

Protected Attributes

const Real _n_Murnaghan
 
const Real _Bulk_Modulus_Ref
 
const Real _C0
 
const Real _C1
 
const MaterialProperty< RankTwoTensor > & _deformation_gradient
 
const MaterialProperty< RankTwoTensor > & _deformation_gradient_old
 
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

Definition at line 26 of file ComputeBirchMurnaghanEquationOfStress.h.

Constructor & Destructor Documentation

ComputeBirchMurnaghanEquationOfStress::ComputeBirchMurnaghanEquationOfStress ( const InputParameters &  parameters)

Definition at line 28 of file ComputeBirchMurnaghanEquationOfStress.C.

30  : ComputeStressBase(parameters),
31  _n_Murnaghan(getParam<Real>("n_Murnaghan")),
32  _Bulk_Modulus_Ref(getParam<Real>("bulk_modulus_ref")),
33  _C0(getParam<Real>("C0")),
34  _C1(getParam<Real>("C1")),
35  _deformation_gradient(getMaterialProperty<RankTwoTensor>("deformation_gradient")),
36  _deformation_gradient_old(getMaterialPropertyOld<RankTwoTensor>("deformation_gradient"))
37 {
38 }
const MaterialProperty< RankTwoTensor > & _deformation_gradient
ComputeStressBase(const InputParameters &parameters)
const MaterialProperty< RankTwoTensor > & _deformation_gradient_old

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 ComputeBirchMurnaghanEquationOfStress::computeQpProperties ( )
protectedvirtual

Reimplemented from ComputeStressBase.

Definition at line 41 of file ComputeBirchMurnaghanEquationOfStress.C.

42 {
43  RankTwoTensor volumetric_stress, EOS_stress, bulk_viscosity_stress;
44  Real dspecific_volume_dt;
45 
47 
48  volumetric_stress.zero();
49  // Calculate volumetric stress
50  volumetric_stress.addIa(_stress[_qp].trace() / 3.0);
51 
52  // Calculate volumetric stress from equation of state
53  EOS_stress.zero();
54  // Birch-Murnaghan equation of state
55  // P = (K0 / n) * ( 1.0 - J^{-n} )
56  // J is the Jacobian: J = detF = v / v0, F = deformation gradient
57  // v and v0 are the specific volumes: deformed and reference
58  // Austin et al. JOURNAL OF APPLIED PHYSICS 117, 185902 (2015)
59  EOS_stress.addIa((_Bulk_Modulus_Ref / _n_Murnaghan) *
60  (1.0 - std::pow(1.0 / _deformation_gradient[_qp].det(), _n_Murnaghan)));
61 
62  // Calculate rate of change of the specific volume
63  dspecific_volume_dt =
64  (_deformation_gradient[_qp].det() - _deformation_gradient_old[_qp].det()) / _dt;
65  // Divide by the specific volume
66  // dspecific_volume_dt = dot(J) / J
67  dspecific_volume_dt /= _deformation_gradient_old[_qp].det();
68 
69  bulk_viscosity_stress.zero();
70  // Calculate bulk viscosity damping
71  // C0 * dot(J) / J * |dot(J) / J| + C1 * dot(J) / J
72  // C0 should be chosen of the order of rho * Le^2, rho = density, Le = element size
73  // C1 should be chosen of the order of rho * Le * cs, cs = sound speed
74  // Maheo et al. Mechanics Research Communications 38 (2011) 81 88
75  bulk_viscosity_stress.addIa(_C0 * dspecific_volume_dt * std::abs(dspecific_volume_dt));
76  bulk_viscosity_stress.addIa(_C1 * dspecific_volume_dt);
77 
78  // Subtract the original volumetric stress,
79  // add the one given by the equation of state
80  // and the bulk viscosity
81  _stress[_qp] += EOS_stress + bulk_viscosity_stress - volumetric_stress;
82 
83  // Add in extra stress
84  _stress[_qp] += _extra_stress[_qp];
85 }
virtual void computeQpStress()=0
MaterialProperty< RankTwoTensor > & _stress
const MaterialProperty< RankTwoTensor > & _deformation_gradient
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)
const MaterialProperty< RankTwoTensor > & _deformation_gradient_old
const MaterialProperty< RankTwoTensor > & _extra_stress
Extra stress tensor.
virtual void ComputeStressBase::computeQpStress ( )
protectedpure virtualinherited
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 Real ComputeBirchMurnaghanEquationOfStress::_Bulk_Modulus_Ref
protected

Definition at line 38 of file ComputeBirchMurnaghanEquationOfStress.h.

Referenced by computeQpProperties().

const Real ComputeBirchMurnaghanEquationOfStress::_C0
protected

Definition at line 41 of file ComputeBirchMurnaghanEquationOfStress.h.

Referenced by computeQpProperties().

const Real ComputeBirchMurnaghanEquationOfStress::_C1
protected

Definition at line 44 of file ComputeBirchMurnaghanEquationOfStress.h.

Referenced by computeQpProperties().

const MaterialProperty<RankTwoTensor>& ComputeBirchMurnaghanEquationOfStress::_deformation_gradient
protected

Definition at line 46 of file ComputeBirchMurnaghanEquationOfStress.h.

Referenced by computeQpProperties().

const MaterialProperty<RankTwoTensor>& ComputeBirchMurnaghanEquationOfStress::_deformation_gradient_old
protected

Definition at line 47 of file ComputeBirchMurnaghanEquationOfStress.h.

Referenced by computeQpProperties().

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<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
const MaterialProperty<RankTwoTensor>& ComputeStressBase::_mechanical_strain
protectedinherited
const Real ComputeBirchMurnaghanEquationOfStress::_n_Murnaghan
protected

Definition at line 35 of file ComputeBirchMurnaghanEquationOfStress.h.

Referenced by computeQpProperties().

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(), computeQpProperties(), ComputeLinearElasticStress::computeQpStress(), ComputeStrainIncrementBasedStress::computeQpStress(), ComputeLinearElasticPFFractureStress::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: