https://mooseframework.inl.gov
Loading...
Searching...
No Matches
TungstenThermalPropertiesMaterial.C
Go to the documentation of this file.
1//* This file is part of the MOOSE framework
2//* https://mooseframework.inl.gov
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
19#include "libmesh/utility.h"
20#include <cmath>
21
24
25template <bool is_ad>
28{
30 params.addRequiredCoupledVar("temperature", "Temperature");
33 "Name to be used for the thermal conductivity");
36 "Name to be used for the specific heat");
37 params.addParam<std::string>(SolidPropertiesNames::density,
39 "Name to be used for the density");
40 params.addClassDescription("Computes tungsten thermal properties as a function of temperature");
41 return params;
42}
43template <bool is_ad>
45 const InputParameters & parameters)
46 : Material(parameters),
47 _temperature(coupledGenericValue<is_ad>("temperature")),
48 _k(declareGenericProperty<Real, is_ad>(
49 getParam<std::string>(SolidPropertiesNames::thermal_conductivity))),
50 _c_p(declareGenericProperty<Real, is_ad>(
51 getParam<std::string>(SolidPropertiesNames::specific_heat))),
52 _rho(declareGenericProperty<Real, is_ad>(getParam<std::string>(SolidPropertiesNames::density)))
53{
54}
55
56template <bool is_ad>
57void
59{
60 using std::pow;
61
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.");
65
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.");
69
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.");
73
74 const auto temperature_scaled = _temperature[_qp] / 1000;
75
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));
83
84 _c_p[_qp] =
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);
92
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)) /
97 100)
98 : _rA0 / Utility::pow<3>(1 + (_rB0 + _rB1 * temperature_scaled +
99 _rB2 * Utility::pow<2>(temperature_scaled) +
100 _rB3 * Utility::pow<3>(temperature_scaled)) /
101 100);
102}
103
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)
registerMooseObject("SolidPropertiesApp", TungstenThermalPropertiesMaterial)
This material computes Tungsten thermal properties as a function of temperature.
void addRequiredCoupledVar(const std::string &name, const std::string &doc_string)
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
void addClassDescription(const std::string &doc_string)
static InputParameters validParams()
This material computes Tungsten thermal properties as a function of temperature.
TungstenThermalPropertiesMaterialTempl(const InputParameters &parameters)
static const std::string thermal_conductivity
static const std::string specific_heat
static const std::string density