www.mooseframework.org
TabulatedFluidProperties.h
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 #pragma once
11 
13 #include "DelimitedFileReader.h"
14 
15 class SinglePhaseFluidPropertiesPT;
16 class BicubicInterpolation;
18 
19 template <>
21 
22 #pragma GCC diagnostic push
23 #pragma GCC diagnostic ignored "-Woverloaded-virtual"
24 
93 {
94 public:
95  TabulatedFluidProperties(const InputParameters & parameters);
96  virtual ~TabulatedFluidProperties();
97 
98  virtual void initialSetup() override;
99 
100  virtual std::string fluidName() const override;
101 
102  virtual Real molarMass() const override;
103 
104  virtual Real rho_from_p_T(Real pressure, Real temperature) const override;
105 
106  virtual void rho_from_p_T(
107  Real pressure, Real temperature, Real & rho, Real & drho_dp, Real & drho_dT) const override;
108 
109  virtual Real e_from_p_T(Real pressure, Real temperature) const override;
110 
111  virtual void
112  e_from_p_T(Real pressure, Real temperature, Real & e, Real & de_dp, Real & de_dT) const override;
113 
114  virtual Real h_from_p_T(Real p, Real T) const override;
115 
116  virtual void
117  h_from_p_T(Real pressure, Real temperature, Real & h, Real & dh_dp, Real & dh_dT) const override;
118 
119  virtual Real mu_from_p_T(Real pressure, Real temperature) const override;
120 
121  virtual void mu_from_p_T(
122  Real pressure, Real temperature, Real & mu, Real & dmu_dp, Real & dmu_dT) const override;
123 
124  virtual Real cp_from_p_T(Real pressure, Real temperature) const override;
125 
126  using SinglePhaseFluidProperties::cp_from_p_T;
127 
128  virtual Real cv_from_p_T(Real pressure, Real temperature) const override;
129 
130  virtual Real c_from_p_T(Real pressure, Real temperature) const override;
131 
132  virtual Real k_from_p_T(Real pressure, Real temperature) const override;
133 
134  virtual void
135  k_from_p_T(Real pressure, Real temperature, Real & k, Real & dk_dp, Real & dk_dT) const override;
136 
137  virtual Real s_from_p_T(Real pressure, Real temperature) const override;
138 
139  virtual void s_from_p_T(Real p, Real T, Real & s, Real & ds_dp, Real & ds_dT) const override;
140 
141  virtual std::vector<Real> henryCoefficients() const override;
142 
143  virtual Real vaporPressure(Real temperature) const override;
144 
145  virtual void vaporPressure(Real temperature, Real & psat, Real & dpsat_dT) const override;
146 
147 protected:
152  void writeTabulatedData(std::string file_name);
153 
160  virtual void checkInputVariables(Real & pressure, Real & temperature) const;
161 
166  virtual void generateTabulatedData();
167 
175  void reshapeData2D(unsigned int nrow,
176  unsigned int ncol,
177  const std::vector<Real> & vec,
178  std::vector<std::vector<Real>> & mat);
179 
181  FileName _file_name;
183  std::vector<Real> _pressure;
185  std::vector<Real> _temperature;
187  std::vector<std::vector<Real>> _properties;
188 
190  std::vector<std::unique_ptr<BicubicInterpolation>> _property_ipol;
191 
201  unsigned int _num_T;
203  unsigned int _num_p;
205  const bool _save_file;
206 
209 
211  const std::vector<std::string> _required_columns{"pressure", "temperature"};
213  const std::vector<std::string> _property_columns{
214  "density", "enthalpy", "internal_energy", "viscosity", "k", "cv", "cp", "entropy"};
218  std::vector<std::string> _interpolated_properties;
228 
230  unsigned int _density_idx;
231  unsigned int _enthalpy_idx;
232  unsigned int _internal_energy_idx;
233  unsigned int _viscosity_idx;
234  unsigned int _k_idx;
235  unsigned int _cp_idx;
236  unsigned int _cv_idx;
237  unsigned int _entropy_idx;
238 
240  MooseUtils::DelimitedFileReader _csv_reader;
241 };
242 
243 #pragma GCC diagnostic pop
244 
TabulatedFluidProperties::henryCoefficients
virtual std::vector< Real > henryCoefficients() const override
Henry's law coefficients for dissolution in water.
Definition: TabulatedFluidProperties.C:494
TabulatedFluidProperties::_interpolate_enthalpy
bool _interpolate_enthalpy
Definition: TabulatedFluidProperties.h:221
TabulatedFluidProperties
Class for fluid properties read from a file.
Definition: TabulatedFluidProperties.h:92
TabulatedFluidProperties::_csv_reader
MooseUtils::DelimitedFileReader _csv_reader
The MOOSE delimited file reader.
Definition: TabulatedFluidProperties.h:240
SinglePhaseFluidProperties
Common class for single phase fluid properties.
Definition: SinglePhaseFluidProperties.h:89
TabulatedFluidProperties::generateTabulatedData
virtual void generateTabulatedData()
Generates a table of fluid properties by looping over pressure and temperature and calculating proper...
Definition: TabulatedFluidProperties.C:544
TabulatedFluidProperties::s_from_p_T
virtual Real s_from_p_T(Real pressure, Real temperature) const override
Definition: TabulatedFluidProperties.C:476
TabulatedFluidProperties::_interpolated_properties_enum
MultiMooseEnum _interpolated_properties_enum
Properties to be interpolated entered in the input file.
Definition: TabulatedFluidProperties.h:216
TabulatedFluidProperties::k_from_p_T
virtual Real k_from_p_T(Real pressure, Real temperature) const override
Definition: TabulatedFluidProperties.C:450
TabulatedFluidProperties::initialSetup
virtual void initialSetup() override
Definition: TabulatedFluidProperties.C:104
TabulatedFluidProperties::_fp
const SinglePhaseFluidProperties & _fp
SinglePhaseFluidPropertiesPT UserObject.
Definition: TabulatedFluidProperties.h:208
SinglePhaseFluidProperties.h
TabulatedFluidProperties::_viscosity_idx
unsigned int _viscosity_idx
Definition: TabulatedFluidProperties.h:233
TabulatedFluidProperties::vaporPressure
virtual Real vaporPressure(Real temperature) const override
Vapor pressure.
Definition: TabulatedFluidProperties.C:500
TabulatedFluidProperties::checkInputVariables
virtual void checkInputVariables(Real &pressure, Real &temperature) const
Checks that the inputs are within the range of the tabulated data, and throws an error if they are no...
Definition: TabulatedFluidProperties.C:635
TabulatedFluidProperties::_interpolate_entropy
bool _interpolate_entropy
Definition: TabulatedFluidProperties.h:227
TabulatedFluidProperties::_required_columns
const std::vector< std::string > _required_columns
List of required column names to be read.
Definition: TabulatedFluidProperties.h:211
TabulatedFluidProperties::_interpolate_cv
bool _interpolate_cv
Definition: TabulatedFluidProperties.h:226
validParams< TabulatedFluidProperties >
InputParameters validParams< TabulatedFluidProperties >()
Definition: TabulatedFluidProperties.C:23
TabulatedFluidProperties::_interpolated_properties
std::vector< std::string > _interpolated_properties
List of properties to be interpolated.
Definition: TabulatedFluidProperties.h:218
TabulatedFluidProperties::_pressure
std::vector< Real > _pressure
Pressure vector.
Definition: TabulatedFluidProperties.h:183
TabulatedFluidProperties::_pressure_max
Real _pressure_max
Maximum pressure in tabulated data.
Definition: TabulatedFluidProperties.h:199
TabulatedFluidProperties::_interpolate_cp
bool _interpolate_cp
Definition: TabulatedFluidProperties.h:225
TabulatedFluidProperties::_num_T
unsigned int _num_T
Number of temperature points in the tabulated data.
Definition: TabulatedFluidProperties.h:201
SinglePhaseFluidProperties::T
e e e e p h T T T T T T
Definition: SinglePhaseFluidProperties.h:177
TabulatedFluidProperties::_properties
std::vector< std::vector< Real > > _properties
Tabulated fluid properties.
Definition: TabulatedFluidProperties.h:187
TabulatedFluidProperties::_internal_energy_idx
unsigned int _internal_energy_idx
Definition: TabulatedFluidProperties.h:232
TabulatedFluidProperties::_cv_idx
unsigned int _cv_idx
Definition: TabulatedFluidProperties.h:236
TabulatedFluidProperties::cv_from_p_T
virtual Real cv_from_p_T(Real pressure, Real temperature) const override
Definition: TabulatedFluidProperties.C:438
SinglePhaseFluidProperties::rho
e e e e p h T rho
Definition: SinglePhaseFluidProperties.h:169
TabulatedFluidProperties::_density_idx
unsigned int _density_idx
Index of each property.
Definition: TabulatedFluidProperties.h:230
TabulatedFluidProperties::_property_columns
const std::vector< std::string > _property_columns
List of possible property column names to be read.
Definition: TabulatedFluidProperties.h:213
TabulatedFluidProperties::molarMass
virtual Real molarMass() const override
Fluid name.
Definition: TabulatedFluidProperties.C:310
TabulatedFluidProperties::_interpolate_density
bool _interpolate_density
Set of flags to note whether a property is to be interpolated.
Definition: TabulatedFluidProperties.h:220
TabulatedFluidProperties::reshapeData2D
void reshapeData2D(unsigned int nrow, unsigned int ncol, const std::vector< Real > &vec, std::vector< std::vector< Real >> &mat)
Forms a 2D matrix from a single std::vector.
Definition: TabulatedFluidProperties.C:617
TabulatedFluidProperties::_cp_idx
unsigned int _cp_idx
Definition: TabulatedFluidProperties.h:235
TabulatedFluidProperties::_temperature_min
Real _temperature_min
Minimum temperature in tabulated data.
Definition: TabulatedFluidProperties.h:193
TabulatedFluidProperties::h_from_p_T
virtual Real h_from_p_T(Real p, Real T) const override
Definition: TabulatedFluidProperties.C:368
TabulatedFluidProperties::_interpolate_internal_energy
bool _interpolate_internal_energy
Definition: TabulatedFluidProperties.h:222
TabulatedFluidProperties::_save_file
const bool _save_file
Whether to save a generated fluid properties file to disk.
Definition: TabulatedFluidProperties.h:205
TabulatedFluidProperties::~TabulatedFluidProperties
virtual ~TabulatedFluidProperties()
Definition: TabulatedFluidProperties.C:101
TabulatedFluidProperties::_property_ipol
std::vector< std::unique_ptr< BicubicInterpolation > > _property_ipol
Interpolated fluid property.
Definition: TabulatedFluidProperties.h:190
TabulatedFluidProperties::c_from_p_T
virtual Real c_from_p_T(Real pressure, Real temperature) const override
Definition: TabulatedFluidProperties.C:420
TabulatedFluidProperties::writeTabulatedData
void writeTabulatedData(std::string file_name)
Writes tabulated data to a file.
Definition: TabulatedFluidProperties.C:512
NS::temperature
const std::string temperature
Definition: NS.h:26
TabulatedFluidProperties::_file_name
FileName _file_name
File name of tabulated data file.
Definition: TabulatedFluidProperties.h:181
TabulatedFluidProperties::_temperature
std::vector< Real > _temperature
Temperature vector.
Definition: TabulatedFluidProperties.h:185
TabulatedFluidProperties::e_from_p_T
virtual Real e_from_p_T(Real pressure, Real temperature) const override
Definition: TabulatedFluidProperties.C:342
TabulatedFluidProperties::TabulatedFluidProperties
TabulatedFluidProperties(const InputParameters &parameters)
Definition: TabulatedFluidProperties.C:60
TabulatedFluidProperties::fluidName
virtual std::string fluidName() const override
Definition: TabulatedFluidProperties.C:304
TabulatedFluidProperties::_pressure_min
Real _pressure_min
Minimum pressure in tabulated data.
Definition: TabulatedFluidProperties.h:197
TabulatedFluidProperties::_enthalpy_idx
unsigned int _enthalpy_idx
Definition: TabulatedFluidProperties.h:231
TabulatedFluidProperties::rho_from_p_T
virtual Real rho_from_p_T(Real pressure, Real temperature) const override
Definition: TabulatedFluidProperties.C:316
TabulatedFluidProperties::_interpolate_k
bool _interpolate_k
Definition: TabulatedFluidProperties.h:224
TabulatedFluidProperties::mu_from_p_T
virtual Real mu_from_p_T(Real pressure, Real temperature) const override
Definition: TabulatedFluidProperties.C:394
SinglePhaseFluidProperties::p
e e e e p h p
Definition: SinglePhaseFluidProperties.h:167
TabulatedFluidProperties::_interpolate_viscosity
bool _interpolate_viscosity
Definition: TabulatedFluidProperties.h:223
TabulatedFluidProperties::cp_from_p_T
virtual Real cp_from_p_T(Real pressure, Real temperature) const override
Definition: TabulatedFluidProperties.C:426
TabulatedFluidProperties::_num_p
unsigned int _num_p
Number of pressure points in the tabulated data.
Definition: TabulatedFluidProperties.h:203
TabulatedFluidProperties::_k_idx
unsigned int _k_idx
Definition: TabulatedFluidProperties.h:234
TabulatedFluidProperties::_entropy_idx
unsigned int _entropy_idx
Definition: TabulatedFluidProperties.h:237
TabulatedFluidProperties::_temperature_max
Real _temperature_max
Maximum temperature in tabulated data.
Definition: TabulatedFluidProperties.h:195
NS::pressure
const std::string pressure
Definition: NS.h:25
SinglePhaseFluidProperties::h
e e e e h
Definition: SinglePhaseFluidProperties.h:163