https://mooseframework.inl.gov
ThermalUCProperties.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 
10 #include "ThermalUCProperties.h"
11 #include "libmesh/utility.h"
12 
13 registerMooseObject("SolidPropertiesApp", ThermalUCProperties);
14 
17 
18 {
20 
21  params.addRangeCheckedParam<Real>("density", 13824.7, "density > 0.0", "(Constant) density");
22  params.addClassDescription("Uranium Carbide (UC) thermal properties (SI units).");
23  return params;
24 }
25 
27  : ThermalSolidProperties(parameters),
28  _rho_const(getParam<Real>("density")),
29  _c1(239.7),
30  _c2(5.068e-3),
31  _c3(1.7604e-5),
32  _c4(3488100)
33 {
34 }
35 
36 Real
37 ThermalUCProperties::cp_from_T(const Real & T) const
38 {
39  if ((T < 298) || (T > 2838))
40  flagInvalidSolution(
41  "UC specific heat evaluated outside of UC cp temperature range [298, 2838] K");
42  return _c1 - _c2 * T + _c3 * Utility::pow<2>(T) - _c4 / Utility::pow<2>(T);
43 }
44 
45 void
46 ThermalUCProperties::cp_from_T(const Real & T, Real & cp, Real & dcp_dT) const
47 {
48 
49  if ((T < 298) || (T > 2838))
50  flagInvalidSolution(
51  "UC specific heat evaluated outside of UC cp temperature range [298, 2838] K");
52 
53  cp = cp_from_T(T);
54  dcp_dT = -_c2 + 2 * _c3 * T + 2 * _c4 / Utility::pow<3>(T);
55 }
56 
57 Real
58 ThermalUCProperties::cp_integral(const Real & T) const
59 {
60  return _c1 * T - 0.5 * _c2 * Utility::pow<2>(T) + _c3 / 3.0 * Utility::pow<3>(T) + _c4 / T;
61 }
62 
63 Real
64 ThermalUCProperties::k_from_T(const Real & T) const
65 {
66  if ((323 < T) && (T < 924))
67  {
68  return 21.7 - 3.04e-3 * T + 3.61e-6 * Utility::pow<2>(T);
69  }
70  else if ((924 < T) && (T < 2573))
71  {
72  return 20.2 + 1.48e-3 * T;
73  }
74  else
75  {
76  return 21.0;
77  }
78 }
79 
80 void
81 ThermalUCProperties::k_from_T(const Real & T, Real & k, Real & dk_dT) const
82 {
83  if ((323 < T) && (T < 924))
84  {
85  k = k_from_T(T);
86  dk_dT = -3.04e-3 + 7.22e-6 * T;
87  }
88  else if ((924 < T) && (T < 2573))
89  {
90  k = k_from_T(T);
91  dk_dT = 1.48e-3;
92  }
93  else
94  {
95  k = k_from_T(T);
96  dk_dT = 0.0;
97  }
98 }
99 
100 Real
101 ThermalUCProperties::rho_from_T(const Real & /* T */) const
102 {
103  return _rho_const;
104 }
105 
106 void
107 ThermalUCProperties::rho_from_T(const Real & T, Real & rho, Real & drho_dT) const
108 {
109  rho = rho_from_T(T);
110  drho_dT = 0.0;
111 }
const Real & _rho_const
(constant) density
virtual Real cp_from_T(const Real &T) const override
Common class for solid properties that are a function of temperature.
static InputParameters validParams()
static const std::string cp
Definition: NS.h:121
static InputParameters validParams()
virtual Real cp_integral(const Real &T) const override
registerMooseObject("SolidPropertiesApp", ThermalUCProperties)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void addClassDescription(const std::string &doc_string)
void addRangeCheckedParam(const std::string &name, const T &value, const std::string &parsed_function, const std::string &doc_string)
ThermalUCProperties(const InputParameters &parameters)
virtual Real k_from_T(const Real &T) const override
static const std::string k
Definition: NS.h:130
virtual Real rho_from_T(const Real &T) const override