2 #ifndef INCOMPRESSIBLEBACKEND_H_ 3 #define INCOMPRESSIBLEBACKEND_H_ 5 #include "DataStructures.h" 6 #include "IncompressibleFluid.h" 7 #include "AbstractState.h" 8 #include "Exceptions.h" 28 CachedElement _drhodTatPx, _dsdTatPx, _dhdTatPx, _dsdTatPxdT, _dhdTatPxdT, _dsdpatTx, _dhdpatTx;
36 void set_fractions(
const std::vector<CoolPropDbl>& fractions);
42 return get_backend_string(INCOMP_BACKEND);
56 bool using_mole_fractions(
void) {
57 return this->fluid->getxid() == IFRAC_MOLE;
59 bool using_mass_fractions(
void) {
60 return (this->fluid->getxid() == IFRAC_MASS || this->fluid->getxid() == IFRAC_PURE);
62 bool using_volu_fractions(
void) {
63 return this->fluid->getxid() == IFRAC_VOLUME;
78 if (!ParamName.compare(
"long_name")) {
81 throw ValueError(format(
"Input value [%s] is invalid.", ParamName.c_str()));
89 void set_reference_state(
double T0 = 20 + 273.15,
double p0 = 101325,
double x0 = 0.0,
double h0 = 0.0,
double s0 = 0.0);
131 double drhodTatPx(
void);
132 double dsdTatPx(
void);
133 double dhdTatPx(
void);
134 double dsdTatPxdT(
void);
135 double dhdTatPxdT(
void);
136 double dsdpatTx(
void);
137 double dhdpatTx(
void);
164 CoolPropDbl
DmassP_flash(CoolPropDbl rhomass, CoolPropDbl
p);
171 CoolPropDbl
HmassP_flash(CoolPropDbl hmass, CoolPropDbl p);
178 CoolPropDbl
PSmass_flash(CoolPropDbl p, CoolPropDbl smass);
190 return fluid->
rho(_T, _p, _fractions[0]);
192 CoolPropDbl calc_cmass(
void) {
193 return fluid->
c(_T, _p, _fractions[0]);
195 CoolPropDbl calc_cpmass(
void) {
198 CoolPropDbl calc_cvmass(
void) {
202 return fluid->
visc(_T, _p, _fractions[0]);
205 return fluid->
cond(_T, _p, _fractions[0]);
207 CoolPropDbl calc_T_freeze(
void) {
209 fluid->
checkX(_fractions[0]);
210 return fluid->
Tfreeze(_p, _fractions[0]);
213 CoolPropDbl calc_umass(
void);
217 CoolPropDbl calc_smass(
void);
222 CoolPropDbl raw_calc_smass(
double T,
double p,
double x);
238 return fluid->
c(T, p, x) /
T;
242 return fluid->
c(T, p, x);
264 double calc_dhdpatTx(
double T,
double rho,
double drhodTatPx);
269 return fluid->getTmax();
272 return fluid->getTmin();
275 return fluid->getxmin();
278 return fluid->getxmax();
281 return fluid->getName();
284 return fluid->getDescription();
double T(void)
Return the temperature in K.
Definition: AbstractState.h:1048
double calc_drhodTatPx(double T, double p, double x)
Partial derivative of density with respect to temperature at constant pressure and composition...
Definition: IncompressibleBackend.h:233
CoolPropDbl calc_Tmin(void)
Using this backend, calculate the minimum temperature in K.
Definition: IncompressibleBackend.h:271
CachedElement _cmass
Additional cached elements used for the partial derivatives.
Definition: IncompressibleBackend.h:27
void set_fractions(const std::vector< CoolPropDbl > &fractions)
Set the fractions.
Definition: IncompressibleBackend.cpp:193
CoolPropDbl DmassP_flash(CoolPropDbl rhomass, CoolPropDbl p)
These functions should be protected, but that requires new tests.
Definition: IncompressibleBackend.cpp:395
CoolPropDbl calc_melting_line(int param, int given, CoolPropDbl value)
Calculate T given pressure and internal energy **.
Definition: IncompressibleBackend.cpp:501
double hmass(void)
Return the mass enthalpy in J/kg.
Definition: IncompressibleBackend.cpp:303
bool clear()
Clear all the cached values.
Definition: IncompressibleBackend.cpp:155
void update(CoolProp::input_pairs input_pair, double value1, double value2)
Updating function for incompressible fluid.
Definition: IncompressibleBackend.cpp:59
double umass(void)
Return the molar internal energy in J/mol.
Definition: IncompressibleBackend.cpp:313
double drhodTatPx(double T, double p, double x)
Partial derivative of density.
Definition: IncompressibleFluid.cpp:232
void set_mole_fractions(const std::vector< CoolPropDbl > &mole_fractions)
Set the mole fractions.
Definition: IncompressibleBackend.cpp:212
std::string fluid_param_string(const std::string &ParamName)
Return a string from the backend for the mixture/fluid - backend dependent - could be CAS #...
Definition: IncompressibleBackend.h:77
CoolPropDbl calc_hmass(void)
... and continue with the ones that depend on reference conditions.
Definition: IncompressibleBackend.cpp:513
CoolPropDbl calc_conductivity(void)
Using this backend, calculate the thermal conductivity in W/m/K.
Definition: IncompressibleBackend.h:204
CoolPropDbl calc_first_partial_deriv(parameters Of, parameters Wrt, parameters Constant)
Calculate the first partial derivative for the desired derivative.
Definition: IncompressibleBackend.cpp:529
CoolPropDbl calc_rhomass(void)
Definition: IncompressibleBackend.h:189
void set_mass_fractions(const std::vector< CoolPropDbl > &mass_fractions)
Set the mass fractions.
Definition: IncompressibleBackend.cpp:238
double T_ref(void)
Return the temperature in K.
Definition: IncompressibleBackend.cpp:353
A property provider for incompressible solutions and pure fluids.
Definition: IncompressibleFluid.h:57
CoolPropDbl raw_calc_hmass(double T, double p, double x)
Functions that can be used with the solver, they miss the reference values!
Definition: IncompressibleBackend.cpp:521
double calc_dsdTatPx(double T, double p, double x)
Partial derivative of entropy with respect to temperature at constant pressure and composition...
Definition: IncompressibleBackend.h:237
double calc_dhdpatTx(double T, double rho, double drhodTatPx)
Partial derivative of enthalpy with respect to pressure at constant temperature and composition ...
Definition: IncompressibleBackend.cpp:564
The mother of all state classes.
Definition: AbstractState.h:78
std::vector< CoolPropDbl > _fractions
Bulk values, state variables.
Definition: IncompressibleBackend.h:20
double visc(double T, double p, double x)
Viscosity as a function of temperature, pressure and composition.
Definition: IncompressibleFluid.cpp:146
double calc_dsdTatPxdT(double T, double p, double x)
Partial derivative of entropy with respect to temperature at constant pressure and composition integr...
Definition: IncompressibleBackend.h:247
CoolPropDbl HmassP_flash(CoolPropDbl hmass, CoolPropDbl p)
Calculate T given pressure and enthalpy.
Definition: IncompressibleBackend.cpp:404
double smass_ref(void)
Return the molar entropy in J/mol/K.
Definition: IncompressibleBackend.cpp:384
double calc_dsdpatTx(double rho, double drhodTatPx)
Partial derivative of entropy with respect to pressure at constant temperature and composition ...
Definition: IncompressibleBackend.cpp:559
double calc_dhdTatPxdT(double T, double p, double x)
Partial derivative of enthalpy with respect to temperature at constant pressure and composition integ...
Definition: IncompressibleBackend.h:253
CoolPropDbl PSmass_flash(CoolPropDbl p, CoolPropDbl smass)
Calculate T given pressure and entropy.
Definition: IncompressibleBackend.cpp:436
CoolPropDbl calc_viscosity(void)
Using this backend, calculate the viscosity in Pa-s.
Definition: IncompressibleBackend.h:201
std::string calc_description(void)
Using this backend, get the description of the fluid.
Definition: IncompressibleBackend.h:283
Definition: IncompressibleBackend.h:14
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
double hmass_ref(void)
Return the mass enthalpy in J/kg.
Definition: IncompressibleBackend.cpp:379
Definition: Exceptions.h:45
std::string calc_name(void)
Using this backend, get the name of the fluid.
Definition: IncompressibleBackend.h:280
double rho(double T, double p, double x)
Density as a function of temperature, pressure and composition.
Definition: IncompressibleFluid.cpp:110
double c(double T, double p, double x)
Heat capacities as a function of temperature, pressure and composition.
Definition: IncompressibleFluid.cpp:131
CoolPropDbl calc_fraction_max(void)
Get the maximum fraction (mole, mass, volume) for incompressible fluid.
Definition: IncompressibleBackend.h:277
void set_volu_fractions(const std::vector< CoolPropDbl > &volu_fractions)
Set the volume fractions.
Definition: IncompressibleBackend.cpp:264
double dhdTatPxdT(double T, double p, double x)
Partial derivative of enthalpy.
Definition: IncompressibleFluid.cpp:262
double p_ref(void)
Return the pressure in Pa.
Definition: IncompressibleBackend.cpp:358
bool checkX(double x)
Check validity of composition input.
Definition: IncompressibleFluid.cpp:461
void check_status()
Check if the mole fractions have been set, etc.
Definition: IncompressibleBackend.cpp:288
CoolPropDbl calc_fraction_min(void)
Get the minimum fraction (mole, mass, volume) for incompressible fluid.
Definition: IncompressibleBackend.h:274
double Tfreeze(double p, double x)
Freezing temperature as a function of pressure and composition.
Definition: IncompressibleFluid.cpp:207
double rhomass(void)
We have to override some of the functions from the AbstractState.
Definition: IncompressibleBackend.cpp:298
CachedElement _T_ref
Reference values, no need to calculate them each time.
Definition: IncompressibleBackend.h:23
double p(void)
Return the pressure in Pa.
Definition: AbstractState.h:1060
double h_ref(void)
Return the mass enthalpy in J/kg.
Definition: IncompressibleBackend.cpp:368
double x_ref(void)
Return the composition.
Definition: IncompressibleBackend.cpp:363
void set_reference_state(double T0=20+273.15, double p0=101325, double x0=0.0, double h0=0.0, double s0=0.0)
Update the reference values and clear the state.
Definition: IncompressibleBackend.cpp:176
double cond(double T, double p, double x)
Thermal conductivity as a function of temperature, pressure and composition.
Definition: IncompressibleFluid.cpp:166
double calc_dhdTatPx(double T, double p, double x)
Partial derivative of enthalpy with respect to temperature at constant pressure and composition...
Definition: IncompressibleBackend.h:241
double smass(void)
Return the molar entropy in J/mol/K.
Definition: IncompressibleBackend.cpp:308
double dsdTatPxdT(double T, double p, double x)
Partial derivative of entropy.
Definition: IncompressibleFluid.cpp:247
const std::vector< CoolPropDbl > & get_mole_fractions(void)
Get the mole fractions of the fluid.
Definition: IncompressibleBackend.h:96
This file contains flash routines in which the state is unknown, and a solver of some kind must be us...
Definition: AbstractState.h:19
parameters
Define some constants that will be used throughout These are constants for the input and output para...
Definition: DataStructures.h:64
std::string backend_name(void)
Get a string representation of the backend - for instance "HelmholtzEOSMixtureBackend" for the core m...
Definition: IncompressibleBackend.h:41
Definition: CachedElement.h:32
double s_ref(void)
Return the molar entropy in J/mol/K.
Definition: IncompressibleBackend.cpp:373
double cmass(void)
Return the mass constant pressure specific heat in J/kg/K.
Definition: IncompressibleBackend.cpp:318
CoolPropDbl calc_Tmax(void)
Constants from the fluid object.
Definition: IncompressibleBackend.h:268