8 #ifndef DATASTRUCTURES_H_ 9 #define DATASTRUCTURES_H_ 11 #include "CPnumerics.h" 12 #include "Exceptions.h" 18 double rhomolar, T, p, hmolar, smolar, umolar, Q;
32 return ValidNumber(rhomolar) && ValidNumber(T) && ValidNumber(hmolar) && ValidNumber(p);
47 enum SsatSimpleStateEnum
50 SSAT_MAX_DOESNT_EXIST,
53 SsatSimpleStateEnum exists;
66 INVALID_PARAMETER = 0,
137 idalphar_dtau_constdelta,
138 idalphar_ddelta_consttau,
142 idalpha0_dtau_constdelta,
143 idalpha0_ddelta_consttau,
144 id2alpha0_ddelta2_consttau,
145 id3alpha0_ddelta3_consttau,
265 FLUID_TYPE_PSEUDOPURE,
267 FLUID_TYPE_INCOMPRESSIBLE_LIQUID,
268 FLUID_TYPE_INCOMPRESSIBLE_SOLUTION,
276 INPUT_PAIR_INVALID = 0,
321 swap = !(key1 == x1);
322 return ((key1 == x1 && key2 == x2) || (key2 == x1 && key1 == x2));
342 if (match_pair(key1, key2,
iQ,
iT, swap)) {
344 }
else if (match_pair(key1, key2,
iP,
iQ, swap)) {
346 }
else if (match_pair(key1, key2,
iP,
iT, swap)) {
348 }
else if (match_pair(key1, key2,
iDmolar,
iT, swap)) {
350 }
else if (match_pair(key1, key2,
iDmass,
iT, swap)) {
352 }
else if (match_pair(key1, key2,
iHmolar,
iT, swap)) {
354 }
else if (match_pair(key1, key2,
iHmass,
iT, swap)) {
356 }
else if (match_pair(key1, key2,
iSmolar,
iT, swap)) {
358 }
else if (match_pair(key1, key2,
iSmass,
iT, swap)) {
360 }
else if (match_pair(key1, key2,
iT,
iUmolar, swap)) {
362 }
else if (match_pair(key1, key2,
iT,
iUmass, swap)) {
364 }
else if (match_pair(key1, key2,
iDmass,
iHmass, swap)) {
368 }
else if (match_pair(key1, key2,
iDmass,
iSmass, swap)) {
372 }
else if (match_pair(key1, key2,
iDmass,
iUmass, swap)) {
376 }
else if (match_pair(key1, key2,
iDmass,
iP, swap)) {
378 }
else if (match_pair(key1, key2,
iDmolar,
iP, swap)) {
380 }
else if (match_pair(key1, key2,
iDmass,
iQ, swap)) {
382 }
else if (match_pair(key1, key2,
iDmolar,
iQ, swap)) {
384 }
else if (match_pair(key1, key2,
iHmass,
iP, swap)) {
386 }
else if (match_pair(key1, key2,
iHmolar,
iP, swap)) {
388 }
else if (match_pair(key1, key2,
iP,
iSmass, swap)) {
390 }
else if (match_pair(key1, key2,
iP,
iSmolar, swap)) {
392 }
else if (match_pair(key1, key2,
iP,
iUmass, swap)) {
394 }
else if (match_pair(key1, key2,
iP,
iUmolar, swap)) {
396 }
else if (match_pair(key1, key2,
iHmass,
iSmass, swap)) {
400 }
else if (match_pair(key1, key2,
iSmass,
iUmass, swap)) {
405 pair = INPUT_PAIR_INVALID;
433 extern std::string get_mixture_binary_pair_pcsaft(
const std::string& CAS1,
const std::string& CAS2,
const std::string& param);
434 extern void set_mixture_binary_pair_pcsaft(
const std::string& CAS1,
const std::string& CAS2,
const std::string& param,
const double val);
440 INVALID_BACKEND_FAMILY = 0,
442 REFPROP_BACKEND_FAMILY,
443 INCOMP_BACKEND_FAMILY,
445 TREND_BACKEND_FAMILY,
447 BICUBIC_BACKEND_FAMILY,
451 PCSAFT_BACKEND_FAMILY
458 REFPROP_BACKEND_PURE,
473 void extract_backend_families_string(std::string backend_string,
backend_families& f1, std::string& f2);
474 std::string get_backend_string(backends backend);
476 #if !defined(NO_FMTLIB) && FMT_VERSION >= 90000 479 return fmt::underlying(parameter);
482 inline int format_as(
phases phase) {
483 return fmt::underlying(phase);
486 inline int format_as(
schemes scheme) {
487 return fmt::underlying(scheme);
491 return fmt::underlying(type);
495 return fmt::underlying(type);
499 return fmt::underlying(pair);
503 return fmt::underlying(family);
506 inline int format_as(backends backend) {
507 return fmt::underlying(backend);
Mass-based internal energy.
Definition: DataStructures.h:116
Molar density in mol/m^3, Entropy in J/mol/K.
Definition: DataStructures.h:314
The 500-year global warming potential.
Definition: DataStructures.h:163
The fundamental derivative of gas dynamics.
Definition: DataStructures.h:133
Minimum temperature.
Definition: DataStructures.h:82
Enthalpy in J/mol, Entropy in J/mol/K.
Definition: DataStructures.h:307
Supercritical liquid (p > pc, T < Tc)
Definition: DataStructures.h:181
Derivative of third virial coefficient with temperature.
Definition: DataStructures.h:151
The phase index of the given state.
Definition: DataStructures.h:168
Molar density in mol/m^3, Temperature in K.
Definition: DataStructures.h:289
Molar density in mol/m^3, Enthalpy in J/mol.
Definition: DataStructures.h:312
Fire hazard index.
Definition: DataStructures.h:164
Health hazard index.
Definition: DataStructures.h:165
Pressure in Pa, Entropy in J/mol/K.
Definition: DataStructures.h:302
bool is_valid_first_derivative(const std::string &name, parameters &iOf, parameters &iWrt, parameters &iConstant)
Returns true if the string corresponds to a valid first derivative.
Definition: DataStructures.cpp:222
Mass-based enthalpy.
Definition: DataStructures.h:111
bool is_valid_second_derivative(const std::string &name, parameters &iOf1, parameters &iWrt1, parameters &iConstant1, parameters &iWrt2, parameters &iConstant2)
Returns true if the string corresponds to a valid second derivative.
Definition: DataStructures.cpp:307
fluid_types
These are unit types for the fluid.
Definition: DataStructures.h:262
Temperature at the critical point.
Definition: DataStructures.h:75
Molar density used for the critical point.
Definition: DataStructures.h:73
The maximum fraction (mole,mass,volume) for incompressibles.
Definition: DataStructures.h:157
Subcritical liquid.
Definition: DataStructures.h:178
Supercritical gas (p < pc, T > Tc)
Definition: DataStructures.h:180
Mole-based Gibbs energy.
Definition: DataStructures.h:103
Dipole moment.
Definition: DataStructures.h:86
Mass-based Helmholtz energy.
Definition: DataStructures.h:118
Definition: DataStructures.h:36
Pressure in Pa, Molar quality.
Definition: DataStructures.h:278
phases
These are constants for the phases of the fluid.
Definition: DataStructures.h:176
Enthalpy in J/mol, Temperature in K.
Definition: DataStructures.h:290
Second virial coefficient.
Definition: DataStructures.h:148
The residual molar enthalpy.
Definition: DataStructures.h:105
Reciprocal reduced temperature.
Definition: DataStructures.h:92
Pressure at the critical point.
Definition: DataStructures.h:78
schemes get_scheme_index(const std::string &scheme_name)
Return the enum key corresponding to the association scheme name ("2B" for instance) ...
Definition: DataStructures.cpp:494
Mass-based density.
Definition: DataStructures.h:110
Temperature at the reducing state.
Definition: DataStructures.h:74
Temperature in K, Internal energy in J/mol.
Definition: DataStructures.h:294
Mass density in kg/m^3, Temperature in K.
Definition: DataStructures.h:288
The residual molar Gibbs energy.
Definition: DataStructures.h:107
Ideal-gas constant.
Definition: DataStructures.h:69
Unknown phase.
Definition: DataStructures.h:185
Entropy in J/kg/K, Temperature in K.
Definition: DataStructures.h:293
Entropy in J/mol/K, Temperature in K.
Definition: DataStructures.h:292
std::string get_mixture_binary_pair_data(const std::string &CAS1, const std::string &CAS2, const std::string ¶m)
Get a string for the given binary pair.
Definition: MixtureParameters.cpp:305
Maximum temperature.
Definition: DataStructures.h:83
Mass-based ideal-gas specific heat.
Definition: DataStructures.h:114
void extract_backend_families(std::string backend_string, backend_families &f1, backend_families &f2)
Convert a string into the enum values.
Definition: DataStructures.cpp:829
Mole-based constant-volume specific heat.
Definition: DataStructures.h:101
Molar quality, Entropy in J/kg/K.
Definition: DataStructures.h:280
Pressure in Pa, Temperature in K.
Definition: DataStructures.h:286
Physical hazard index.
Definition: DataStructures.h:166
A modified class for the state point at the maximum saturation entropy on the vapor curve...
Definition: DataStructures.h:45
std::string get_parameter_information(int key, const std::string &info)
Return information about the parameter.
Definition: DataStructures.cpp:176
Enthalpy in J/kg, Molar quality.
Definition: DataStructures.h:282
composition_types
These are constants for the compositions.
Definition: DataStructures.h:252
Isobaric expansion coefficient.
Definition: DataStructures.h:129
std::string get_csv_parameter_list()
Get a comma separated list of parameters.
Definition: DataStructures.cpp:200
void set_mixture_binary_pair_data(const std::string &CAS1, const std::string &CAS2, const std::string ¶m, const double val)
Set a parameter for the given binary pair.
Definition: MixtureParameters.cpp:355
Molar density in mol/m^3, Pressure in Pa.
Definition: DataStructures.h:298
Entropy in J/mol/K, Internal energy in J/mol.
Definition: DataStructures.h:309
backend_families
The structure is taken directly from the AbstractState class.
Definition: DataStructures.h:438
At the critical point.
Definition: DataStructures.h:182
Pressure in Pa, Entropy in J/kg/K.
Definition: DataStructures.h:301
CoolProp::input_pairs generate_update_pair(parameters key1, T value1, parameters key2, T value2, T &out1, T &out2)
Generate an update pair from key, value pairs.
Definition: DataStructures.h:338
Density in mol/m^3, Molar quality.
Definition: DataStructures.h:283
Enthalpy in J/kg, Temperature in K.
Definition: DataStructures.h:291
const std::string & get_input_pair_short_desc(input_pairs pair)
Return the short description of an input pair key ("DmolarT_INPUTS" for instance) ...
Definition: DataStructures.cpp:597
The Prandtl number.
Definition: DataStructures.h:124
parameters get_parameter_index(const std::string ¶m_name)
Return the enum key corresponding to the parameter name ("Dmolar" for instance)
Definition: DataStructures.cpp:504
Isentropic expansion coefficient.
Definition: DataStructures.h:130
Mass density in kg/m^3, Internal energy in J/kg.
Definition: DataStructures.h:315
Pressure in Pa, Internal energy in J/mol.
Definition: DataStructures.h:304
The compressibility factor Z = p*v/(R*T)
Definition: DataStructures.h:152
The phase identification parameter of Venkatarathnam and Oellrich.
Definition: DataStructures.h:153
Mass density at the critical point.
Definition: DataStructures.h:77
input_pairs
These are input pairs that can be used for the update function (in each pair, input keys are sorted a...
Definition: DataStructures.h:274
The 100-year global warming potential.
Definition: DataStructures.h:162
Mass density in kg/m^3, Pressure in Pa.
Definition: DataStructures.h:297
The residual molar entropy (as a function of temperature and density)
Definition: DataStructures.h:106
Subcritical gas.
Definition: DataStructures.h:183
Mass-based constant-volume specific heat.
Definition: DataStructures.h:115
Triple point temperature.
Definition: DataStructures.h:80
Third virial coefficient.
Definition: DataStructures.h:149
Molar quality, Temperature in K.
Definition: DataStructures.h:277
Entropy in J/kg/K, Internal energy in J/kg.
Definition: DataStructures.h:308
phases get_phase_index(const std::string ¶m_name)
Return the enum key corresponding to the phase name ("phase_liquid" for instance) ...
Definition: DataStructures.cpp:420
Molar mass.
Definition: DataStructures.h:70
Enthalpy in J/kg, Pressure in Pa.
Definition: DataStructures.h:299
bool is_valid_first_saturation_derivative(const std::string &name, parameters &iOf, parameters &iWrt)
Returns true if the string corresponds to a valid first saturation derivative - e.g.
Definition: DataStructures.cpp:265
Derivative of second virial coefficient with temperature.
Definition: DataStructures.h:150
Mass density in kg/m^3, Entropy in J/kg/K.
Definition: DataStructures.h:313
Enthalpy in J/kg, Entropy in J/kg/K.
Definition: DataStructures.h:306
Mass-based entropy.
Definition: DataStructures.h:112
The last parameter, so we can check that all parameters are described in DataStructures.cpp.
Definition: DataStructures.h:169
Viscosity.
Definition: DataStructures.h:121
Molar density used for the reducing state.
Definition: DataStructures.h:72
Acentric factor.
Definition: DataStructures.h:71
Mole-based density.
Definition: DataStructures.h:96
void split_input_pair(input_pairs pair, parameters &p1, parameters &p2)
Split an input pair into parameters for the two parts that form the pair.
Definition: DataStructures.cpp:613
Mass density at the reducing state.
Definition: DataStructures.h:76
Mole-based constant-pressure specific heat.
Definition: DataStructures.h:99
Mole-based entropy.
Definition: DataStructures.h:98
Pressure.
Definition: DataStructures.h:90
Density in kg/m^3, Molar quality.
Definition: DataStructures.h:284
Speed of sound.
Definition: DataStructures.h:127
Isothermal compressibility.
Definition: DataStructures.h:128
Enthalpy in J/mol, Pressure in Pa.
Definition: DataStructures.h:300
Mole-based ideal-gas constant-pressure specific heat.
Definition: DataStructures.h:100
Twophase.
Definition: DataStructures.h:184
bool is_valid_scheme(const std::string &scheme_name, schemes &iOutput)
Return true if passed PC-SAFT association scheme name is valid, otherwise false.
Definition: DataStructures.cpp:480
The freezing temperature for incompressibles.
Definition: DataStructures.h:158
const std::string & get_input_pair_long_desc(input_pairs pair)
Return the long description of an input pair key ("Molar density in mol/m^3, Temperature in K" for in...
Definition: DataStructures.cpp:605
Pressure at the reducing point.
Definition: DataStructures.h:79
Temperature in K, Internal energy in J/kg.
Definition: DataStructures.h:295
bool is_valid_phase(const std::string &phase_name, phases &iOutput)
Return true if passed phase name is valid, otherwise false.
Definition: DataStructures.cpp:406
Triple point pressure.
Definition: DataStructures.h:81
The minimum fraction (mole, mass, volume) for incompressibles.
Definition: DataStructures.h:156
input_pairs get_input_pair_index(const std::string &input_pair_name)
Get the input pair index associated with its string representation.
Definition: DataStructures.cpp:588
Thermal conductivity.
Definition: DataStructures.h:122
Minimum pressure.
Definition: DataStructures.h:85
Mole-based internal energy.
Definition: DataStructures.h:102
Surface tension.
Definition: DataStructures.h:123
Ozone depletion potential (R-11 = 1.0)
Definition: DataStructures.h:167
Enthalpy in J/mol, Molar quality.
Definition: DataStructures.h:281
Mass-based Gibbs energy.
Definition: DataStructures.h:117
Supercritical (p > pc, T > Tc)
Definition: DataStructures.h:179
This file contains flash routines in which the state is unknown, and a solver of some kind must be us...
Definition: AbstractState.h:19
Mole-based Helmholtz energy.
Definition: DataStructures.h:104
Molar density in mol/m^3, Internal energy in J/mol.
Definition: DataStructures.h:316
The 20-year global warming potential.
Definition: DataStructures.h:161
Molar quality, Entropy in J/mol/K.
Definition: DataStructures.h:279
parameters
Define some constants that will be used throughout These are constants for the input and output para...
Definition: DataStructures.h:64
Reduced density.
Definition: DataStructures.h:93
Mole-based enthalpy.
Definition: DataStructures.h:97
Temperature.
Definition: DataStructures.h:89
Maximum pressure.
Definition: DataStructures.h:84
schemes
Constants for the different PC-SAFT association schemes (see Huang and Radosz 1990) ...
Definition: DataStructures.h:190
Mass-based constant-pressure specific heat.
Definition: DataStructures.h:113
bool is_valid_parameter(const std::string &name, parameters &iOutput)
Returns true if a valid parameter, and sets value in the variable iOutput.
Definition: DataStructures.cpp:208
Mass density in kg/m^3, Enthalpy in J/kg.
Definition: DataStructures.h:311
Vapor quality.
Definition: DataStructures.h:91
Pressure in Pa, Internal energy in J/kg.
Definition: DataStructures.h:303
bool is_trivial_parameter(int key)
Returns true if the input is trivial (constants, critical parameters, etc.)
Definition: DataStructures.cpp:167
Definition: DataStructures.h:16