98 Scalar Vm = params.molarVolume(phaseIdx);
101 Scalar bi_b = params.bPure(phaseIdx, compIdx) / params.b(phaseIdx);
105 Scalar p = fs.pressure(phaseIdx);
109 Scalar Astar = params.a(phaseIdx)*p/(RT*RT);
110 Scalar Bstar = params.b(phaseIdx)*p/(RT);
113 Scalar sumMoleFractions = 0.0;
114 for (
int compJIdx = 0; compJIdx < numComponents; ++compJIdx)
115 sumMoleFractions += fs.moleFraction(phaseIdx, compJIdx);
118 Scalar deltai = 2*sqrt(params.aPure(phaseIdx, compIdx))/params.a(phaseIdx);
120 for (
int compJIdx = 0; compJIdx < numComponents; ++compJIdx) {
122 fs.moleFraction(phaseIdx, compJIdx)
124 * sqrt(params.aPure(phaseIdx, compJIdx))
125 * (1.0 - StaticParameters::interactionCoefficient(compIdx, compJIdx));
130 (2*Z + Bstar*(u + sqrt(u*u - 4*w))) /
131 (2*Z + Bstar*(u - sqrt(u*u - 4*w)));
132 Scalar expo = Astar/(Bstar*sqrt(u*u - 4*w))*(bi_b - deltai);
139 exp(bi_b*(Z - 1))/max(1e-9, Z - Bstar) *
149 fugCoeff = min(1e10, fugCoeff);
154 fugCoeff = max(1e-10, fugCoeff);
157 if (!isfinite(fugCoeff)) {
158 std::cout <<
"Non finite phi: " << fugCoeff <<
"\n";