A real flash chamber is not told its own saturation temperature — an operator sets a pressure with a vacuum pump, and the water finds its own boiling point at that pressure. This engine reproduces that: it computes the saturation vapor pressure of water from temperature with the Antoine equation, then numerically inverts it to recover Tsat from the pressure you dial in.
Antoine (1-100 °C, P in mmHg):
log10(P) = A - B / (C + T), A=8.07131, B=1730.63, C=233.426
T_sat = B / (A - log10(P_mmHg)) - C
Flash fraction: x = c_p(T_warm - T_sat) / h_fg(T_sat)
Turbine work: w_t = eta_t . h_fg(T_sat) . (T_sat - T_cond) / T_sat[K]
Turbine power: P_turbine = x . m_w . w_t
Net power: P_net = P_turbine - P_pump(m_w, T_warm - T_sat)
The chart below sweeps the full pressure range at the current Twarm, drawing the Tsat(P) curve the closed-form inversion produces — the same curve the flash fraction is read off. On load the engine also runs an independent bisection solver against the forward Antoine formula and checks it agrees with the closed-form inversion to within 10⁻⁶ °C (see the green badge above).
- x is small on purpose — with only a ~20 °C surface-to-deep gradient, real OTEC flash fractions sit around 0.5–1.5%; bubble/steam density in the animation is scaled up for visibility, but the flash-fraction readout is the exact computed value.
- Pressure, not Tsat, is the real control knob — a deeper vacuum (lower pressure) yields a lower Tsat, flashing more water, but it also shrinks (Tsat − Tcond), the turbine's driving temperature drop, while pump power keeps climbing — net power peaks at an intermediate vacuum.
- Turbine efficiency is fixed at ηt = 0.75 and the condenser approach at Tcold + 2 °C, matching the 3D open-cycle OTEC companion simulation's engineering assumptions.