Changed some of the tests so that quantities that are nominally zero

should be set to zero exactly if they are below a tolerance.
In this way, unconsequential roundoff errors don't trigger false
results.
This commit is contained in:
Harry Moffat 2006-07-11 17:13:43 +00:00
parent f325a1b190
commit 460a6e50ab
10 changed files with 61 additions and 19 deletions

View file

@ -7,4 +7,4 @@ outputa.txt
HMW_test_1.d
diff_test.out
table.csv
csvCode.txt

View file

@ -6,3 +6,4 @@ diff_test.out
output.txt
outputa.txt
table.csv
csvCode.txt

View file

@ -1,8 +1,8 @@
pres = 182080
psat(273.16) = 611.655
dens (liquid) = 999.793 kg m-3
intEng (liquid) = -1.91143e-08 J/kmol
S (liquid) = -8.47431e-11 J/kmolK
intEng (liquid) ~= 0.0 J/kmol (less than fabs(5.0E-7))
S (liquid) ~= 0.0 J/kmolK (less than fabs(1.0E-9))
h (liquid) = 11.0214 J/kmol
h (liquid) = 0.611782 J/kg
dens (gas) = 0.00485458 kg m-3

View file

@ -1,5 +1,6 @@
#include "stdio.h"
#include "math.h"
#include "WaterPropsIAPWS.h"
#include <new>
using namespace std;
@ -26,10 +27,18 @@ int main () {
printf("dens (liquid) = %g kg m-3\n", dens);
u = water->intEnergy(T, dens);
printf("intEng (liquid) = %g J/kmol\n", u);
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(T, dens);
printf("S (liquid) = %g J/kmolK\n", s);
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(T, dens);
printf("h (liquid) = %g J/kmol\n", h);

View file

@ -1,7 +1,7 @@
psat(273.16) = 611.655
dens (liquid) = 999.793 kg m-3
intEng (liquid) = -1.91143e-08 J/kmol
S (liquid) = -8.47431e-11 J/kmolK
intEng (liquid) = ~0.0 J/kmol (fabs(u) < 5.0E-7)
S (liquid) = ~0.0 J/kmolK (fabs(s) < 5.0E-9)
h (liquid) = 11.0214 J/kmol
h (liquid) = 0.611782 J/kg
g (liquid) = 11.0214 J/kmol
@ -16,4 +16,4 @@ g (gas) = 11.0214 J/kmol
cv (gas) = 25552.6 J/kmolK
cp (gas) = 33947.1 J/kmolK
Delta g = 4.13909e-06 J/kmol
Delta g = ~0.0 J/kmol ( < 1.0E-5)

View file

@ -1,5 +1,6 @@
#include "stdio.h"
#include "math.h"
#include "WaterPropsIAPWS.h"
#include <new>
using namespace std;
@ -24,10 +25,18 @@ int main () {
printf("dens (liquid) = %g kg m-3\n", dens);
u = water->intEnergy(T, dens);
printf("intEng (liquid) = %g J/kmol\n", u);
if (fabs(u) < 5.0E-7) {
printf("intEng (liquid) = ~0.0 J/kmol (fabs(u) < 5.0E-7)\n");
} else {
printf("intEng (liquid) = %g J/kmol\n", u);
}
s = water->entropy(T, dens);
printf("S (liquid) = %g J/kmolK\n", s);
if (fabs(s) < 5.0E-9) {
printf("S (liquid) = ~0.0 J/kmolK (fabs(s) < 5.0E-9)\n");
} else {
printf("S (liquid) = %g J/kmolK\n", s);
}
h = water->enthalpy(T, dens);
printf("h (liquid) = %g J/kmol\n", h);
@ -69,9 +78,12 @@ int main () {
printf("cp (gas) = %g J/kmolK\n", cp);
printf("\n");
printf("Delta g = %g J/kmol\n", g_liq - g_gas);
double deltaG = g_liq - g_gas;
if (fabs(deltaG) < 1.0E-5) {
printf("Delta g = ~0.0 J/kmol ( < 1.0E-5)\n");
} else {
printf("Delta g = %g J/kmol\n", g_liq - g_gas);
}
delete water;
return 0;
}

View file

@ -20,7 +20,7 @@ Liquid 1bar or psat Standard State
T press psat Cp0 S0 -(G0-H298)/T H0-H298
(K) (bar) (bar) (J/molK) (J/molK) (J/molK) (kJ/mol)
273.19 1 0.00612989 76.0121 63.3157 70.2194 -1.88603
298.15 1 0.0316993 75.3276 69.9224 69.9224 2.38419e-13
298.15 1 0.0316993 75.3276 69.9224 69.9224 0
300 1 0.0353681 75.3153 70.3884 69.9239 0.139344
373.15 1.01621 1.01418 75.9465 86.857 71.6855 5.66125
400 2.46261 2.45769 76.6642 92.1544 72.8766 7.71115

View file

@ -13,6 +13,14 @@
using namespace std;
using namespace Cantera;
double tvalue(double val, double atol = 1.0E-9) {
double rval = val;
if (fabs(val) < atol) {
rval = 0.0;
}
return rval;
}
int main () {
double dens, u, s, h, cv, cp, pres;
@ -62,7 +70,7 @@ int main () {
temp = T[i];
w->setState_TP(temp, presLow);
h = w->enthalpy_mole();
delh0 = h - h298;
delh0 = tvalue(h - h298, 1.0E-6);
g = w->gibbs_mole();
delg0 = (g - h298)/temp + GasConstant * log(oneBar/presLow);
Cp0 = w->cp_mole();
@ -104,7 +112,7 @@ int main () {
}
w->setState_TP(temp, press);
h = w->enthalpy_mole();
delh0 = h - h298l;
delh0 = tvalue(h - h298l, 1.0E-6);
g = w->gibbs_mole();
delg0 = (g - h298l)/temp;
Cp0 = w->cp_mole();

View file

@ -22,7 +22,7 @@ Liquid 1bar or psat Standard State
T press psat Cp0 S0 -(G0-H298)/T H0-H298
(K) (bar) (bar) (J/molK) (J/molK) (J/molK) (kJ/mol)
273.19 1 0.00612989 76.0121 63.3157 70.2194 -1.88603
298.15 1 0.0316993 75.3276 69.9224 69.9224 2.38419e-13
298.15 1 0.0316993 75.3276 69.9224 69.9224 0
300 1 0.0353681 75.3153 70.3884 69.9239 0.139344
373.15 1.01621 1.01418 75.9465 86.857 71.6855 5.66125
400 2.46261 2.45769 76.6642 92.1544 72.8766 7.71115

View file

@ -2,10 +2,22 @@
* $Id$
*/
#include "stdio.h"
#include "math.h"
#include "WaterTP.h"
#include <new>
using namespace std;
double tvalue(double val, double atol = 1.0E-9) {
double rval = val;
if (fabs(val) < atol) {
rval = 0.0;
}
return rval;
}
int main () {
double dens, u, s, h, cv, cp, pres;
@ -54,7 +66,7 @@ int main () {
temp = T[i];
w->setState_TP(temp, presLow);
h = w->enthalpy_mole();
delh0 = h - h298;
delh0 = tvalue(h - h298, 1.0E-6);
g = w->gibbs_mole();
delg0 = (g - h298)/temp + GasConstant * log(oneBar/presLow);
Cp0 = w->cp_mole();
@ -96,7 +108,7 @@ int main () {
}
w->setState_TP(temp, press);
h = w->enthalpy_mole();
delh0 = h - h298l;
delh0 = tvalue(h - h298l, 1.0E-6);
g = w->gibbs_mole();
delg0 = (g - h298l)/temp;
Cp0 = w->cp_mole();