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

ComputeMeanThermalExpansionFunctionEigenstrain computes an eigenstrain for thermal expansion according to a mean thermal expansion function. More...

#include <ComputeMeanThermalExpansionFunctionEigenstrain.h>

Inheritance diagram for ComputeMeanThermalExpansionFunctionEigenstrain:
[legend]

Public Member Functions

 ComputeMeanThermalExpansionFunctionEigenstrain (const InputParameters &parameters)
 

Static Public Member Functions

static InputParameters validParams ()
 

Protected Member Functions

virtual Real referenceTemperature () override
 
virtual Real meanThermalExpansionCoefficient (const Real temperature) override
 
virtual Real meanThermalExpansionCoefficientDerivative (const Real temperature) override
 
virtual void computeThermalStrain (Real &thermal_strain, Real &instantaneous_cte) override
 
virtual void computeQpEigenstrain () override
 

Protected Attributes

const Function & _thermal_expansion_function
 
const Real & _thexp_func_ref_temp
 
const VariableValue & _temperature
 
MaterialProperty< RankTwoTensor > & _deigenstrain_dT
 
const VariableValue & _stress_free_temperature
 

Detailed Description

ComputeMeanThermalExpansionFunctionEigenstrain computes an eigenstrain for thermal expansion according to a mean thermal expansion function.

Definition at line 23 of file ComputeMeanThermalExpansionFunctionEigenstrain.h.

Constructor & Destructor Documentation

◆ ComputeMeanThermalExpansionFunctionEigenstrain()

ComputeMeanThermalExpansionFunctionEigenstrain::ComputeMeanThermalExpansionFunctionEigenstrain ( const InputParameters &  parameters)

Definition at line 33 of file ComputeMeanThermalExpansionFunctionEigenstrain.C.

36  _thermal_expansion_function(getFunction("thermal_expansion_function")),
37  _thexp_func_ref_temp(getParam<Real>("thermal_expansion_function_reference_temperature"))
38 {
39 }

Member Function Documentation

◆ computeQpEigenstrain()

void ComputeThermalExpansionEigenstrainBase::computeQpEigenstrain ( )
overrideprotectedvirtualinherited

Definition at line 38 of file ComputeThermalExpansionEigenstrainBase.C.

39 {
40  Real thermal_strain = 0.0;
41 
42  // instantaneous_cte is just the derivative of thermal_strain with respect to temperature
43  Real instantaneous_cte = 0.0;
44 
45  computeThermalStrain(thermal_strain, instantaneous_cte);
46 
47  _eigenstrain[_qp].zero();
48  _eigenstrain[_qp].addIa(thermal_strain);
49 
50  _deigenstrain_dT[_qp].zero();
51  _deigenstrain_dT[_qp].addIa(instantaneous_cte);
52 }

◆ computeThermalStrain()

void ComputeMeanThermalExpansionEigenstrainBase::computeThermalStrain ( Real &  thermal_strain,
Real &  instantaneous_cte 
)
overrideprotectedvirtualinherited

Implements ComputeThermalExpansionEigenstrainBase.

Definition at line 31 of file ComputeMeanThermalExpansionEigenstrainBase.C.

33 {
34  const Real small = libMesh::TOLERANCE;
35 
36  const Real reference_temperature = referenceTemperature();
37  const Real & current_temp = _temperature[_qp];
38  const Real current_alphabar = meanThermalExpansionCoefficient(current_temp);
39  const Real thexp_current_temp = current_alphabar * (current_temp - reference_temperature);
40 
41  // Mean linear thermal expansion coefficient relative to the reference temperature
42  // evaluated at stress_free_temperature. This is
43  // \f$\bar{\alpha} = (\delta L(T_{sf}) / L) / (T_{sf} - T_{ref})\f$
44  // where \f$T_sf\f$ is the stress-free temperature and \f$T_{ref}\f$ is the reference temperature.
45  const Real alphabar_stress_free_temperature =
47  // Thermal expansion relative to the reference temperature evaluated at stress_free_temperature
48  // \f$(\delta L(T_sf) / L)\f$, where \f$T_sf\f$ is the stress-free temperature.
49  const Real thexp_stress_free_temperature =
50  alphabar_stress_free_temperature * (_stress_free_temperature[_qp] - referenceTemperature());
51 
52  // Per M. Niffenegger and K. Reichlin (2012), thermal_strain should be divided
53  // by (1.0 + thexp_stress_free_temperature) to account for the ratio of
54  // the length at the stress-free temperature to the length at the reference
55  // temperature. It can be neglected because it is very close to 1,
56  // but we include it for completeness here.
57 
58  thermal_strain =
59  (thexp_current_temp - thexp_stress_free_temperature) / (1.0 + thexp_stress_free_temperature);
60 
61  const Real dalphabar_dT = meanThermalExpansionCoefficientDerivative(current_temp);
62  const Real numerator = dalphabar_dT * (current_temp - reference_temperature) + current_alphabar;
63  const Real denominator =
64  1.0 +
65  alphabar_stress_free_temperature * (_stress_free_temperature[_qp] - reference_temperature);
66  if (denominator < small)
67  mooseError("Denominator too small in thermal strain calculation");
68  instantaneous_cte = numerator / denominator;
69 }

◆ meanThermalExpansionCoefficient()

Real ComputeMeanThermalExpansionFunctionEigenstrain::meanThermalExpansionCoefficient ( const Real  temperature)
overrideprotectedvirtual

Implements ComputeMeanThermalExpansionEigenstrainBase.

Definition at line 48 of file ComputeMeanThermalExpansionFunctionEigenstrain.C.

50 {
51  return _thermal_expansion_function.value(temperature, Point());
52 }

◆ meanThermalExpansionCoefficientDerivative()

Real ComputeMeanThermalExpansionFunctionEigenstrain::meanThermalExpansionCoefficientDerivative ( const Real  temperature)
overrideprotectedvirtual

Implements ComputeMeanThermalExpansionEigenstrainBase.

Definition at line 55 of file ComputeMeanThermalExpansionFunctionEigenstrain.C.

57 {
58  return _thermal_expansion_function.timeDerivative(temperature, Point());
59 }

◆ referenceTemperature()

Real ComputeMeanThermalExpansionFunctionEigenstrain::referenceTemperature ( )
overrideprotectedvirtual

◆ validParams()

InputParameters ComputeMeanThermalExpansionFunctionEigenstrain::validParams ( )
static

Definition at line 18 of file ComputeMeanThermalExpansionFunctionEigenstrain.C.

19 {
20  InputParameters params = ComputeThermalExpansionEigenstrainBase::validParams();
21  params.addClassDescription("Computes eigenstrain due to thermal expansion using a function that "
22  "describes the mean thermal expansion as a function of temperature");
23  params.addRequiredParam<FunctionName>(
24  "thermal_expansion_function",
25  "Function describing the mean thermal expansion as a function of temperature");
26  params.addRequiredParam<Real>("thermal_expansion_function_reference_temperature",
27  "Reference temperature for thermal_exansion_function (IMPORTANT: "
28  "this is different in general from the stress_free_temperature)");
29 
30  return params;
31 }

Member Data Documentation

◆ _deigenstrain_dT

MaterialProperty<RankTwoTensor>& ComputeThermalExpansionEigenstrainBase::_deigenstrain_dT
protectedinherited

◆ _stress_free_temperature

const VariableValue& ComputeThermalExpansionEigenstrainBase::_stress_free_temperature
protectedinherited

◆ _temperature

const VariableValue& ComputeThermalExpansionEigenstrainBase::_temperature
protectedinherited

◆ _thermal_expansion_function

const Function& ComputeMeanThermalExpansionFunctionEigenstrain::_thermal_expansion_function
protected

◆ _thexp_func_ref_temp

const Real& ComputeMeanThermalExpansionFunctionEigenstrain::_thexp_func_ref_temp
protected

The documentation for this class was generated from the following files:
ComputeMeanThermalExpansionEigenstrainBase::referenceTemperature
virtual Real referenceTemperature()=0
ComputeMeanThermalExpansionFunctionEigenstrain::_thexp_func_ref_temp
const Real & _thexp_func_ref_temp
Definition: ComputeMeanThermalExpansionFunctionEigenstrain.h:55
ComputeThermalExpansionEigenstrainBase::_temperature
const VariableValue & _temperature
Definition: ComputeThermalExpansionEigenstrainBase.h:49
ComputeMeanThermalExpansionEigenstrainBase::meanThermalExpansionCoefficientDerivative
virtual Real meanThermalExpansionCoefficientDerivative(const Real temperature)=0
ComputeMeanThermalExpansionEigenstrainBase::meanThermalExpansionCoefficient
virtual Real meanThermalExpansionCoefficient(const Real temperature)=0
ComputeThermalExpansionEigenstrainBase::computeThermalStrain
virtual void computeThermalStrain(Real &thermal_strain, Real &instantaneous_cte)=0
ComputeThermalExpansionEigenstrainBase::_stress_free_temperature
const VariableValue & _stress_free_temperature
Definition: ComputeThermalExpansionEigenstrainBase.h:51
ComputeMeanThermalExpansionFunctionEigenstrain::_thermal_expansion_function
const Function & _thermal_expansion_function
Definition: ComputeMeanThermalExpansionFunctionEigenstrain.h:53
ComputeMeanThermalExpansionEigenstrainBase::ComputeMeanThermalExpansionEigenstrainBase
ComputeMeanThermalExpansionEigenstrainBase(const InputParameters &parameters)
Definition: ComputeMeanThermalExpansionEigenstrainBase.C:24
NS::temperature
const std::string temperature
Definition: NS.h:26
ComputeThermalExpansionEigenstrainBase::_deigenstrain_dT
MaterialProperty< RankTwoTensor > & _deigenstrain_dT
Definition: ComputeThermalExpansionEigenstrainBase.h:50
ComputeThermalExpansionEigenstrainBase::validParams
static InputParameters validParams()
Definition: ComputeThermalExpansionEigenstrainBase.C:16