cantera/test_problems/cathermo/testIAPWSPres/testPress.cpp
2008-09-04 16:49:30 +00:00

180 lines
4.4 KiB
C++

#include "stdio.h"
#include "math.h"
#include "WaterPropsIAPWS.h"
#include <new>
using namespace std;
double numdpdt(WaterPropsIAPWS *water, double T, double pres) {
double rho = water->density(T, pres);
water->setState_TR(T, rho);
double presB = water->pressure();
double Td = T + 0.001;
water->setState_TR(Td, rho);
double presd = water->pressure();
double dpdt = (presd - presB) / 0.001;
return dpdt;
}
int main () {
double dens, u, s, h;
WaterPropsIAPWS *water = new WaterPropsIAPWS();
double T = 273.15 + 100.;
double rho = 10125. * 18.01 / (8.314472E3 * T);
double pres = water->pressure(T, rho);
printf("pres = %g\n", pres);
/*
* Print out the triple point conditions
*/
T = 273.16;
pres = water->psat(T);
printf("psat(%g) = %g\n", T, pres);
dens = water->density(T, pres, WATER_LIQUID);
printf("dens (liquid) = %g kg m-3\n", dens);
u = water->intEnergy();
if (fabs(u) < 5.0E-7) {
printf("intEng (liquid) ~= 0.0 J/kmol (less than fabs(5.0E-7))\n");
} else {
printf("intEng (liquid) = %g J/kmol\n", u);
}
s = water->entropy();
if (fabs(s) < 1.0E-9) {
printf("S (liquid) ~= 0.0 J/kmolK (less than fabs(1.0E-9))\n");
} else {
printf("S (liquid) = %g J/kmolK\n", s);
}
h = water->enthalpy();
printf("h (liquid) = %g J/kmol\n", h);
printf("h (liquid) = %g J/kg\n", (h)/18.015268);
dens = water->density(T, pres, WATER_GAS);
printf("dens (gas) = %g kg m-3\n", dens);
/*
* Print out the normal boiling point conditions
*/
T = 373.124;
pres = water->psat(T);
printf("psat(%g) = %g\n", T, pres);
dens = water->density(T, pres, WATER_LIQUID);
printf("dens (liquid) = %g kg m-3\n", dens);
double kappa = water->isothermalCompressibility();
printf("kappa (liquid) = %20.13g kg m-3 \n", kappa);
double pres2 = pres * 1.001;
dens = water->density(T, pres2, WATER_LIQUID);
kappa = water->isothermalCompressibility();
printf("kappa (liquid) = %20.13g kg m-3 \n", kappa);
dens = water->density(T, pres, WATER_GAS);
printf("dens (gas) = %g kg m-3\n", dens);
kappa = water->isothermalCompressibility();
printf("kappa (gas) = %20.13g kg m-3 \n", kappa);
pres2 = pres * (0.999);
dens = water->density(T, pres2, WATER_GAS);
printf("dens (gas) = %g kg m-3\n", dens);
kappa = water->isothermalCompressibility();
printf("kappa (gas) = %20.13g kg m-3 \n", kappa);
/*
* Calculate a few test points for the estimated
* saturation pressure function
*/
T = 273.15 + 0.;
pres = water->psat_est(T);
printf("psat_est(%g) = %g\n", T, pres);
T = 313.9999;
pres = water->psat_est(T);
printf("psat_est(%g) = %g\n", T, pres);
T = 314.0001;
pres = water->psat_est(T);
printf("psat_est(%g) = %g\n", T, pres);
T = 273.15 + 100.;
pres = water->psat_est(T);
printf("psat_est(%g) = %g\n", T, pres);
T = 647.25;
pres = water->psat_est(T);
printf("psat_est(%g) = %g\n", T, pres);
T = 300;
pres = 10.;
rho = water->density(T, pres, WATER_GAS);
water->setState_TR(T, rho);
double beta = water->coeffPresExp();
printf("beta = %20.13g\n", beta);
double dpdt = numdpdt(water, T, pres);
rho = water->density(T,pres);
double betaNum = dpdt * 18.015268 /( 8.314371E3 * rho);
printf("betaNum = %20.13g\n", betaNum);
double alpha = water->coeffThermExp();
printf("alpha = %20.13g\n", alpha);
T = 300;
pres = 10.E6;
rho = water->density(T, pres, WATER_GAS);
water->setState_TR(T, rho);
beta = water->coeffPresExp();
printf("beta = %20.13g\n", beta);
dpdt = numdpdt(water, T, pres);
rho = water->density(T,pres);
betaNum = dpdt * 18.015268 /( 8.314371E3 * rho);
printf("betaNum = %20.13g\n", betaNum);
alpha = water->coeffThermExp();
printf("alpha = %20.13g\n", alpha);
T = 700;
pres = 10.E6;
rho = water->density(T, pres, WATER_GAS);
water->setState_TR(T, rho);
beta = water->coeffPresExp();
printf("beta = %20.13g\n", beta);
dpdt = numdpdt(water, T, pres);
rho = water->density(T,pres);
betaNum = dpdt * 18.015268 /( 8.314371E3 * rho);
printf("betaNum = %20.13g\n", betaNum);
alpha = water->coeffThermExp();
printf("alpha = %20.13g\n", alpha);
delete water;
return 0;
}