www.mooseframework.org
FlibeFluidProperties.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
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 "FlibeFluidProperties.h"
11 
12 registerMooseObject("FluidPropertiesApp", FlibeFluidProperties);
13 
14 template <>
15 InputParameters
17 {
18  InputParameters params = validParams<SinglePhaseFluidProperties>();
19  params.addRangeCheckedParam<Real>(
20  "drho_dp",
21  1.7324E-7,
22  "drho_dp > 0.0",
23  "derivative of density with respect to pressure (at constant temperature)");
24  params.addClassDescription("Fluid properties for flibe");
25  return params;
26 }
27 
28 FlibeFluidProperties::FlibeFluidProperties(const InputParameters & parameters)
29  : SinglePhaseFluidProperties(parameters),
30  _drho_dp(getParam<Real>("drho_dp")),
31  _drho_dT(-0.4884),
32  _p_atm(101325.0),
33  _cp(2416.0),
34  _c0(2413.0),
35  _dp_dT_at_constant_v(-_drho_dT / _drho_dp)
36 {
37 }
38 
39 std::string
41 {
42  return "flibe";
43 }
44 
45 Real
47 {
48  return 99.037703E-3;
49 }
50 
51 Real
52 FlibeFluidProperties::p_from_v_e(Real v, Real e) const
53 {
54  Real temperature = T_from_v_e(v, e);
55  return (1.0 / v - _drho_dT * temperature - _c0) / _drho_dp + _p_atm;
56 }
57 
58 void
59 FlibeFluidProperties::p_from_v_e(Real v, Real e, Real & p, Real & dp_dv, Real & dp_de) const
60 {
61  p = p_from_v_e(v, e);
62 
63  // chain rule, (dp_de)_v = (dp_dT)_v * (dT_de)_v
64  Real T, dT_dv, dT_de;
65  T_from_v_e(v, e, T, dT_dv, dT_de);
66  dp_de = _dp_dT_at_constant_v * dT_de;
67 
68  // cyclic relation, (dP_dv)_e = - (dp_de)_v * (de_dv)_p
69  Real cp = cp_from_v_e(v, e);
70  Real dT_dv_at_constant_p = -1.0 / (_drho_dT * v * v);
71  Real de_dv_at_constant_p = cp * dT_dv_at_constant_p - p;
72  dp_dv = -dp_de * de_dv_at_constant_p;
73 }
74 
75 void
77  const DualReal & v, const DualReal & e, DualReal & p, DualReal & dp_dv, DualReal & dp_de) const
78 {
79  p = SinglePhaseFluidProperties::p_from_v_e(v, e);
80 
81  // chain rule, (dp_de)_v = (dp_dT)_v * (dT_de)_v
82  DualReal T, dT_dv, dT_de;
83  T_from_v_e(v, e, T, dT_dv, dT_de);
84  dp_de = _dp_dT_at_constant_v * dT_de;
85 
86  // cyclic relation, (dP_dv)_e = - (dp_de)_v * (de_dv)_p
87  auto cp = SinglePhaseFluidProperties::cp_from_v_e(v, e);
88  auto dT_dv_at_constant_p = -1.0 / (_drho_dT * v * v);
89  auto de_dv_at_constant_p = cp * dT_dv_at_constant_p - p;
90  dp_dv = -dp_de * de_dv_at_constant_p;
91 }
92 
93 Real
94 FlibeFluidProperties::T_from_v_e(Real v, Real e) const
95 {
96  // We need to write these in a somewhat strange manner to ensure that pressure
97  // and temperature do not depend implicitly on each other, causing a circular
98  // logic problem. Substituting the definition for pressure based on the
99  // rho * (h - e) = P, where h = Cp * T into the density correlation for flibe,
100  // we can rearrange and get temperature in terms of only v and e
101 
102  // p = (Cp * T - e) / v
103  // T = (1 / v - drho_dp * [p - p_atm] + _c0) / drho_dT
104  // = (1 / v - drho_dp * [(Cp * T - e) / v - p_atm] + _c0) / drho_dT
105  // = (1 + drho_dp * e + p_atm * v * drho_dp - _c0 * v) / (drho_dT * v + drho_dp * Cp)
106 
107  Real cp = cp_from_v_e(v, e);
108  Real numerator = 1.0 + _drho_dp * (e + _p_atm * v) - _c0 * v;
109  Real denominator = _drho_dT * v + _drho_dp * cp;
110  return numerator / denominator;
111 }
112 
113 void
114 FlibeFluidProperties::T_from_v_e(Real v, Real e, Real & T, Real & dT_dv, Real & dT_de) const
115 {
116  T = T_from_v_e(v, e);
117 
118  // reciprocity relation based on the definition of cv
119  Real cv = cv_from_v_e(v, e);
120  dT_de = 1.0 / cv;
121 
122  // cyclic relation, (dT_dv)_e = -(dT_de)_v * (de_dv)_T
123  Real p = p_from_v_e(v, e);
124  Real dp_dv_at_constant_T = -1.0 / (_drho_dp * v * v);
125  Real de_dv_at_constant_T = -(p + v * dp_dv_at_constant_T);
126  dT_dv = -dT_de * de_dv_at_constant_T;
127 }
128 
129 void
131  const DualReal & v, const DualReal & e, DualReal & T, DualReal & dT_dv, DualReal & dT_de) const
132 {
133  T = SinglePhaseFluidProperties::T_from_v_e(v, e);
134 
135  // reciprocity relation based on the definition of cv
136  auto cv = SinglePhaseFluidProperties::cv_from_v_e(v, e);
137  dT_de = 1.0 / cv;
138 
139  // cyclic relation, (dT_dv)_e = -(dT_de)_v * (de_dv)_T
140  auto p = SinglePhaseFluidProperties::p_from_v_e(v, e);
141  auto dp_dv_at_constant_T = -1.0 / (_drho_dp * v * v);
142  auto de_dv_at_constant_T = -(p + v * dp_dv_at_constant_T);
143  dT_dv = -dT_de * de_dv_at_constant_T;
144 }
145 
146 Real FlibeFluidProperties::cp_from_v_e(Real /*v*/, Real /*e*/) const { return _cp; }
147 
148 void
149 FlibeFluidProperties::cp_from_v_e(Real v, Real e, Real & cp, Real & dcp_dv, Real & dcp_de) const
150 {
151  cp = cp_from_v_e(v, e);
152  dcp_dv = 0.0;
153  dcp_de = 0.0;
154 }
155 
156 Real
158 {
159  // definition of Cv by replacing e by h + p * v
160  Real cp = cp_from_v_e(v, e);
161  return cp - _dp_dT_at_constant_v * v;
162 }
163 
164 void
165 FlibeFluidProperties::cv_from_v_e(Real v, Real e, Real & cv, Real & dcv_dv, Real & dcv_de) const
166 {
167  cv = cv_from_v_e(v, e);
168  dcv_dv = -_dp_dT_at_constant_v;
169  dcv_de = 0.0;
170 }
171 
172 void
174  const DualReal & e,
175  DualReal & cv,
176  DualReal & dcv_dv,
177  DualReal & dcv_de) const
178 {
179  cv = SinglePhaseFluidProperties::cv_from_v_e(v, e);
180  dcv_dv = -_dp_dT_at_constant_v;
181  dcv_de = 0.0;
182 }
183 
184 Real
186 {
187  Real temperature = T_from_v_e(v, e);
188  return 1.16e-4 * std::exp(3755.0 / temperature);
189 }
190 
191 Real
192 FlibeFluidProperties::k_from_v_e(Real v, Real e) const
193 {
194  Real temperature = T_from_v_e(v, e);
195  return 5.0e-4 * temperature + 0.63;
196 }
197 
198 Real
200 {
201  return _drho_dT * temperature + _drho_dp * (pressure - _p_atm) + _c0;
202 }
203 
204 void
206  Real pressure, Real temperature, Real & rho, Real & drho_dp, Real & drho_dT) const
207 {
209  drho_dp = _drho_dp;
210  drho_dT = _drho_dT;
211 }
212 
213 void
215  const DualReal & temperature,
216  DualReal & rho,
217  DualReal & drho_dp,
218  DualReal & drho_dT) const
219 {
220  rho = SinglePhaseFluidProperties::rho_from_p_T(pressure, temperature);
221  drho_dp = _drho_dp;
222  drho_dT = _drho_dT;
223 }
224 
225 DualReal
226 FlibeFluidProperties::v_from_p_T(const DualReal & pressure, const DualReal & temperature) const
227 {
228  return 1.0 / (_drho_dT * temperature + _drho_dp * (pressure - _p_atm) + _c0);
229 }
230 
231 Real
233 {
234  return 1.0 / (_drho_dT * temperature + _drho_dp * (pressure - _p_atm) + _c0);
235 }
236 
237 void
239  Real pressure, Real temperature, Real & v, Real & dv_dp, Real & dv_dT) const
240 {
242  dv_dp = -v * v * _drho_dp;
243  dv_dT = -v * v * _drho_dT;
244 }
245 
246 Real
247 FlibeFluidProperties::h_from_p_T(Real /*pressure*/, Real temperature) const
248 {
249  // definition of h for constant Cp
250  Real cp = cp_from_v_e(0.0 /* dummy */, 0.0 /* dummy */);
251  return cp * temperature;
252 }
253 
254 void
256  Real pressure, Real temperature, Real & h, Real & dh_dp, Real & dh_dT) const
257 {
259  Real cp = cp_from_v_e(0.0 /* dummy */, 0.0 /* dummy */);
260 
261  dh_dp = 0.0;
262  dh_dT = cp;
263 }
264 
265 Real
267 {
268  // definition of h = e + p * v
269  Real v = v_from_p_T(pressure, temperature);
270  Real cp = cp_from_v_e(v, 0.0 /* dummy */);
271  return cp * temperature - pressure * v;
272 }
273 
274 void
276  Real pressure, Real temperature, Real & e, Real & de_dp, Real & de_dT) const
277 {
279 
280  Real v, dv_dp, dv_dT;
281  v_from_p_T(pressure, temperature, v, dv_dp, dv_dT);
282 
283  // definition of e = h - p * v
284  de_dp = -pressure * dv_dp - v;
285 
286  // definition of e = h - p * v
287  Real cp = cp_from_v_e(v, e);
288  de_dT = cp - pressure * dv_dT;
289 }
290 
291 Real FlibeFluidProperties::cp_from_p_T(Real /*pressure*/, Real /*temperature*/) const
292 {
293  return _cp;
294 }
295 
296 void
298  Real pressure, Real temperature, Real & cp, Real & dcp_dp, Real & dcp_dT) const
299 {
301  dcp_dp = 0.0;
302  dcp_dT = 0.0;
303 }
304 
305 Real
307 {
308  Real v = v_from_p_T(pressure, temperature);
309  Real e = e_from_p_T(pressure, temperature);
310  return cv_from_v_e(v, e);
311 }
312 
313 void
315  Real pressure, Real temperature, Real & cv, Real & dcv_dp, Real & dcv_dT) const
316 {
318  dcv_dp = 0.0;
319  dcv_dT = 0.0;
320 }
321 
322 Real
323 FlibeFluidProperties::mu_from_p_T(Real /*pressure*/, Real temperature) const
324 {
325  return 1.16e-4 * std::exp(3755.0 / temperature);
326 }
327 
328 void
330  Real pressure, Real temperature, Real & mu, Real & dmu_dp, Real & dmu_dT) const
331 {
332  mu = this->mu_from_p_T(pressure, temperature);
333  dmu_dp = 0.0;
334  dmu_dT = -1.16e-4 * std::exp(3755.0 / temperature) * 3755.0 / (temperature * temperature);
335 }
336 
337 Real
338 FlibeFluidProperties::k_from_p_T(Real /*pressure*/, Real temperature) const
339 {
340  return 5.0e-4 * temperature + 0.63;
341 }
342 
343 void
345  Real pressure, Real temperature, Real & k, Real & dk_dp, Real & dk_dT) const
346 {
347  k = this->k_from_p_T(pressure, temperature);
348  dk_dp = 0.0;
349  dk_dT = 5.0e-4;
350 }
FlibeFluidProperties::molarMass
virtual Real molarMass() const override
Molar mass.
Definition: FlibeFluidProperties.C:46
FlibeFluidProperties
Fluid properties for 2LiF-BeF2 (flibe) .
Definition: FlibeFluidProperties.h:22
FlibeFluidProperties::k_from_v_e
virtual Real k_from_v_e(Real v, Real e) const override
Thermal conductivity from specific volume and specific internal energy.
Definition: FlibeFluidProperties.C:192
FlibeFluidProperties::e_from_p_T
virtual Real e_from_p_T(Real p, Real T) const override
Specific internal energy from pressure and temperature.
Definition: FlibeFluidProperties.C:266
SinglePhaseFluidProperties
Common class for single phase fluid properties.
Definition: SinglePhaseFluidProperties.h:89
FlibeFluidProperties::_c0
const Real _c0
additive constant to rho(P, T) correlation
Definition: FlibeFluidProperties.h:334
SinglePhaseFluidProperties::v
v
Definition: SinglePhaseFluidProperties.h:155
FlibeFluidProperties::_dp_dT_at_constant_v
const Real _dp_dT_at_constant_v
derivative of pressure with respect to temperature at constant specific volume
Definition: FlibeFluidProperties.h:337
FlibeFluidProperties::FlibeFluidProperties
FlibeFluidProperties(const InputParameters &parameters)
Definition: FlibeFluidProperties.C:28
FlibeFluidProperties::_p_atm
const Real _p_atm
Atmospheric pressure, Pa.
Definition: FlibeFluidProperties.h:328
FlibeFluidProperties::_drho_dT
const Real _drho_dT
Derivative of density with respect to temperature at fixed pressure.
Definition: FlibeFluidProperties.h:325
FlibeFluidProperties.h
FlibeFluidProperties::_cp
const Real _cp
specific heat at constant pressure
Definition: FlibeFluidProperties.h:331
FlibeFluidProperties::mu_from_p_T
virtual Real mu_from_p_T(Real p, Real T) const override
Dynamic viscosity from pressure and temperature.
Definition: FlibeFluidProperties.C:323
FlibeFluidProperties::_drho_dp
const Real & _drho_dp
Derivative of density with respect to pressure at fixed temperature.
Definition: FlibeFluidProperties.h:322
FlibeFluidProperties::cp_from_v_e
virtual Real cp_from_v_e(Real v, Real e) const override
Isobaric specific heat from specific volume and specific internal energy.
Definition: FlibeFluidProperties.C:146
validParams< FlibeFluidProperties >
InputParameters validParams< FlibeFluidProperties >()
Definition: FlibeFluidProperties.C:16
FlibeFluidProperties::k_from_p_T
virtual Real k_from_p_T(Real p, Real T) const override
Thermal conductivity from pressure and temperature.
Definition: FlibeFluidProperties.C:338
SinglePhaseFluidProperties::T
e e e e p h T T T T T T
Definition: SinglePhaseFluidProperties.h:177
FlibeFluidProperties::cv_from_p_T
virtual Real cv_from_p_T(Real p, Real T) const override
Isochoric specific heat capacity from pressure and temperature.
Definition: FlibeFluidProperties.C:306
FlibeFluidProperties::rho_from_p_T
virtual Real rho_from_p_T(Real p, Real T) const override
Density from pressure and temperature.
Definition: FlibeFluidProperties.C:199
SinglePhaseFluidProperties::rho
e e e e p h T rho
Definition: SinglePhaseFluidProperties.h:169
registerMooseObject
registerMooseObject("FluidPropertiesApp", FlibeFluidProperties)
FlibeFluidProperties::cp_from_p_T
virtual Real cp_from_p_T(Real p, Real T) const override
Isobaric specific heat capacity from pressure and temperature.
Definition: FlibeFluidProperties.C:291
FlibeFluidProperties::v_from_p_T
virtual Real v_from_p_T(Real p, Real T) const override
Specific volume from pressure and temperature.
Definition: FlibeFluidProperties.C:232
FlibeFluidProperties::T_from_v_e
virtual Real T_from_v_e(Real v, Real e) const override
Temperature from specific volume and specific internal energy.
Definition: FlibeFluidProperties.C:94
NS::temperature
const std::string temperature
Definition: NS.h:26
FlibeFluidProperties::cv_from_v_e
virtual Real cv_from_v_e(Real v, Real e) const override
Isochoric specific heat from specific volume and specific internal energy.
Definition: FlibeFluidProperties.C:157
FlibeFluidProperties::mu_from_v_e
virtual Real mu_from_v_e(Real v, Real e) const override
Dynamic viscosity from specific volume and specific internal energy.
Definition: FlibeFluidProperties.C:185
FlibeFluidProperties::p_from_v_e
virtual Real p_from_v_e(Real v, Real e) const override
Pressure from specific volume and specific internal energy.
Definition: FlibeFluidProperties.C:52
FlibeFluidProperties::fluidName
virtual std::string fluidName() const override
Fluid name.
Definition: FlibeFluidProperties.C:40
SinglePhaseFluidProperties::p
e e e e p h p
Definition: SinglePhaseFluidProperties.h:167
validParams< SinglePhaseFluidProperties >
InputParameters validParams< SinglePhaseFluidProperties >()
Definition: SinglePhaseFluidProperties.C:14
FlibeFluidProperties::h_from_p_T
virtual Real h_from_p_T(Real p, Real T) const override
Specific enthalpy from pressure and temperature.
Definition: FlibeFluidProperties.C:247
NS::pressure
const std::string pressure
Definition: NS.h:25
SinglePhaseFluidProperties::h
e e e e h
Definition: SinglePhaseFluidProperties.h:163