www.mooseframework.org
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)
 

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

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 24 of file ComputeMeanThermalExpansionFunctionEigenstrain.h.

Constructor & Destructor Documentation

◆ ComputeMeanThermalExpansionFunctionEigenstrain()

ComputeMeanThermalExpansionFunctionEigenstrain::ComputeMeanThermalExpansionFunctionEigenstrain ( const InputParameters &  parameters)

Definition at line 32 of file ComputeMeanThermalExpansionFunctionEigenstrain.C.

35  _thermal_expansion_function(getFunction("thermal_expansion_function")),
36  _thexp_func_ref_temp(getParam<Real>("thermal_expansion_function_reference_temperature"))
37 {
38 }
ComputeMeanThermalExpansionEigenstrainBase(const InputParameters &parameters)

Member Function Documentation

◆ computeQpEigenstrain()

void ComputeThermalExpansionEigenstrainBase::computeQpEigenstrain ( )
overrideprotectedvirtualinherited

Definition at line 37 of file ComputeThermalExpansionEigenstrainBase.C.

38 {
39  Real thermal_strain = 0.0;
40  Real instantaneous_cte = 0.0;
41 
42  computeThermalStrain(thermal_strain, instantaneous_cte);
43 
44  _eigenstrain[_qp].zero();
45  _eigenstrain[_qp].addIa(thermal_strain);
46 
47  _deigenstrain_dT[_qp].zero();
48  _deigenstrain_dT[_qp].addIa(instantaneous_cte);
49 }
virtual void computeThermalStrain(Real &thermal_strain, Real &instantaneous_cte)=0

◆ computeThermalStrain()

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

Implements ComputeThermalExpansionEigenstrainBase.

Definition at line 30 of file ComputeMeanThermalExpansionEigenstrainBase.C.

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

◆ meanThermalExpansionCoefficient()

Real ComputeMeanThermalExpansionFunctionEigenstrain::meanThermalExpansionCoefficient ( const Real  temperature)
overrideprotectedvirtual

◆ meanThermalExpansionCoefficientDerivative()

Real ComputeMeanThermalExpansionFunctionEigenstrain::meanThermalExpansionCoefficientDerivative ( const Real  temperature)
overrideprotectedvirtual

Implements ComputeMeanThermalExpansionEigenstrainBase.

Definition at line 54 of file ComputeMeanThermalExpansionFunctionEigenstrain.C.

56 {
57  return _thermal_expansion_function.timeDerivative(temperature, Point());
58 }
const std::string temperature
Definition: NS.h:27

◆ referenceTemperature()

Real ComputeMeanThermalExpansionFunctionEigenstrain::referenceTemperature ( )
overrideprotectedvirtual

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

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: