8 #ifndef INCOMPRESSIBLEFLUID_H_ 9 #define INCOMPRESSIBLEFLUID_H_ 11 #include "DataStructures.h" 12 #include "Helmholtz.h" 24 #include "MatrixMath.h" 30 enum IncompressibleTypeEnum
32 INCOMPRESSIBLE_NOT_SET,
33 INCOMPRESSIBLE_POLYNOMIAL,
34 INCOMPRESSIBLE_EXPPOLYNOMIAL,
35 INCOMPRESSIBLE_EXPONENTIAL,
36 INCOMPRESSIBLE_LOGEXPONENTIAL,
37 INCOMPRESSIBLE_POLYOFFSET
39 IncompressibleTypeEnum type;
40 Eigen::MatrixXd coeffs;
43 type = INCOMPRESSIBLE_NOT_SET;
47 #if !defined(NO_FMTLIB) && FMT_VERSION >= 90000 48 inline int format_as(IncompressibleData::IncompressibleTypeEnum type) {
49 return fmt::underlying(type);
64 std::string description;
65 std::string reference;
140 IncompressibleFluid() : Tmin(_HUGE), Tmax(_HUGE), xmin(_HUGE), xmax(_HUGE), TminPsat(_HUGE), xbase(_HUGE), Tbase(_HUGE) {
142 xid = IFRAC_UNDEFINED;
146 std::string getName()
const {
149 std::string get_name()
const {
152 std::string getDescription()
const {
155 std::string getReference()
const {
159 double getTmax()
const {
162 double getTmin()
const {
165 double getxmax()
const {
168 double getxmin()
const {
174 double getTminPsat()
const {
177 double getTbase()
const {
180 double getxbase()
const {
184 void setName(
const std::string& name) {
187 void setDescription(
const std::string& description) {
188 this->description = description;
190 void setReference(
const std::string& reference) {
191 this->reference = reference;
193 void setTmax(
double Tmax) {
196 void setTmin(
double Tmin) {
199 void setxmax(
double xmax) {
202 void setxmin(
double xmin) {
208 void setTminPsat(
double TminPsat) {
209 this->TminPsat = TminPsat;
211 void setTbase(
double Tbase) {
214 void setxbase(
double xbase) {
220 this->density = density;
223 this->specific_heat = specific_heat;
226 this->viscosity = viscosity;
229 this->conductivity = conductivity;
235 this->T_freeze = T_freeze;
240 this->mass2input = mass2input;
243 this->volume2input = volume2input;
246 this->mole2input = mole2input;
266 double rho(
double T,
double p,
double x);
268 double c(
double T,
double p,
double x);
269 double cp(
double T,
double p,
double x) {
270 throw ValueError(format(
"%s (%d): Please use the c-function instead.", __FILE__, __LINE__));
272 double cv(
double T,
double p,
double x) {
273 throw ValueError(format(
"%s (%d): Please use the c-function instead.", __FILE__, __LINE__));
276 double s(
double T,
double p,
double x) {
277 throw ValueError(format(
"%s (%d): The internal calculations have changed, use the backend to calculate entropy from the partial derivatives.",
278 __FILE__, __LINE__));
281 double u(
double T,
double p,
double x) {
283 format(
"%s (%d): The internal calculations have changed, use the backend to calculate internal energy from enthalpy.", __FILE__, __LINE__));
286 double h(
double T,
double p,
double x) {
288 format(
"%s (%d): The internal calculations have changed, use the backend to calculate enthalpy from the partial derivatives.", __FILE__,
292 double visc(
double T,
double p,
double x);
294 double cond(
double T,
double p,
double x);
296 double psat(
double T,
double x);
298 double Tfreeze(
double p,
double x);
306 double drhodTatPx(
double T,
double p,
double x);
316 double dsdTatPxdT(
double T,
double p,
double x);
320 double dhdTatPxdT(
double T,
double p,
double x);
325 double inputFromMass(
double T,
double x);
329 double inputFromVolume(
double T,
double x);
333 double inputFromMole(
double T,
double x);
341 double T_rho(
double Dmass,
double p,
double x);
343 double T_c(
double Cmass,
double p,
double x);
345 double T_s(
double Smass,
double p,
double x) {
346 throw NotImplementedError(format(
"%s (%d): T from entropy is not implemented in the fluid, use the backend.", __FILE__, __LINE__));
349 double T_u(
double Umass,
double p,
double x) {
350 throw NotImplementedError(format(
"%s (%d): T from internal energy is not implemented in the fluid, use the backend.", __FILE__, __LINE__));
353 double T_h(
double Hmass,
double p,
double x) {
354 throw NotImplementedError(format(
"%s (%d): T from enthalpy is not implemented in the fluid, use the backend.", __FILE__, __LINE__));
357 double T_visc(
double visc,
double p,
double x) {
358 throw NotImplementedError(format(
"%s (%d): T from viscosity is not implemented.", __FILE__, __LINE__));
361 double T_cond(
double cond,
double p,
double x) {
362 throw NotImplementedError(format(
"%s (%d): T from conductivity is not implemented.", __FILE__, __LINE__));
366 throw NotImplementedError(format(
"%s (%d): T from psat is not implemented.", __FILE__, __LINE__));
370 throw NotImplementedError(format(
"%s (%d): x from T_freeze is not implemented.", __FILE__, __LINE__));
382 double h_u(
double T,
double p,
double x) {
383 return u(T, p, x) + p / rho(T, p, x);
390 double u_h(
double T,
double p,
double x) {
391 return h(T, p, x) - p / rho(T, p, x);
404 bool checkT(
double T,
double p,
double x);
413 bool checkP(
double T,
double p,
double x);
420 bool checkX(
double x);
424 return (checkT(T, p, x) && checkP(T, p, x) && checkX(x));
IncompressibleData p_sat
Saturation pressure coefficients.
Definition: IncompressibleFluid.h:110
double s(double T, double p, double x)
Entropy as a function of temperature, pressure and composition.
Definition: IncompressibleFluid.h:276
double T_cond(double cond, double p, double x)
Thermal conductivity as a function of temperature, pressure and composition.
Definition: IncompressibleFluid.h:361
IncompressibleData conductivity
Conductivity coefficients.
Definition: IncompressibleFluid.h:105
double T_u(double Umass, double p, double x)
Temperature as a function of internal energy as a function of temperature, pressure and composition...
Definition: IncompressibleFluid.h:349
void setDensity(IncompressibleData density)
Setters for the coefficients.
Definition: IncompressibleFluid.h:219
double T_psat(double psat, double x)
Saturation pressure as a function of temperature and composition.
Definition: IncompressibleFluid.h:365
void setMass2input(IncompressibleData mass2input)
Setters for the concentration conversion coefficients.
Definition: IncompressibleFluid.h:239
A property provider for incompressible solutions and pure fluids.
Definition: IncompressibleFluid.h:57
double x_Tfreeze(double Tfreeze, double p)
Composition as a function of freezing temperature and pressure.
Definition: IncompressibleFluid.h:369
A class for polynomials starting at an arbitrary degree.
Definition: PolyMath.h:215
double T_visc(double visc, double p, double x)
Viscosity as a function of temperature, pressure and composition.
Definition: IncompressibleFluid.h:357
Definition: IncompressibleFluid.h:28
composition_types
These are constants for the compositions.
Definition: DataStructures.h:252
bool checkTPX(double T, double p, double x)
Check validity of temperature, pressure and composition input.
Definition: IncompressibleFluid.h:423
double T_h(double Hmass, double p, double x)
Temperature as a function of enthalpy, pressure and composition.
Definition: IncompressibleFluid.h:353
double u_h(double T, double p, double x)
Internal energy from h, p and rho.
Definition: IncompressibleFluid.h:390
Definition: Exceptions.h:45
IncompressibleData mole2input
Mole fraction conversion coefficients.
Definition: IncompressibleFluid.h:131
double T_s(double Smass, double p, double x)
Temperature as a function of entropy as a function of temperature, pressure and composition.
Definition: IncompressibleFluid.h:345
double h_u(double T, double p, double x)
Enthalpy from u, p and rho.
Definition: IncompressibleFluid.h:382
IncompressibleData viscosity
Viscosity coefficients.
Definition: IncompressibleFluid.h:100
double h(double T, double p, double x)
Enthalpy as a function of temperature, pressure and composition.
Definition: IncompressibleFluid.h:286
IncompressibleData specific_heat
Specific heat coefficients.
Definition: IncompressibleFluid.h:95
IncompressibleData volume2input
Volume fraction conversion coefficients.
Definition: IncompressibleFluid.h:126
This file contains flash routines in which the state is unknown, and a solver of some kind must be us...
Definition: AbstractState.h:19
double u(double T, double p, double x)
Internal energy as a function of temperature, pressure and composition.
Definition: IncompressibleFluid.h:281
IncompressibleData T_freeze
Freezing temperature coefficients.
Definition: IncompressibleFluid.h:115
IncompressibleData density
These are the objects that hold the coefficients.
Definition: IncompressibleFluid.h:88
IncompressibleData mass2input
Mass fraction conversion coefficients.
Definition: IncompressibleFluid.h:121