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

ComputeVariableBaseEigenstrain computes an Eigenstrain based on a real tensor value material property base (a), a real material property prefactor (p) and a rank two tensor offset tensor (b) p * a + b. More...

#include <ComputeVariableBaseEigenStrain.h>

Inheritance diagram for ComputeVariableBaseEigenStrain:
[legend]

Public Member Functions

 ComputeVariableBaseEigenStrain (const InputParameters &parameters)
 

Static Public Member Functions

static InputParameters validParams ()
 

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< RealTensorValue > & _base_tensor
 
const MaterialProperty< Real > & _prefactor
 
RankTwoTensor _offset_tensor
 
const 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

ComputeVariableBaseEigenstrain computes an Eigenstrain based on a real tensor value material property base (a), a real material property prefactor (p) and a rank two tensor offset tensor (b) p * a + b.

Definition at line 27 of file ComputeVariableBaseEigenStrain.h.

Constructor & Destructor Documentation

◆ ComputeVariableBaseEigenStrain()

ComputeVariableBaseEigenStrain::ComputeVariableBaseEigenStrain ( const InputParameters &  parameters)

Definition at line 30 of file ComputeVariableBaseEigenStrain.C.

31  : ComputeEigenstrainBase(parameters),
32  _base_tensor(getMaterialProperty<RealTensorValue>("base_tensor_property_name")),
33  _prefactor(getMaterialProperty<Real>("prefactor"))
34 {
35  if (isParamValid("offset_tensor"))
36  _offset_tensor.fillFromInputVector(getParam<std::vector<Real>>("offset_tensor"));
37  else
38  _offset_tensor.zero();
39 }

Member Function Documentation

◆ computeQpEigenstrain()

void ComputeVariableBaseEigenStrain::computeQpEigenstrain ( )
protectedvirtual

Compute the eigenstrain and store in _eigenstrain.

Implements ComputeEigenstrainBase.

Definition at line 42 of file ComputeVariableBaseEigenStrain.C.

43 {
44  RankTwoTensor base_rank_two_tensor = _base_tensor[_qp];
45  _eigenstrain[_qp] = base_rank_two_tensor * _prefactor[_qp] + _offset_tensor;
46 }

◆ computeQpProperties()

void ComputeEigenstrainBase::computeQpProperties ( )
protectedvirtualinherited

Definition at line 49 of file ComputeEigenstrainBase.C.

50 {
51  if (_t_step >= 1)
52  _step_zero = false;
53 
54  // Skip the eigenstrain calculation in step zero because no solution is computed during
55  // the zeroth step, hence computing the eigenstrain in the zeroth step would result in
56  // an incorrect calculation of mechanical_strain, which is stateful.
57  if (!_step_zero)
59 }

◆ 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 62 of file ComputeEigenstrainBase.C.

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

◆ initQpStatefulProperties()

void ComputeEigenstrainBase::initQpStatefulProperties ( )
protectedvirtualinherited

Reimplemented in ComputeReducedOrderEigenstrain.

Definition at line 41 of file ComputeEigenstrainBase.C.

42 {
43  // This property can be promoted to be stateful by other models that use it,
44  // so it needs to be initalized.
45  _eigenstrain[_qp].zero();
46 }

◆ validParams()

InputParameters ComputeVariableBaseEigenStrain::validParams ( )
static

Definition at line 17 of file ComputeVariableBaseEigenStrain.C.

18 {
19  InputParameters params = ComputeEigenstrainBase::validParams();
20  params.addClassDescription("Computes Eigenstrain based on material property tensor base");
21  params.addRequiredParam<MaterialPropertyName>("base_tensor_property_name",
22  "Name of base tensor property");
23  params.addParam<MaterialPropertyName>(
24  "prefactor", 1.0, "Name of material defining the variable dependence");
25  params.addParam<std::vector<Real>>(
26  "offset_tensor", "Vector of values defining the constant base tensor for the Eigenstrain");
27  return params;
28 }

Member Data Documentation

◆ _base_name

const std::string ComputeEigenstrainBase::_base_name
protectedinherited

Base name prepended to material property name.

Definition at line 41 of file ComputeEigenstrainBase.h.

Referenced by ComputeReducedOrderEigenstrain::ComputeReducedOrderEigenstrain().

◆ _base_tensor

const MaterialProperty<RealTensorValue>& ComputeVariableBaseEigenStrain::_base_tensor
protected

Definition at line 37 of file ComputeVariableBaseEigenStrain.h.

Referenced by 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 44 of file ComputeEigenstrainBase.h.

◆ _offset_tensor

RankTwoTensor ComputeVariableBaseEigenStrain::_offset_tensor
protected

◆ _prefactor

const MaterialProperty<Real>& ComputeVariableBaseEigenStrain::_prefactor
protected

Definition at line 38 of file ComputeVariableBaseEigenStrain.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 60 of file ComputeEigenstrainBase.h.

Referenced by ComputeEigenstrainBase::computeQpProperties().


The documentation for this class was generated from the following files:
ComputeVariableBaseEigenStrain::_prefactor
const MaterialProperty< Real > & _prefactor
Definition: ComputeVariableBaseEigenStrain.h:38
ComputeEigenstrainBase::validParams
static InputParameters validParams()
Definition: ComputeEigenstrainBase.C:17
ComputeEigenstrainBase::ComputeEigenstrainBase
ComputeEigenstrainBase(const InputParameters &parameters)
Definition: ComputeEigenstrainBase.C:31
ComputeEigenstrainBase::_step_zero
bool & _step_zero
Restartable data to check for the zeroth and first time steps for thermal calculations.
Definition: ComputeEigenstrainBase.h:60
ComputeEigenstrainBase::computeQpEigenstrain
virtual void computeQpEigenstrain()=0
Compute the eigenstrain and store in _eigenstrain.
ComputeVariableBaseEigenStrain::_offset_tensor
RankTwoTensor _offset_tensor
Definition: ComputeVariableBaseEigenStrain.h:39
ComputeVariableBaseEigenStrain::_base_tensor
const MaterialProperty< RealTensorValue > & _base_tensor
Definition: ComputeVariableBaseEigenStrain.h:37
RankTwoTensorTempl< Real >
ComputeEigenstrainBase::_eigenstrain
MaterialProperty< RankTwoTensor > & _eigenstrain
Stores the current total eigenstrain.
Definition: ComputeEigenstrainBase.h:47