69 Scalar Vm = params.molarVolume(phaseIdx);
72 Scalar bi_b = params.bPure(phaseIdx, compIdx) / params.b(phaseIdx);
76 Scalar p = fs.pressure(phaseIdx);
80 Scalar Astar = params.a(phaseIdx)*p/(RT*RT);
81 Scalar Bstar = params.b(phaseIdx)*p/(RT);
84 Scalar sumMoleFractions = 0.0;
85 for (
int compJIdx = 0; compJIdx < numComponents; ++compJIdx)
86 sumMoleFractions += fs.moleFraction(phaseIdx, compJIdx);
89 Scalar deltai = 2*sqrt(params.aPure(phaseIdx, compIdx))/params.a(phaseIdx);
91 for (
int compJIdx = 0; compJIdx < numComponents; ++compJIdx) {
93 fs.moleFraction(phaseIdx, compJIdx)
95 * sqrt(params.aPure(phaseIdx, compJIdx))
96 * (1.0 - StaticParameters::interactionCoefficient(compIdx, compJIdx));
101 (2*Z + Bstar*(u + sqrt(u*u - 4*w))) /
102 (2*Z + Bstar*(u - sqrt(u*u - 4*w)));
103 Scalar expo = Astar/(Bstar*sqrt(u*u - 4*w))*(bi_b - deltai);
110 exp(bi_b*(Z - 1))/max(1e-9, Z - Bstar) *
120 fugCoeff = min(1e10, fugCoeff);
125 fugCoeff = max(1e-10, fugCoeff);
128 if (!isfinite(fugCoeff)) {
129 std::cout <<
"Non finite phi: " << fugCoeff <<
"\n";