Phenol + acetone via the Hock process (cumene peroxidation) — a PENG-ROBINSON process flowsheet
The route that makes ~95% of the world's phenol -- and co-produces acetone, the classic two-products-from-one-feed economics. It completes the cumene story: the existing cumene-synthesis example makes cumene from benzene + propylene; this oxidizes it onward. Two atom-balanced steps: air peroxidation (cumene + O2 -> cumene hydroperoxide, CHP) at low per-pass conversion, then acid-catalyzed cleavage (CHP -> phenol + acetone, near-complete). The spent air is vented, and the crude is separated by boiling point (acetone 56 C < cumene 152 C < phenol 182 C < CHP): high-purity phenol, crude acetone as the co-product, and unreacted cumene recovered for recycle. HONEST SCOPE: rigorous atom-balanced reaction stoichiometry; cumene hydroperoxide is a databank pseudo-component (no CoolProp entry) flashed under Peng-Robinson. The purification is spec-based component-split separators (the Aspen 'Sep'-block technique), not rigorous columns. The acetone product comes out ~98% because residual dissolved air (O2/N2) reports overhead with it -- a real plant adds a light-ends/degassing column for polymer-grade acetone; phenol comes out essentially pure. Recovered cumene is shown as an open recycle stream.
7 views 0 forks
- Rigorous PENG-ROBINSON thermodynamics, solved by the same engine every simulation runs on.
- 5 unit operations modeled: MIX, 2× Cleave, 2× Coolcl, Oxflash, 3× Phencol.
- Focus areas: Phenol, Acetone, Cumene, Hock process, Co-production, Peroxidation.
- Thermodynamics
- PENG-ROBINSON
- Components
- cumene, oxygen, nitrogen, cumene_hydroperoxide, phenol, acetone
- Unit operations
- MIX2× Cleave2× CoolclOxflash3× Phencol
Opens in a new tab, loaded straight into the app — no setup.
Reproduce this exact result from Python — the real client.get_example() → run_and_wait() path, not a mockup.
from flowsim.sdk import FlowSimClient
client = FlowSimClient()
example = client.get_example("phenol-acetone-hock-process")
sim = client.create_simulation(example["title"], example["flowsheet"])
result = client.run_and_wait(sim["id"])
print(result["status"]) # "converged"
streams = client.streams(sim["id"])