Line data Source code
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 "NaClFluidProperties.h"
11 :
12 : registerMooseObject("FluidPropertiesApp", NaClFluidProperties);
13 :
14 : InputParameters
15 118 : NaClFluidProperties::validParams()
16 : {
17 118 : InputParameters params = SinglePhaseFluidProperties::validParams();
18 118 : params.addClassDescription("Fluid properties for NaCl");
19 118 : return params;
20 0 : }
21 :
22 59 : NaClFluidProperties::NaClFluidProperties(const InputParameters & parameters)
23 : : SinglePhaseFluidProperties(parameters),
24 59 : _Mnacl(58.443e-3),
25 59 : _p_critical(1.82e7),
26 59 : _T_critical(3841.15),
27 59 : _rho_critical(108.43),
28 59 : _p_triple(50.0),
29 59 : _T_triple(1073.85)
30 : {
31 59 : }
32 :
33 118 : NaClFluidProperties::~NaClFluidProperties() {}
34 :
35 : std::string
36 2 : NaClFluidProperties::fluidName() const
37 : {
38 2 : return "nacl";
39 : }
40 :
41 : Real
42 53 : NaClFluidProperties::molarMass() const
43 : {
44 53 : return _Mnacl;
45 : }
46 :
47 : Real
48 1 : NaClFluidProperties::criticalPressure() const
49 : {
50 1 : return _p_critical;
51 : }
52 :
53 : Real
54 1 : NaClFluidProperties::criticalTemperature() const
55 : {
56 1 : return _T_critical;
57 : }
58 :
59 : Real
60 1 : NaClFluidProperties::criticalDensity() const
61 : {
62 1 : return _rho_critical;
63 : }
64 :
65 : Real
66 1 : NaClFluidProperties::triplePointPressure() const
67 : {
68 1 : return _p_triple;
69 : }
70 :
71 : Real
72 1 : NaClFluidProperties::triplePointTemperature() const
73 : {
74 1 : return _T_triple;
75 : }
76 :
77 : Real
78 19 : NaClFluidProperties::rho_from_p_T(Real pressure, Real temperature) const
79 : {
80 : // Correlation needs pressure in bar
81 19 : Real pbar = pressure * 1.0e-5;
82 : // Correlation requires temperature in Celsius
83 19 : Real Tc = temperature - _T_c2k;
84 :
85 : // Halite density at 0 Pa
86 19 : Real density_P0 = 2.17043e3 - 2.4599e-1 * Tc - 9.5797e-5 * Tc * Tc;
87 :
88 : // Halite density as a function of pressure
89 19 : Real l = 5.727e-3 + 2.715e-3 * std::exp(Tc / 733.4);
90 :
91 19 : return density_P0 + l * pbar;
92 : }
93 :
94 : void
95 6 : NaClFluidProperties::rho_from_p_T(
96 : Real pressure, Real temperature, Real & rho, Real & drho_dp, Real & drho_dT) const
97 : {
98 6 : rho = this->rho_from_p_T(pressure, temperature);
99 :
100 : // Correlation needs pressure in bar
101 6 : Real pbar = pressure * 1.0e-5;
102 : // Correlation requires temperature in Celsius
103 6 : Real Tc = temperature - _T_c2k;
104 :
105 : // Halite density at 0 Pa
106 6 : Real ddensity_P0_dT = -2.4599e-1 - 1.91594e-4 * Tc;
107 :
108 6 : Real l = 5.727e-3 + 2.715e-3 * std::exp(Tc / 733.4);
109 6 : Real dl_dT = 2.715e-3 * std::exp(Tc / 733.4) / 733.4;
110 :
111 6 : drho_dp = l * 1.0e-5;
112 6 : drho_dT = ddensity_P0_dT + dl_dT * pbar;
113 6 : }
114 :
115 : Real
116 5 : NaClFluidProperties::e_from_p_T(Real pressure, Real temperature) const
117 : {
118 5 : return h_from_p_T(pressure, temperature) - pressure / rho_from_p_T(pressure, temperature);
119 : }
120 :
121 : void
122 3 : NaClFluidProperties::e_from_p_T(
123 : Real pressure, Real temperature, Real & e, Real & de_dp, Real & de_dT) const
124 : {
125 : Real h, dh_dp, dh_dT;
126 3 : h_from_p_T(pressure, temperature, h, dh_dp, dh_dT);
127 : Real rho, drho_dp, drho_dT;
128 3 : rho_from_p_T(pressure, temperature, rho, drho_dp, drho_dT);
129 :
130 3 : e = h - pressure / rho;
131 3 : de_dp = dh_dp + pressure * drho_dp / rho / rho - 1.0 / rho;
132 3 : de_dT = dh_dT + pressure * drho_dT / rho / rho;
133 3 : }
134 :
135 : Real
136 8 : NaClFluidProperties::cp_from_p_T(Real pressure, Real temperature) const
137 : {
138 : // Correlation needs pressure in bar
139 8 : Real pbar = pressure * 1.0e-5;
140 : // Correlation requires temperature in Celsius
141 8 : Real Tc = temperature - _T_c2k;
142 : // Triple point temperature of NaCl (in C)
143 8 : Real Tt = _T_triple - _T_c2k;
144 : // Coefficients used in the correlation
145 8 : Real r3 = -1.7099e-3 - 3.82734e-6 * Tc - 8.65455e-9 * Tc * Tc;
146 8 : Real r4 = 5.29063e-8 - 9.63084e-11 * Tc + 6.50745e-13 * Tc * Tc;
147 :
148 : // Halite isobaric heat capacity
149 8 : return 1148.81 + 0.551548 * (Tc - Tt) + 2.64309e-4 * (Tc - Tt) * (Tc - Tt) + r3 * pbar +
150 8 : r4 * pbar * pbar;
151 : }
152 :
153 : void
154 1 : NaClFluidProperties::cp_from_p_T(
155 : Real pressure, Real temperature, Real & cp, Real & dcp_dp, Real & dcp_dT) const
156 : {
157 : // Correlation needs pressure in bar
158 1 : Real pbar = pressure * 1.0e-5;
159 : // Correlation requires temperature in Celsius
160 1 : Real Tc = temperature - _T_c2k;
161 : // Triple point temperature of NaCl (in C)
162 1 : Real Tt = _T_triple - _T_c2k;
163 : // Coefficients used in the correlation
164 1 : Real r3 = -1.7099e-3 - 3.82734e-6 * Tc - 8.65455e-9 * Tc * Tc;
165 1 : Real r4 = 5.29063e-8 - 9.63084e-11 * Tc + 6.50745e-13 * Tc * Tc;
166 1 : Real dr3_dT = -3.82734e-6 - 2 * 8.65455e-9 * Tc;
167 1 : Real dr4_dT = -9.63084e-11 + 2 * 6.50745e-13 * Tc;
168 :
169 : // Halite isobaric heat capacity
170 1 : cp = 1148.81 + 0.551548 * (Tc - Tt) + 2.64309e-4 * (Tc - Tt) * (Tc - Tt) + r3 * pbar +
171 1 : r4 * pbar * pbar;
172 1 : dcp_dp = r3 * 1.e-5 + 2 * r4 * pbar * 1.e-5;
173 1 : dcp_dT = 0.551548 + 2 * 2.64309e-4 * (Tc - Tt) + dr3_dT * pbar + dr4_dT * pbar * pbar;
174 1 : }
175 :
176 : Real
177 0 : NaClFluidProperties::cv_from_p_T(Real pressure, Real temperature) const
178 : {
179 0 : return e_from_p_T(pressure, temperature) / temperature;
180 : }
181 :
182 : Real
183 8 : NaClFluidProperties::k_from_p_T(Real /*pressure*/, Real temperature) const
184 : {
185 : // Correlation requires temperature in Celsius
186 8 : Real Tc = temperature - _T_c2k;
187 :
188 8 : return 6.82793 - 3.16584e-2 * Tc + 1.03451e-4 * Tc * Tc - 1.48207e-7 * Tc * Tc * Tc;
189 : }
190 :
191 : void
192 1 : NaClFluidProperties::k_from_p_T(
193 : Real /*pressure*/, Real temperature, Real & k, Real & dk_dp, Real & dk_dT) const
194 : {
195 : // Correlation requires temperature in Celsius
196 1 : Real Tc = temperature - _T_c2k;
197 :
198 1 : k = 6.82793 - 3.16584e-2 * Tc + 1.03451e-4 * Tc * Tc - 1.48207e-7 * Tc * Tc * Tc;
199 1 : dk_dp = 0.0;
200 1 : dk_dT = -3.16584e-2 + 2.06902e-4 * Tc - 4.44621e-7 * Tc * Tc;
201 1 : }
202 :
203 : Real
204 13 : NaClFluidProperties::h_from_p_T(Real pressure, Real temperature) const
205 : {
206 : // Correlation needs pressure in bar
207 13 : Real pbar = pressure * 1.0e-5;
208 : // Correlation requires temperature in Celsius
209 13 : Real Tc = temperature - _T_c2k;
210 : // Triple point temperature of water (in C)
211 13 : Real Tt = 273.16 - _T_c2k;
212 : // Triple point presure of water (in bar)
213 : Real pt = 611.657 * 1.0e-5;
214 :
215 : // Note: the enthalpy of halite is 0 at the triple point of water
216 13 : return 8.7664e2 * (Tc - Tt) + 6.4139e-2 * (Tc * Tc - Tt * Tt) +
217 13 : 8.8101e-5 * (Tc * Tc * Tc - Tt * Tt * Tt) + 44.14 * (pbar - pt);
218 : }
219 :
220 : void
221 4 : NaClFluidProperties::h_from_p_T(
222 : Real pressure, Real temperature, Real & h, Real & dh_dp, Real & dh_dT) const
223 : {
224 : // Correlation needs pressure in bar
225 4 : Real pbar = pressure * 1.0e-5;
226 : // Correlation requires temperature in Celsius
227 4 : Real Tc = temperature - _T_c2k;
228 : // Triple point temperature of water (in C)
229 4 : Real Tt = 273.16 - _T_c2k;
230 : // Triple point presure of water (in bar)
231 : Real pt = 611.657 * 1.0e-5;
232 :
233 : // Note: the enthalpy of halite is 0 at the triple point of water
234 4 : h = 8.7664e2 * (Tc - Tt) + 6.4139e-2 * (Tc * Tc - Tt * Tt) +
235 4 : 8.8101e-5 * (Tc * Tc * Tc - Tt * Tt * Tt) + 44.14 * (pbar - pt);
236 :
237 4 : dh_dp = 44.14 * 1.0e-5;
238 4 : dh_dT = 8.7664e2 + 2.0 * 6.4139e-2 * Tc + 3.0 * 8.8101e-5 * Tc * Tc;
239 4 : }
|