96static void Alpha0Detail(
const double T,
const double D,
const std::vector<double> &x,
double a0[3]);
97static void AlpharDetail(
const int itau,
const int idel,
const double T,
const double D,
double ar[4][4]);
142inline double sq(
double x) {
return x * x; }
172 for (std::size_t i = 1; i <=
NcDetail; ++i)
196void PressureDetail(
const double T,
const double D,
const std::vector<double> &x,
double &P,
double &Z)
216 double ar[3 + 1][3 + 1];
219 Z = 1 + ar[0][1] /
RDetail / T;
246void DensityDetail(
const double T,
const double P,
const std::vector<double> &x,
double &D,
int &ierr, std::string &herr)
267 double plog, vlog, P2, Z, dpdlv, vdiff, tolr;
287 for (
int it = 1; it <= 20; ++it)
289 if (vlog < -7 || vlog > 100)
292 herr =
"Calculation failed to converge in DETAIL method, ideal gas density returned.";
308 vdiff = (log(P2) - plog) * P2 / dpdlv;
310 if (std::abs(vdiff) < tolr)
318 herr =
"Calculation failed to converge in DETAIL method, ideal gas density returned.";
350void PropertiesDetail(
const double T,
const double D,
const std::vector<double> &x,
double &P,
double &Z,
double &dPdD,
double &d2PdD2,
double &d2PdTD,
double &dPdT,
double &U,
double &H,
double &S,
double &Cv,
double &Cp,
double &W,
double &G,
double &JT,
double &Kappa,
double &Cf)
381 double a0[2 + 1], ar[3 + 1][3 + 1], Mm, A, R, RT;
394 Z = 1 + ar[0][1] / RT;
396 dPdD = RT + 2 * ar[0][1] + ar[0][2];
397 dPdT = D * R + D * ar[1][1];
398 A = a0[0] + ar[0][0];
399 S = -a0[1] - ar[1][0];
401 Cv = -(a0[2] + ar[2][0]);
406 Cp = Cv + T *
sq(dPdT / D) / dPdD;
407 d2PdD2 = (2 * ar[0][1] + 4 * ar[0][2] + ar[0][3]) / D;
408 JT = (T / D * dPdT / dPdD - 1) / Cp / D;
418 W = 1000 * Cp / Cv * dPdD / Mm;
424 Kappa = W * W * Mm / (RT * 1000 * Z);
425 Cf = sqrt(Kappa * pow( (2 / (Kappa + 1)), ((Kappa + 1) / (Kappa - 1))));
437 double G, Q, F, U, Q2, xij, xi2;
442 for (std::size_t i = 1; i <=
NcDetail; ++i)
444 if (std::abs(x[i] -
xold[i]) > 0.0000001)
460 for (
int n = 1; n <= 18; ++n)
466 for (std::size_t i = 1; i <=
NcDetail; ++i)
476 for (
int n = 1; n <= 18; ++n)
486 for (std::size_t i = 1; i <=
NcDetail - 1; ++i)
490 for (std::size_t j = i + 1; j <=
NcDetail; ++j)
494 xij = 2 * x[i] * x[j];
496 U = U + xij *
Uij5[i][j];
497 G = G + xij *
Gij5[i][j];
498 for (
int n = 1; n <= 18; ++n)
511 for (
int n = 13; n <= 58; ++n)
513 Csn[n] =
an[n] * pow(U,
un[n]);
550static void Alpha0Detail(
const double T,
const double D,
const std::vector<double> &x,
double a0[3])
567 double LogT, LogD, LogHyp, th0T, LogxD;
568 double SumHyp0, SumHyp1, SumHyp2;
569 double em, ep, hcn, hsn;
583 for (std::size_t i = 1; i <=
NcDetail; ++i)
587 LogxD = LogD + log(x[i]);
591 for (
int j = 4; j <= 7; ++j)
595 th0T =
th0i[i][j] / T;
600 if (j == 4 || j == 6)
602 LogHyp = log(std::abs(hsn));
603 SumHyp0 +=
n0i[i][j] * LogHyp;
604 SumHyp1 +=
n0i[i][j] * (LogHyp - th0T * hcn / hsn);
605 SumHyp2 +=
n0i[i][j] *
sq(th0T / hsn);
609 LogHyp = log(std::abs(hcn));
610 SumHyp0 += -
n0i[i][j] * LogHyp;
611 SumHyp1 += -
n0i[i][j] * (LogHyp - th0T * hsn / hcn);
612 SumHyp2 += +
n0i[i][j] *
sq(th0T / hcn);
616 a0[0] += x[i] * (LogxD +
n0i[i][1] +
n0i[i][2] / T -
n0i[i][3] * LogT + SumHyp0);
617 a0[1] += x[i] * (LogxD +
n0i[i][1] -
n0i[i][3] * (1 + LogT) + SumHyp1);
618 a0[2] += -x[i] * (
n0i[i][3] + SumHyp2);
649static void AlpharDetail(
const int itau,
const int idel,
const double T,
const double D,
double ar[4][4])
673 double ckd, bkd, Dred;
674 double Sum, s0, s1, s2, s3, RT;
675 double Sum0[
NTerms + 1], SumB[
NTerms + 1], Dknn[9 + 1], Expn[4 + 1];
679 for (
int i = 0; i <= 3; ++i)
681 for (
int j = 0; j <= 3; ++j)
686 if (std::abs(T -
Told) > 0.0000001)
688 for (
int n = 1; n <= 58; ++n)
690 Tun[n] = pow(T, -
un[n]);
698 for (
int n = 1; n <= 9; ++n)
700 Dknn[n] = Dred * Dknn[n - 1];
703 for (
int n = 1; n <= 4; ++n)
705 Expn[n] = exp(-Dknn[n]);
709 for (
int n = 1; n <= 58; ++n)
713 CoefT2[n] = CoefT1[n] *
un[n];
722 Sum += -
Csn[n] * Dred;
724 SumB[n] = Sum *
Tun[n];
729 Sum0[n] =
Csn[n] * Dknn[
bn[n]] *
Tun[n] * Expn[
kn[n]];
731 bkd =
bn[n] -
kn[n] * Dknn[
kn[n]];
732 ckd =
kn[n] *
kn[n] * Dknn[
kn[n]];
734 CoefD2[n] = bkd * (bkd - 1) - ckd;
735 CoefD3[n] = (bkd - 2) * CoefD2[n] + ckd * (1 -
kn[n] - 2 * bkd);
745 for (
int n = 1; n <= 58; ++n)
748 s0 = Sum0[n] + SumB[n];
749 s1 = Sum0[n] * CoefD1[n] + SumB[n];
750 s2 = Sum0[n] * CoefD2[n];
751 s3 = Sum0[n] * CoefD3[n];
752 ar[0][0] = ar[0][0] + RT * s0;
753 ar[0][1] = ar[0][1] + RT * s1;
754 ar[0][2] = ar[0][2] + RT * s2;
755 ar[0][3] = ar[0][3] + RT * s3;
759 ar[1][0] = ar[1][0] - CoefT1[n] * s0;
760 ar[1][1] = ar[1][1] - CoefT1[n] * s1;
761 ar[2][0] = ar[2][0] + CoefT2[n] * s0;
843 for (
int i = 1; i <=
NTerms; ++i)
856 for (
int i = 1; i <=
MaxFlds; ++i)
866 for (
int j = 1; j <=
MaxFlds; ++j)
887 an[12] = -0.78665925;
888 an[13] = 0.00000000229129;
891 an[16] = -0.04408159;
892 an[17] = -0.003433888;
896 an[21] = -0.001600573;
899 an[24] = -0.06689957;
902 an[27] = -0.002860589;
903 an[28] = -0.008098836;
905 an[30] = 0.007224479;
908 an[33] = -0.07931491;
910 an[35] = -5.99905E-17;
913 an[38] = -0.007022847;
920 an[45] = -0.005399808;
923 an[48] = 0.003733797;
925 an[50] = 0.002168144;
927 an[52] = 0.000205518;
928 an[53] = 0.009776195;
929 an[54] = -0.02048708;
931 an[56] = 0.006862415;
932 an[57] = -0.001226752;
933 an[58] = 0.002850908;
1137 Ei[10] = 402.636293;
1139 Ei[12] = 450.325022;
1140 Ei[13] = 470.840891;
1141 Ei[14] = 489.558373;
1203 Eij[1][2] = 0.97164;
1204 Eij[1][3] = 0.960644;
1205 Eij[1][5] = 0.994635;
1206 Eij[1][6] = 1.01953;
1207 Eij[1][7] = 0.989844;
1208 Eij[1][8] = 1.00235;
1209 Eij[1][9] = 0.999268;
1210 Eij[1][10] = 1.107274;
1211 Eij[1][11] = 0.88088;
1212 Eij[1][12] = 0.880973;
1213 Eij[1][13] = 0.881067;
1214 Eij[1][14] = 0.881161;
1215 Eij[1][15] = 1.17052;
1216 Eij[1][17] = 0.990126;
1217 Eij[1][18] = 0.708218;
1218 Eij[1][19] = 0.931484;
1219 Eij[2][3] = 1.02274;
1220 Eij[2][4] = 0.97012;
1221 Eij[2][5] = 0.945939;
1222 Eij[2][6] = 0.946914;
1223 Eij[2][7] = 0.973384;
1224 Eij[2][8] = 0.95934;
1225 Eij[2][9] = 0.94552;
1226 Eij[2][15] = 1.08632;
1228 Eij[2][17] = 1.00571;
1229 Eij[2][18] = 0.746954;
1230 Eij[2][19] = 0.902271;
1231 Eij[3][4] = 0.925053;
1232 Eij[3][5] = 0.960237;
1233 Eij[3][6] = 0.906849;
1234 Eij[3][7] = 0.897362;
1235 Eij[3][8] = 0.726255;
1236 Eij[3][9] = 0.859764;
1237 Eij[3][10] = 0.855134;
1238 Eij[3][11] = 0.831229;
1239 Eij[3][12] = 0.80831;
1240 Eij[3][13] = 0.786323;
1241 Eij[3][14] = 0.765171;
1242 Eij[3][15] = 1.28179;
1244 Eij[3][18] = 0.849408;
1245 Eij[3][19] = 0.955052;
1246 Eij[4][5] = 1.02256;
1247 Eij[4][7] = 1.01306;
1248 Eij[4][9] = 1.00532;
1249 Eij[4][15] = 1.16446;
1250 Eij[4][18] = 0.693168;
1251 Eij[4][19] = 0.946871;
1253 Eij[5][15] = 1.034787;
1256 Eij[10][19] = 1.008692;
1257 Eij[11][19] = 1.010126;
1258 Eij[12][19] = 1.011501;
1259 Eij[13][19] = 1.012821;
1260 Eij[14][19] = 1.014089;
1264 Uij[1][2] = 0.886106;
1265 Uij[1][3] = 0.963827;
1266 Uij[1][5] = 0.990877;
1267 Uij[1][7] = 0.992291;
1268 Uij[1][9] = 1.00367;
1269 Uij[1][10] = 1.302576;
1270 Uij[1][11] = 1.191904;
1271 Uij[1][12] = 1.205769;
1272 Uij[1][13] = 1.219634;
1273 Uij[1][14] = 1.233498;
1274 Uij[1][15] = 1.15639;
1275 Uij[1][19] = 0.736833;
1276 Uij[2][3] = 0.835058;
1277 Uij[2][4] = 0.816431;
1278 Uij[2][5] = 0.915502;
1279 Uij[2][7] = 0.993556;
1280 Uij[2][15] = 0.408838;
1281 Uij[2][19] = 0.993476;
1282 Uij[3][4] = 0.96987;
1283 Uij[3][10] = 1.066638;
1284 Uij[3][11] = 1.077634;
1285 Uij[3][12] = 1.088178;
1286 Uij[3][13] = 1.098291;
1287 Uij[3][14] = 1.108021;
1289 Uij[3][19] = 1.04529;
1290 Uij[4][5] = 1.065173;
1295 Uij[4][15] = 1.61666;
1296 Uij[4][19] = 0.971926;
1297 Uij[10][19] = 1.028973;
1298 Uij[11][19] = 1.033754;
1299 Uij[12][19] = 1.038338;
1300 Uij[13][19] = 1.042735;
1301 Uij[14][19] = 1.046966;
1304 Kij[1][2] = 1.00363;
1305 Kij[1][3] = 0.995933;
1306 Kij[1][5] = 1.007619;
1307 Kij[1][7] = 0.997596;
1308 Kij[1][9] = 1.002529;
1309 Kij[1][10] = 0.982962;
1310 Kij[1][11] = 0.983565;
1311 Kij[1][12] = 0.982707;
1312 Kij[1][13] = 0.981849;
1313 Kij[1][14] = 0.980991;
1314 Kij[1][15] = 1.02326;
1315 Kij[1][19] = 1.00008;
1316 Kij[2][3] = 0.982361;
1317 Kij[2][4] = 1.00796;
1318 Kij[2][15] = 1.03227;
1319 Kij[2][19] = 0.942596;
1320 Kij[3][4] = 1.00851;
1321 Kij[3][10] = 0.910183;
1322 Kij[3][11] = 0.895362;
1323 Kij[3][12] = 0.881152;
1324 Kij[3][13] = 0.86752;
1325 Kij[3][14] = 0.854406;
1326 Kij[3][19] = 1.00779;
1327 Kij[4][5] = 0.986893;
1328 Kij[4][15] = 1.02034;
1329 Kij[4][19] = 0.999969;
1330 Kij[10][19] = 0.96813;
1331 Kij[11][19] = 0.96287;
1332 Kij[12][19] = 0.957828;
1333 Kij[13][19] = 0.952441;
1334 Kij[14][19] = 0.948338;
1337 Gij[1][3] = 0.807653;
1338 Gij[1][15] = 1.95731;
1339 Gij[2][3] = 0.982746;
1340 Gij[3][4] = 0.370296;
1341 Gij[3][18] = 1.67309;
1344 n0i[1][3] = 4.00088;
1345 n0i[1][4] = 0.76315;
1347 n0i[1][6] = 8.74432;
1348 n0i[1][7] = -4.46921;
1349 n0i[1][1] = 29.83843397;
1350 n0i[1][2] = -15999.69151;
1351 n0i[2][3] = 3.50031;
1352 n0i[2][4] = 0.13732;
1353 n0i[2][5] = -0.1466;
1354 n0i[2][6] = 0.90066;
1356 n0i[2][1] = 17.56770785;
1357 n0i[2][2] = -2801.729072;
1358 n0i[3][3] = 3.50002;
1359 n0i[3][4] = 2.04452;
1360 n0i[3][5] = -1.06044;
1361 n0i[3][6] = 2.03366;
1362 n0i[3][7] = 0.01393;
1363 n0i[3][1] = 20.65844696;
1364 n0i[3][2] = -4902.171516;
1365 n0i[4][3] = 4.00263;
1366 n0i[4][4] = 4.33939;
1367 n0i[4][5] = 1.23722;
1368 n0i[4][6] = 13.1974;
1369 n0i[4][7] = -6.01989;
1370 n0i[4][1] = 36.73005938;
1371 n0i[4][2] = -23639.65301;
1372 n0i[5][3] = 4.02939;
1373 n0i[5][4] = 6.60569;
1375 n0i[5][6] = 19.1921;
1376 n0i[5][7] = -8.37267;
1377 n0i[5][1] = 44.70909619;
1378 n0i[5][2] = -31236.63551;
1379 n0i[6][3] = 4.06714;
1380 n0i[6][4] = 8.97575;
1381 n0i[6][5] = 5.25156;
1382 n0i[6][6] = 25.1423;
1383 n0i[6][7] = 16.1388;
1384 n0i[6][1] = 34.30180349;
1385 n0i[6][2] = -38525.50276;
1386 n0i[7][3] = 4.33944;
1387 n0i[7][4] = 9.44893;
1388 n0i[7][5] = 6.89406;
1389 n0i[7][6] = 24.4618;
1390 n0i[7][7] = 14.7824;
1391 n0i[7][1] = 36.53237783;
1392 n0i[7][2] = -38957.80933;
1394 n0i[8][4] = 11.7618;
1395 n0i[8][5] = 20.1101;
1396 n0i[8][6] = 33.1688;
1398 n0i[8][1] = 43.17218626;
1399 n0i[8][2] = -51198.30946;
1401 n0i[9][4] = 8.95043;
1403 n0i[9][6] = 33.4032;
1405 n0i[9][1] = 42.67837089;
1406 n0i[9][2] = -45215.83;
1408 n0i[10][4] = 11.6977;
1409 n0i[10][5] = 26.8142;
1410 n0i[10][6] = 38.6164;
1412 n0i[10][1] = 46.99717188;
1413 n0i[10][2] = -52746.83318;
1415 n0i[11][4] = 13.7266;
1416 n0i[11][5] = 30.4707;
1417 n0i[11][6] = 43.5561;
1419 n0i[11][1] = 52.07631631;
1420 n0i[11][2] = -57104.81056;
1422 n0i[12][4] = 15.6865;
1423 n0i[12][5] = 33.8029;
1424 n0i[12][6] = 48.1731;
1426 n0i[12][1] = 57.25830934;
1427 n0i[12][2] = -60546.76385;
1429 n0i[13][4] = 18.0241;
1430 n0i[13][5] = 38.1235;
1431 n0i[13][6] = 53.3415;
1433 n0i[13][1] = 62.09646901;
1434 n0i[13][2] = -66600.12837;
1436 n0i[14][4] = 21.0069;
1437 n0i[14][5] = 43.4931;
1438 n0i[14][6] = 58.3657;
1440 n0i[14][1] = 65.93909154;
1441 n0i[14][2] = -74131.45483;
1442 n0i[15][3] = 2.47906;
1443 n0i[15][4] = 0.95806;
1444 n0i[15][5] = 0.45444;
1445 n0i[15][6] = 1.56039;
1446 n0i[15][7] = -1.3756;
1447 n0i[15][1] = 13.07520288;
1448 n0i[15][2] = -5836.943696;
1449 n0i[16][3] = 3.50146;
1450 n0i[16][4] = 1.07558;
1451 n0i[16][5] = 1.01334;
1454 n0i[16][1] = 16.8017173;
1455 n0i[16][2] = -2318.32269;
1456 n0i[17][3] = 3.50055;
1457 n0i[17][4] = 1.02865;
1458 n0i[17][5] = 0.00493;
1461 n0i[17][1] = 17.45786899;
1462 n0i[17][2] = -2635.244116;
1463 n0i[18][3] = 4.00392;
1464 n0i[18][4] = 0.01059;
1465 n0i[18][5] = 0.98763;
1466 n0i[18][6] = 3.06904;
1468 n0i[18][1] = 21.57882705;
1469 n0i[18][2] = -7766.733078;
1471 n0i[19][4] = 3.11942;
1472 n0i[19][5] = 1.00243;
1475 n0i[19][1] = 21.5830944;
1476 n0i[19][2] = -6069.035869;
1482 n0i[20][1] = 10.04639507;
1483 n0i[20][2] = -745.375;
1489 n0i[21][1] = 10.04639507;
1490 n0i[21][2] = -745.375;
1491 th0i[1][4] = 820.659;
1492 th0i[1][5] = 178.41;
1493 th0i[1][6] = 1062.82;
1494 th0i[1][7] = 1090.53;
1495 th0i[2][4] = 662.738;
1496 th0i[2][5] = 680.562;
1497 th0i[2][6] = 1740.06;
1499 th0i[3][4] = 919.306;
1500 th0i[3][5] = 865.07;
1501 th0i[3][6] = 483.553;
1502 th0i[3][7] = 341.109;
1503 th0i[4][4] = 559.314;
1504 th0i[4][5] = 223.284;
1505 th0i[4][6] = 1031.38;
1506 th0i[4][7] = 1071.29;
1507 th0i[5][4] = 479.856;
1508 th0i[5][5] = 200.893;
1509 th0i[5][6] = 955.312;
1510 th0i[5][7] = 1027.29;
1511 th0i[6][4] = 438.27;
1512 th0i[6][5] = 198.018;
1513 th0i[6][6] = 1905.02;
1514 th0i[6][7] = 893.765;
1515 th0i[7][4] = 468.27;
1516 th0i[7][5] = 183.636;
1517 th0i[7][6] = 1914.1;
1518 th0i[7][7] = 903.185;
1519 th0i[8][4] = 292.503;
1520 th0i[8][5] = 910.237;
1521 th0i[8][6] = 1919.37;
1523 th0i[9][4] = 178.67;
1524 th0i[9][5] = 840.538;
1525 th0i[9][6] = 1774.25;
1527 th0i[10][4] = 182.326;
1528 th0i[10][5] = 859.207;
1529 th0i[10][6] = 1826.59;
1531 th0i[11][4] = 169.789;
1532 th0i[11][5] = 836.195;
1533 th0i[11][6] = 1760.46;
1535 th0i[12][4] = 158.922;
1536 th0i[12][5] = 815.064;
1537 th0i[12][6] = 1693.07;
1539 th0i[13][4] = 156.854;
1540 th0i[13][5] = 814.882;
1541 th0i[13][6] = 1693.79;
1543 th0i[14][4] = 164.947;
1544 th0i[14][5] = 836.264;
1545 th0i[14][6] = 1750.24;
1547 th0i[15][4] = 228.734;
1548 th0i[15][5] = 326.843;
1549 th0i[15][6] = 1651.71;
1550 th0i[15][7] = 1671.69;
1551 th0i[16][4] = 2235.71;
1552 th0i[16][5] = 1116.69;
1555 th0i[17][4] = 1550.45;
1556 th0i[17][5] = 704.525;
1559 th0i[18][4] = 268.795;
1560 th0i[18][5] = 1141.41;
1561 th0i[18][6] = 2507.37;
1563 th0i[19][4] = 1833.63;
1564 th0i[19][5] = 847.181;
1577 for (
int i = 1; i <=
MaxFlds; ++i)
1579 Ki25[i] = pow(Ki[i], 2.5);
1580 Ei25[i] = pow(Ei[i], 2.5);
1582 for (
int i = 1; i <=
MaxFlds; ++i)
1584 for (
int j = i; j <=
MaxFlds; ++j)
1586 for (
int n = 1; n <= 18; ++n)
1591 Bsnij = Gij[i][j] * (
Gi[i] +
Gi[j]) / 2;
1595 Bsnij = Bsnij *
Qi[i] *
Qi[j];
1599 Bsnij = Bsnij *
Fi[i] *
Fi[j];
1603 Bsnij = Bsnij * Si[i] * Si[j];
1607 Bsnij = Bsnij * Wi[i] * Wi[j];
1609 Bsnij2[i][j][n] =
an[n] * pow(Eij[i][j] * sqrt(Ei[i] * Ei[j]),
un[n]) * pow(Ki[i] * Ki[j], 1.5) * Bsnij;
1611 Kij5[i][j] = (pow(Kij[i][j], 5) - 1) *
Ki25[i] *
Ki25[j];
1612 Uij5[i][j] = (pow(Uij[i][j], 5) - 1) *
Ei25[i] *
Ei25[j];
1613 Gij5[i][j] = (Gij[i][j] - 1) * (
Gi[i] +
Gi[j]) / 2;
1617 d0 = 101.325 /
RDetail / 298.15;
1618 for (
int i = 1; i <=
MaxFlds; ++i)
1620 n0i[i][3] =
n0i[i][3] - 1;
1621 n0i[i][1] =
n0i[i][1] - log(d0);
1646 double _x[] = {0.77824, 0.02, 0.06, 0.08, 0.03, 0.0015, 0.003, 0.0005, 0.00165, 0.00215, 0.00088, 0.00024, 0.00015, 0.00009, 0.004, 0.005, 0.002, 0.0001, 0.0025, 0.007, 0.001};
1648 x.insert(x.begin(), 0.0);
1657 double T = 400, P = 50000, D = 1e10;
1661 double Z, dPdD, dPdD2, d2PdTD, dPdT, U, H, S, Cv, Cp, W, G, JT, Kappa, Cf;
1662 PropertiesDetail(T, D, x, P, Z, dPdD, dPdD2, d2PdTD, dPdT, U, H, S, Cv, Cp, W, G, JT, Kappa, Cf);
1664 printf(
"Inputs-----\n");
1665 printf(
"Temperature [K]: 400.0000000000000 != %0.16g\n", T);
1666 printf(
"Pressure [kPa]: 50000.00000000000 != %0.16g\n", P);
1667 printf(
"Outputs-----\n");
1668 printf(
"Molar mass [g/mol]: 20.54333051000000 != %0.16g\n", mm);
1669 printf(
"Molar density [mol/l]: 12.80792403648801 != %0.16g\n", D);
1670 printf(
"Pressure [kPa]: 50000.00000000004 != %0.16g\n", P);
1671 printf(
"Compressibility factor: 1.173801364147326 != %0.16g\n", Z);
1672 printf(
"d(P)/d(rho) [kPa/(mol/l)]: 6971.387690924090 != %0.16g\n", dPdD);
1673 printf(
"d^2(P)/d(rho)^2 [kPa/(mol/l)^2]: 1118.803636639520 != %0.16g\n", dPdD2);
1674 printf(
"d(P)/d(T) [kPa/K]: 235.6641493068212 != %0.16g\n", dPdT);
1675 printf(
"Energy [J/mol]: -2739.134175817231 != %0.16g\n", U);
1676 printf(
"Enthalpy [J/mol]: 1164.699096269404 != %0.16g\n", H);
1677 printf(
"Entropy [J/mol-K]: -38.54882684677111 != %0.16g\n", S);
1678 printf(
"Isochoric heat capacity [J/mol-K]: 39.12076154430332 != %0.16g\n", Cv);
1679 printf(
"Isobaric heat capacity [J/mol-K]: 58.54617672380667 != %0.16g\n", Cp);
1680 printf(
"Speed of sound [m/s]: 712.6393684057903 != %0.16g\n", W);
1681 printf(
"Gibbs energy [J/mol]: 16584.22983497785 != %0.16g\n", G);
1682 printf(
"Joule-Thomson coefficient [K/kPa]: 7.432969304794577E-05 != %0.16g\n", JT);
1683 printf(
"Isentropic exponent: 2.672509225184606 != %0.16g\n", Kappa);
1684 printf(
"Critical flow coefficient: 0.000000000000000 != %0.16g\n", Cf);
static double Qi[MaxFlds+1]
static double Ki25[MaxFlds+1]
static double an[NTerms+1]
static double Uij5[MaxFlds+1][MaxFlds+1]
void PressureDetail(const double T, const double D, const std::vector< double > &x, double &P, double &Z)
Calculates pressure and compressibility factor as a function of temperature and density.
static double th0i[MaxFlds+1][7+1]
static double Bsnij2[MaxFlds+1][MaxFlds+1][18+1]
static double Gi[MaxFlds+1]
static double Kij5[MaxFlds+1][MaxFlds+1]
static double Ei25[MaxFlds+1]
void MolarMassDetail(const std::vector< double > &x, double &Mm)
Calculate molar mass of a mixture based on composition.
static void Alpha0Detail(const double T, const double D, const std::vector< double > &x, double a0[3])
Calculates the ideal gas Helmholtz energy and its derivatives with respect to T and D.
void PropertiesDetail(const double T, const double D, const std::vector< double > &x, double &P, double &Z, double &dPdD, double &d2PdD2, double &d2PdTD, double &dPdT, double &U, double &H, double &S, double &Cv, double &Cp, double &W, double &G, double &JT, double &Kappa, double &Cf)
Calculates thermodynamic properties as a function of temperature and density.
void SetupDetail()
The following routine must be called once before any other routine.
static double Tun[NTerms+1]
static double xold[MaxFlds+1]
static double Fi[MaxFlds+1]
static double un[NTerms+1]
static const double epsilon
static void AlpharDetail(const int itau, const int idel, const double T, const double D, double ar[4][4])
Calculates derivatives of the residual Helmholtz energy with respect to temperature and density.
static double Gij5[MaxFlds+1][MaxFlds+1]
static double MMiDetail[MaxFlds+1]
static double Csn[NTerms+1]
static const int NcDetail
static double n0i[MaxFlds+1][7+1]
void DensityDetail(const double T, const double P, const std::vector< double > &x, double &D, int &ierr, std::string &herr)
Calculates density as a function of temperature and pressure using an iterative method.
static void xTermsDetail(const std::vector< double > &x)