www.mooseframework.org
ComputeMeanThermalExpansionEigenstrainBase.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
11 #include "Function.h"
12 
14 
15 InputParameters
17 {
18  InputParameters params = ComputeThermalExpansionEigenstrainBase::validParams();
19  params.addClassDescription("Base class for models that compute eigenstrain due to mean"
20  "thermal expansion as a function of temperature");
21  return params;
22 }
23 
25  const InputParameters & parameters)
27 {
28 }
29 
30 void
32  Real & instantaneous_cte)
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 }
ComputeMeanThermalExpansionEigenstrainBase.h
ComputeMeanThermalExpansionEigenstrainBase::referenceTemperature
virtual Real referenceTemperature()=0
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
defineLegacyParams
defineLegacyParams(ComputeMeanThermalExpansionEigenstrainBase)
ComputeThermalExpansionEigenstrainBase::_stress_free_temperature
const VariableValue & _stress_free_temperature
Definition: ComputeThermalExpansionEigenstrainBase.h:51
ComputeMeanThermalExpansionEigenstrainBase::ComputeMeanThermalExpansionEigenstrainBase
ComputeMeanThermalExpansionEigenstrainBase(const InputParameters &parameters)
Definition: ComputeMeanThermalExpansionEigenstrainBase.C:24
ComputeMeanThermalExpansionEigenstrainBase
ComputeMeanThermalExpansionEigenstrainBase is a base class for computing the thermal expansion eigens...
Definition: ComputeMeanThermalExpansionEigenstrainBase.h:30
ComputeThermalExpansionEigenstrainBase::validParams
static InputParameters validParams()
Definition: ComputeThermalExpansionEigenstrainBase.C:16
ComputeMeanThermalExpansionEigenstrainBase::validParams
static InputParameters validParams()
Definition: ComputeMeanThermalExpansionEigenstrainBase.C:16
ComputeMeanThermalExpansionEigenstrainBase::computeThermalStrain
virtual void computeThermalStrain(Real &thermal_strain, Real &instantaneous_cte) override
Definition: ComputeMeanThermalExpansionEigenstrainBase.C:31
ComputeThermalExpansionEigenstrainBase
ComputeThermalExpansionEigenstrainBase is a base class for all models that compute eigenstrains due t...
Definition: ComputeThermalExpansionEigenstrainBase.h:27