CHE-320 · Lesson 9 of 12 · 23 min
High-pressure equilibrium and flash calculations
Two questions land on Theo's desk in the same week. The beer column team wants to know what happens if the fermented beer is preheated to about 90 °C and let down into a flash drum before it enters the column: how much vapor forms, how much ethanol goes with it, and whether the carbon dioxide still dissolved in the beer comes off first. And Lakeshore Gas wants a number for the water content of its carbon dioxide after the 20 bar knockout drum, to size its dryer. The first is a flash calculation at low pressure, the second a phase equilibrium at a pressure where the vapor is far from ideal. Both use the tools built so far.
The flash problem
A flash is a single equilibrium stage: a feed of known composition \(z_i\) is brought to a set temperature and pressure, it separates into a vapor \(V\) and a liquid \(L\), and the two leave in equilibrium. The unknowns are the vapor fraction \(V/F\) and the compositions \(x_i\) and \(y_i\). Material balances give \(z_i = (1 - V/F)\,x_i + (V/F)\,y_i\), and equilibrium gives \(y_i = K_ix_i\). Combining them,
The mole fractions must each sum to 1, and the difference between the two sums gives one equation in one unknown, due to Rachford and Rice (1952):
The function falls steadily as \(V/F\) rises, so it has exactly one root between 0 and 1 when the feed is two-phase. Its sign at the ends tells the engineer which case applies: if \(f(0) < 0\), the feed is below its bubble point and stays liquid; if \(f(1) > 0\), it is above its dew point and is all vapor. That monotonic behavior is why Rachford-Rice is the standard inner loop in every process simulator: it never fails to find the right root, unlike a direct solution of the separate sums.
K-values that depend on composition
With Raoult's law, the K-values depend only on temperature and pressure, and Rachford-Rice is solved once. With activity coefficients, \(K_i = \gamma_iP_i^{\text{sat}}/P\) depends on the liquid composition, which is one of the unknowns. The usual remedy is successive substitution: guess the liquid composition (the feed is a good start), compute the K-values, solve Rachford-Rice for \(V/F\), compute new liquid compositions, and repeat until nothing changes. For carbon dioxide, which is far above its critical temperature, the K-value comes from Henry's law, \(K = \mathcal{H}/P\). The code does this for the beer, which Theo models as 0.05 mol % carbon dioxide, 4.5 mol % ethanol and the rest water, an illustrative composition close to that of a typical fermented beer.
# Flash calculations: Rachford-Rice for a beer preheat flash, and water in compressed CO2 (gamma-phi with fugacity)
import math
ant = {"e": (8.20417, 1642.89, 230.300), "w": (8.07131, 1730.63, 233.426)}
def psat(c, T):
A, B, C = ant[c]; return 10 ** (A - B / (T + C)) * 0.133322
A12, A21 = 1.672, 0.9304
def gam(xe, xw):
s = xe + xw; x = xe / s; x2 = 1 - x; d = A12 * x + A21 * x2
return math.exp(A12 * (A21 * x2 / d) ** 2), math.exp(A21 * (A12 * x / d) ** 2)
def Hco2(T): # Henry constant of CO2 in water, kPa per mole fraction (approximate fit)
return 1.67e5 * math.exp(2400 * (1 / 298.15 - 1 / (T + 273.15)))
z = {"CO2": 0.0005, "ethanol": 0.0450, "water": 0.9545} # beer from the beer well (illustrative)
P = 101.325
def rachford_rice(z, K):
f = lambda V: sum(z[c] * (K[c] - 1) / (1 + V * (K[c] - 1)) for c in z)
lo, hi = 0.0, 1.0
if f(0) < 0: return 0.0
if f(1) > 0: return 1.0
for _ in range(80):
V = (lo + hi) / 2; lo, hi = (V, hi) if f(V) > 0 else (lo, V)
return V
for T in (88.0, 92.0, 95.0):
x = dict(z)
for _ in range(50): # successive substitution: K depends on liquid composition
ge, gw = gam(x["ethanol"], x["water"])
K = {"CO2": Hco2(T) / P, "ethanol": ge * psat("e", T) / P, "water": gw * psat("w", T) / P}
V = rachford_rice(z, K)
x = {c: z[c] / (1 + V * (K[c] - 1)) for c in z}
s = sum(x.values()); x = {c: v / s for c, v in x.items()}
y = {c: K[c] * x[c] for c in z}
print(f"T = {T:.0f} C: V/F = {V:.4f}; K(ethanol) = {K['ethanol']:.2f}; vapor ethanol {y['ethanol']:.3f}, "
f"CO2 {y['CO2']:.3f}; CO2 left in liquid {x['CO2'] * 1e6:.1f} ppm (mol)")
# Water content of CO2 leaving a knockout drum at 35 C and 20 bar, in equilibrium with liquid water
T = 35.0; Pk = 2000.0 # C, kPa
Ps = psat("w", T)
poy = math.exp(18.1e-6 * (Pk - Ps) * 1000 / (8.314 * (T + 273.15)))
phi_v = 0.81 # water fugacity coefficient in the CO2-rich gas (lesson 4)
y_ideal = Ps / Pk
y_real = Ps * poy / (phi_v * Pk)
print(f"water Psat at 35 C = {Ps:.2f} kPa")
print(f"y(water) ideal = {y_ideal * 1e6:.0f} ppm, with Poynting {poy:.4f} and phi {phi_v} = {y_real * 1e6:.0f} ppm")
print(f"water in 113 mol/s of CO2: {y_real / (1 - y_real) * 113 * 18.02 * 3.6:.1f} kg/h to remove in the dryer")T = 88 C: V/F = 0.0041; K(ethanol) = 6.04; vapor ethanol 0.266, CO2 0.118; CO2 left in liquid 17.6 ppm (mol) T = 92 C: V/F = 0.0373; K(ethanol) = 7.29; vapor ethanol 0.266, CO2 0.013; CO2 left in liquid 1.8 ppm (mol) T = 95 C: V/F = 0.1565; K(ethanol) = 8.88; vapor ethanol 0.179, CO2 0.003; CO2 left in liquid 0.4 ppm (mol) water Psat at 35 C = 5.61 kPa y(water) ideal = 2805 ppm, with Poynting 1.0142 and phi 0.81 = 3511 ppm water in 113 mol/s of CO2: 25.8 kg/h to remove in the dryer
The beer flash
The results show how sensitive a flash is near the bubble point. Without its carbon dioxide, this beer would start to boil at about 91.2 °C. The dissolved gas changes the picture at lower temperatures: at 88 °C a small vapor fraction, 0.4 %, forms anyway, and it is 12 % carbon dioxide, because the gas is far less soluble in hot beer than in beer at fermenter temperature. Above the bubble point the vapor grows quickly: 3.7 % of the feed at 92 °C and 16 % at 95 °C. The ethanol K-value is 6 to 9, so the vapor is rich in ethanol, 18 to 27 mol %, which is why a preheat flash can take some load off the beer column. Carbon dioxide, with a Henry's law K-value of several thousand at these temperatures, comes off almost completely in the first few percent of vapor: at 92 °C the liquid keeps less than 2 ppm. That matters because dissolved carbon dioxide in the column feed disturbs the column pressure control and adds to the vent load.
Worked problem
A two-component check on Rachford-Rice
Ignore the carbon dioxide and take \(z_{\text{EtOH}} = 0.045\) with fixed K-values of 7.3 for ethanol and 0.78 for water. Find \(V/F\).
Show solution
- \(f(V) = 0.045(6.3)/(1 + 6.3V) + 0.955(-0.22)/(1 - 0.22V)\).
- At \(V = 0\): \(0.284 - 0.210 = 0.074 > 0\), so the feed is above its bubble point.
- Setting \(f(V) = 0\) and solving gives \(V/F \approx 0.052\).
Answer: About 5 %. The full calculation gives 3.7 % at 92 °C because the liquid composition, and with it the K-values, changes as ethanol leaves.
Energy balance for an adiabatic flash
In the plant the flash would be adiabatic: the beer is heated before the valve, and the drum itself has no heat input. The temperature in the drum is then not set but found from the energy balance \(Fh_F = Vh_V + Lh_L\), which is solved together with Rachford-Rice in an outer loop. For the beer, about 40 kJ is needed for each mole of vapor formed, so vaporizing 3.7 % of the plant's beer, about 2,500 mol/s (it carries the 113 mol/s of ethanol that matches the vent's carbon dioxide), takes about 3.7 MW of preheat beyond the bubble point. Theo hands the beer column team the flash results as a function of temperature, and the duty follows directly.
High pressure: water in compressed carbon dioxide
At the Lakeshore Gas knockout drum, carbon dioxide at 20 bar and 35 °C is in contact with liquid water. The water content of the gas follows from equal fugacities of water in the two phases. The liquid is nearly pure water, saturated with dissolved carbon dioxide at only about 2 mol %, so to a first approximation \(x_w\gamma_w \approx 1\). The full gamma-phi equation then gives
Raoult's law would give \(y_w = P_w^{\text{sat}}/P = 5.61/2000 = 2805\) ppm. The corrections both raise this value. The Poynting factor adds 1.4 %. The fugacity coefficient of water in the carbon dioxide-rich gas, 0.81 from lesson 4, divides the result. Together they give about 3510 ppm, 25 % more than Raoult's law. For Lakeshore's flow of 113 mol/s, that is about 26 kg/h of water for the dryer to remove. Measured water contents of compressed carbon dioxide are, in fact, higher than ideal estimates by amounts of this size, and Lakeshore's vendor sizes dryers from measured solubility tables. Theo's calculation is a cross-check on the vendor's number, and it agrees within a few percent.
Worked problem
The ideal answer and the real answer
With \(P_w^{\text{sat}} = 5.61\) kPa, a Poynting factor of 1.014 and \(\hat{\phi}_w = 0.81\), find the water content of the gas at 20 bar.
Show solution
- Ideal: \(y_w = 5.61/2000 = 2.81\times10^{-3}\).
- Corrected: \(y_w = 5.61 \times 1.014/(0.81 \times 2000) = 3.51\times10^{-3}\).
Answer: The real gas holds about 25 % more water than the ideal estimate, an error a dryer designer cannot ignore.
Phi-phi and the critical region
At still higher pressures, such as the 80 to 150 bar of a carbon dioxide pipeline, the liquid also needs an equation of state, and the phi-phi form \(y_i\hat{\phi}_i^{\,\text{V}} = x_i\hat{\phi}_i^{\,\text{L}}\) is used with one cubic equation for both phases. Near the critical point of a mixture, vapor and liquid become identical, K-values approach 1 and calculations become hard to converge. Two phenomena appear that have no low-pressure counterpart: retrograde condensation, in which lowering the pressure on a gas makes liquid form, and the mixture critical locus, which can lie well above the critical points of the pure components. Natural gas processing deals with these daily, and so does the carbon dioxide industry, where small amounts of nitrogen, oxygen or water change the two-phase envelope significantly. CHE-350 and the petroleum courses take these further.
Theo also notes a limit of the beer calculation. The model treats the beer as three components, but real beer carries dissolved solids, glycerol, organic acids and fusel oils. The solids raise the boiling point slightly and the fusel oils, though present only at fractions of a percent, have large activity coefficients in water and concentrate in the first vapor. A more detailed model would add them as extra components with their own K-values, and the plant's beer column already has a side draw for fusel oil for exactly this reason.
Common mistakes
MistakeSolving the two sums \(\sum x_i = 1\) and \(\sum y_i = 1\) separately for \(V/F\).
InsteadUse Rachford-Rice, which is monotonic and has one root in the two-phase region.
MistakeUsing feed-composition K-values for a non-ideal liquid without iteration.
InsteadUpdate the K-values with the liquid composition until they converge.
MistakeUsing Raoult's law for water in compressed gas.
InsteadInclude the Poynting factor and the vapor fugacity coefficient; the error is about 25 % at 20 bar.
MistakeFixing the drum temperature for an adiabatic flash.
InsteadFind it from the energy balance together with the equilibrium.
Summary and key terms
- A flash is one equilibrium stage; the Rachford-Rice equation gives the vapor fraction.
- \(f(V/F)\) is monotonic; its signs at 0 and 1 show whether the feed is subcooled, two-phase or superheated.
- Composition-dependent K-values need successive substitution around Rachford-Rice.
- Preheated beer at 1 atm boils near 91 °C; its dissolved carbon dioxide leaves almost completely in the first vapor.
- Water in carbon dioxide at 20 bar and 35 °C is about 3500 ppm, 25 % above the Raoult's law estimate.
- At high pressure, phi-phi calculations with one equation of state describe both phases.
- Flash
- A single equilibrium stage in which a feed separates into vapor and liquid at a given T and P.
- Rachford-Rice equation
- The equation Σ z_i(K_i − 1)/[1 + V(K_i − 1)] = 0 for the vapor fraction of a flash.
- Successive substitution
- An iteration that updates composition-dependent K-values until they converge.
- Adiabatic flash
- A flash with no heat added, whose temperature follows from the energy balance.
- Retrograde condensation
- Formation of liquid when the pressure on a gas mixture is lowered near its critical region.
- Mixture critical point
- The condition at which the vapor and liquid of a mixture become identical.
Practice problems
Work each problem on paper first, then reveal the answer to check.
For \(z_1 = 0.5\), \(K_1 = 2\), \(K_2 = 0.5\), find \(V/F\).
Show answer
\(0.5(1)/(1 + V) + 0.5(-0.5)/(1 - 0.5V) = 0\) gives \(V/F = 0.5\).
If \(f(0) < 0\) for a feed, what is its state?
Show answer
Subcooled liquid: below its bubble point.
What is the ideal water content of a gas in contact with water at 35 °C and 10 bar?
Show answer
\(5.61/1000 = 5610\) ppm.
Why does carbon dioxide leave the beer so early in the flash?
Show answer
Its Henry's law K-value is in the thousands.
Estimate the duty to vaporize 2 % of a 600 mol/s feed at 40 kJ/mol.
Show answer
\(0.02 \times 600 \times 40 = 480\) kW.
What is retrograde condensation?
Show answer
Liquid forming when pressure is lowered on a gas mixture near its critical region.
Lesson quiz · 5 questions
Score 60% or more to complete this lesson.
Create a free account to save your progress, take quizzes and earn a certificate.