https://mooseframework.inl.gov
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 
18 #include "SolidPropertiesNames.h"
19 #include "libmesh/utility.h"
20 #include <cmath>
21 
24 
25 template <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 }
43 template <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 
56 template <bool is_ad>
57 void
59 {
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.");
63 
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.");
67 
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.");
71 
72  const auto temperature_scaled = _temperature[_qp] / 1000;
73 
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));
81 
82  _c_p[_qp] =
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);
90 
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)) /
95  100)
96  : _rA0 / Utility::pow<3>(1 + (_rB0 + _rB1 * temperature_scaled +
97  _rB2 * Utility::pow<2>(temperature_scaled) +
98  _rB3 * Utility::pow<3>(temperature_scaled)) /
99  100);
100 }
101 
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
static const std::string thermal_conductivity
TungstenThermalPropertiesMaterialTempl(const InputParameters &parameters)
static const std::string density
Definition: NS.h:33
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.
void addRequiredCoupledVar(const std::string &name, const std::string &doc_string)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void addClassDescription(const std::string &doc_string)
static const std::string specific_heat
MooseUnits pow(const MooseUnits &, int)
static const std::string density