19 #include "libmesh/utility.h" 33 "Name to be used for the thermal conductivity");
36 "Name to be used for the specific heat");
39 "Name to be used for the density");
40 params.
addClassDescription(
"Computes tungsten thermal properties as a function of temperature");
47 _temperature(coupledGenericValue<is_ad>(
"temperature")),
48 _k(declareGenericProperty<
Real, is_ad>(
50 _c_p(declareGenericProperty<
Real, is_ad>(
62 if (_temperature[_qp] < 5 || _temperature[_qp] > 3600)
63 flagInvalidSolution(
"The temperature is out of bounds to calculate tungsten density. " 64 "Temperature has to be between 5 K and 3600 K.");
66 if (_temperature[_qp] < 1 || _temperature[_qp] > 3653)
67 flagInvalidSolution(
"The temperature is out of bounds to calculate tungsten thermal " 68 "conductivity. Temperature has to be between 1 K and 3653 K.");
70 if (_temperature[_qp] < 11 || _temperature[_qp] > 3700)
71 flagInvalidSolution(
"The temperature is out of bounds to calculate tungsten specific " 72 "heat. Temperature has to be between 11 K and 3700 K.");
74 const auto temperature_scaled = _temperature[_qp] / 1000;
76 _k[_qp] = (_temperature[_qp] < 55)
77 ? _kA0 *
pow(temperature_scaled, 8.740e-01) /
78 (1 + _kA1 * temperature_scaled + _kA2 * Utility::pow<2>(temperature_scaled) +
79 _kA3 * Utility::pow<3>(temperature_scaled))
80 : (_kB0 + _kB1 * temperature_scaled + _kB2 * Utility::pow<2>(temperature_scaled) +
81 _kB3 * Utility::pow<3>(temperature_scaled)) /
82 (_kC0 + _kC1 * temperature_scaled + Utility::pow<2>(temperature_scaled));
85 (_temperature[_qp] <= 293)
86 ? _cA0 *
pow(temperature_scaled, 3.030) /
87 (1 + _cA1 * temperature_scaled + _cA2 * Utility::pow<2>(temperature_scaled) +
88 _cA3 * Utility::pow<3>(temperature_scaled))
89 : _cB0 + _cB1 * temperature_scaled + _cB2 * Utility::pow<2>(temperature_scaled) +
90 _cB3 * Utility::pow<3>(temperature_scaled) +
91 _cB_2 / Utility::pow<2>(temperature_scaled);
93 _rho[_qp] = (_temperature[_qp] <= 294)
94 ? _rA0 / Utility::pow<3>(1 + (_rA1 + _rA2 * temperature_scaled +
95 _rA3 * Utility::pow<2>(temperature_scaled) +
96 _rA4 * Utility::pow<3>(temperature_scaled)) /
98 : _rA0 / Utility::pow<3>(1 + (_rB0 + _rB1 * temperature_scaled +
99 _rB2 * Utility::pow<2>(temperature_scaled) +
100 _rB3 * Utility::pow<3>(temperature_scaled)) /
static InputParameters validParams()
static const std::string thermal_conductivity
TungstenThermalPropertiesMaterialTempl(const InputParameters ¶meters)
static const std::string density
This material computes Tungsten thermal properties as a function of temperature.
static InputParameters validParams()
registerMooseObject("SolidPropertiesApp", TungstenThermalPropertiesMaterial)
This material computes Tungsten thermal properties as a function of temperature.
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
static const std::string specific_heat
virtual void computeQpProperties()
MooseUnits pow(const MooseUnits &, int)
static const std::string density