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)