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

ComputeEigenstrain computes an Eigenstrain that is a function of a single variable defined by a base tensor and a scalar function defined in a Derivative Material. More...

#include <ComputeEigenstrain.h>

Inheritance diagram for ComputeEigenstrain:
[legend]

Public Member Functions

 ComputeEigenstrain (const InputParameters &parameters)
 

Protected Member Functions

virtual void computeQpEigenstrain ()
 Compute the eigenstrain and store in _eigenstrain. More...
 
virtual void initQpStatefulProperties ()
 
virtual void computeQpProperties ()
 
Real computeVolumetricStrainComponent (const Real volumetric_strain) const
 Helper function for models that compute the eigenstrain based on a volumetric strain. More...
 

Protected Attributes

const MaterialProperty< Real > & _prefactor
 
RankTwoTensor _eigen_base_tensor
 
std::string _base_name
 Base name prepended to material property name. More...
 
std::string _eigenstrain_name
 Material property name for the eigenstrain tensor. More...
 
MaterialProperty< RankTwoTensor > & _eigenstrain
 Stores the current total eigenstrain. More...
 
bool & _step_zero
 Restartable data to check for the zeroth and first time steps for thermal calculations. More...
 

Detailed Description

ComputeEigenstrain computes an Eigenstrain that is a function of a single variable defined by a base tensor and a scalar function defined in a Derivative Material.

Definition at line 26 of file ComputeEigenstrain.h.

Constructor & Destructor Documentation

◆ ComputeEigenstrain()

ComputeEigenstrain::ComputeEigenstrain ( const InputParameters &  parameters)

Definition at line 27 of file ComputeEigenstrain.C.

28  : ComputeEigenstrainBase(parameters), _prefactor(getMaterialProperty<Real>("prefactor"))
29 {
30  _eigen_base_tensor.fillFromInputVector(getParam<std::vector<Real>>("eigen_base"));
31 }
RankTwoTensor _eigen_base_tensor
const MaterialProperty< Real > & _prefactor
ComputeEigenstrainBase(const InputParameters &parameters)

Member Function Documentation

◆ computeQpEigenstrain()

void ComputeEigenstrain::computeQpEigenstrain ( )
protectedvirtual

Compute the eigenstrain and store in _eigenstrain.

Implements ComputeEigenstrainBase.

Definition at line 34 of file ComputeEigenstrain.C.

Referenced by ComputeVariableEigenstrain::computeQpEigenstrain().

35 {
36  // Define Eigenstrain
38 }
RankTwoTensor _eigen_base_tensor
MaterialProperty< RankTwoTensor > & _eigenstrain
Stores the current total eigenstrain.
const MaterialProperty< Real > & _prefactor

◆ computeQpProperties()

void ComputeEigenstrainBase::computeQpProperties ( )
protectedvirtualinherited

Definition at line 53 of file ComputeEigenstrainBase.C.

54 {
55  if (_t_step >= 1)
56  _step_zero = false;
57 
58  // Skip the eigenstrain calculation in step zero because no solution is computed during
59  // the zeroth step, hence computing the eigenstrain in the zeroth step would result in
60  // an incorrect calculation of mechanical_strain, which is stateful.
61  if (!_step_zero)
63 }
virtual void computeQpEigenstrain()=0
Compute the eigenstrain and store in _eigenstrain.
bool & _step_zero
Restartable data to check for the zeroth and first time steps for thermal calculations.

◆ computeVolumetricStrainComponent()

Real ComputeEigenstrainBase::computeVolumetricStrainComponent ( const Real  volumetric_strain) const
protectedinherited

Helper function for models that compute the eigenstrain based on a volumetric strain.

This function computes the diagonal components of the eigenstrain tensor as logarithmic strains.

Parameters
volumetric_strainThe current volumetric strain to be applied
Returns
Current strain in one direction due to volumetric strain, expressed as a logarithmic strain

Definition at line 66 of file ComputeEigenstrainBase.C.

67 {
68  // The engineering strain in a given direction is:
69  // epsilon_eng = cbrt(volumetric_strain + 1.0) - 1.0
70  //
71  // We need to provide this as a logarithmic strain to be consistent with the strain measure
72  // used for finite strain:
73  // epsilon_log = log(1.0 + epsilon_eng)
74  //
75  // This can be simplified down to a more direct form:
76  // epsilon_log = log(cbrt(volumetric_strain + 1.0))
77  // or:
78  // epsilon_log = (1/3) log(volumetric_strain + 1.0)
79 
80  return std::log(volumetric_strain + 1.0) / 3.0;
81 }

◆ initQpStatefulProperties()

void ComputeEigenstrainBase::initQpStatefulProperties ( )
protectedvirtualinherited

Reimplemented in ComputeReducedOrderEigenstrain.

Definition at line 45 of file ComputeEigenstrainBase.C.

46 {
47  // This property can be promoted to be stateful by other models that use it,
48  // so it needs to be initalized.
49  _eigenstrain[_qp].zero();
50 }
MaterialProperty< RankTwoTensor > & _eigenstrain
Stores the current total eigenstrain.

Member Data Documentation

◆ _base_name

std::string ComputeEigenstrainBase::_base_name
protectedinherited

Base name prepended to material property name.

Definition at line 38 of file ComputeEigenstrainBase.h.

Referenced by ComputeReducedOrderEigenstrain::ComputeReducedOrderEigenstrain().

◆ _eigen_base_tensor

RankTwoTensor ComputeEigenstrain::_eigen_base_tensor
protected

Definition at line 36 of file ComputeEigenstrain.h.

Referenced by ComputeEigenstrain(), and computeQpEigenstrain().

◆ _eigenstrain

MaterialProperty<RankTwoTensor>& ComputeEigenstrainBase::_eigenstrain
protectedinherited

◆ _eigenstrain_name

std::string ComputeEigenstrainBase::_eigenstrain_name
protectedinherited

Material property name for the eigenstrain tensor.

Definition at line 41 of file ComputeEigenstrainBase.h.

◆ _prefactor

const MaterialProperty<Real>& ComputeEigenstrain::_prefactor
protected

Definition at line 34 of file ComputeEigenstrain.h.

Referenced by computeQpEigenstrain().

◆ _step_zero

bool& ComputeEigenstrainBase::_step_zero
protectedinherited

Restartable data to check for the zeroth and first time steps for thermal calculations.

Definition at line 57 of file ComputeEigenstrainBase.h.

Referenced by ComputeEigenstrainBase::computeQpProperties().


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