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>(
60 if (_temperature[_qp] < 5 || _temperature[_qp] > 3600)
61 flagInvalidSolution(
"The temperature is out of bounds to calculate tungsten density. " 62 "Temperature has to be between 5 K and 3600 K.");
64 if (_temperature[_qp] < 1 || _temperature[_qp] > 3653)
65 flagInvalidSolution(
"The temperature is out of bounds to calculate tungsten thermal " 66 "conductivity. Temperature has to be between 1 K and 3653 K.");
68 if (_temperature[_qp] < 11 || _temperature[_qp] > 3700)
69 flagInvalidSolution(
"The temperature is out of bounds to calculate tungsten specific " 70 "heat. Temperature has to be between 11 K and 3700 K.");
72 const auto temperature_scaled = _temperature[_qp] / 1000;
74 _k[_qp] = (_temperature[_qp] < 55)
75 ? _kA0 *
std::pow(temperature_scaled, 8.740e-01) /
76 (1 + _kA1 * temperature_scaled + _kA2 * Utility::pow<2>(temperature_scaled) +
77 _kA3 * Utility::pow<3>(temperature_scaled))
78 : (_kB0 + _kB1 * temperature_scaled + _kB2 * Utility::pow<2>(temperature_scaled) +
79 _kB3 * Utility::pow<3>(temperature_scaled)) /
80 (_kC0 + _kC1 * temperature_scaled + Utility::pow<2>(temperature_scaled));
83 (_temperature[_qp] <= 293)
84 ? _cA0 *
std::pow(temperature_scaled, 3.030) /
85 (1 + _cA1 * temperature_scaled + _cA2 * Utility::pow<2>(temperature_scaled) +
86 _cA3 * Utility::pow<3>(temperature_scaled))
87 : _cB0 + _cB1 * temperature_scaled + _cB2 * Utility::pow<2>(temperature_scaled) +
88 _cB3 * Utility::pow<3>(temperature_scaled) +
89 _cB_2 / Utility::pow<2>(temperature_scaled);
91 _rho[_qp] = (_temperature[_qp] <= 294)
92 ? _rA0 / Utility::pow<3>(1 + (_rA1 + _rA2 * temperature_scaled +
93 _rA3 * Utility::pow<2>(temperature_scaled) +
94 _rA4 * Utility::pow<3>(temperature_scaled)) /
96 : _rA0 / Utility::pow<3>(1 + (_rB0 + _rB1 * temperature_scaled +
97 _rB2 * Utility::pow<2>(temperature_scaled) +
98 _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.
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