Ind. Eng. Chem. Res. · 2026 · Subraveti, Karimi & Gazzani

Making simulations reach
steady state, faster.

Cyclic adsorption processes take hundreds of simulated cycles to settle. This paper shows that a handful of Steffensen-style extrapolation formulas — applied to the raw sequence of simulation outputs, no Jacobian required — cut that wait by up to .

3 process types tested
12 acceleration variants
500 operating conditions swept
● successive substitution  vs  ● accelerated — same start, same finish, very different trip.
Scroll
Idea flow

From bottleneck to practical fix

The argument moves through six currents — drag your eye left to right. Nodes ringed in amber (⚑) are the ones worth slowing down for; everything else is supporting context. Hover any node for the full detail.

⚑ Key concept
Supporting context
Hover to explore →
Reading the math

What F(Δn) actually means, step by step

The idea-flow diagram compresses this into one node. Here it is unpacked into two windows: the baseline loop the paper is trying to speed up, and the correction it adds on top.

Window 1 · the baseline

Successive substitution: Δn+1 = F(Δn)

F is the entire adsorption simulator treated as a black box — it takes the column’s state at the end of one cycle and returns the state at the end of the next. Δ is a vector: gas composition, adsorbed loading, pressure, and temperature across every point in the column.

Fixed-point iteration (eq. 1 in the paper)Δn+1 = Fn)

Run this three times in a row and you get three stored states — the raw material every acceleration method needs:

A
cycle 1 end
F(A)
B
cycle 2 end
F(B)
C
cycle 3 end
A, B, CThree consecutive plain-FPI outputs. Nothing accelerated has happened yet — this is just three ordinary simulation cycles run back to back.
Why 3?One extrapolation step needs two consecutive differences to estimate a direction and a step size — that requires three data points, not two.
Window 2 · the correction

Graves-Morris: H = F(Δn) − λv

Instead of accepting C as the next starting point, the method looks at how the sequence has been moving and jumps further ahead along that same direction.

Step 1 — build two consecutive differencesu = B − A    v = C − B    w = v − u
Step 2 — scalar step size (approximates 1 / Jacobian along this direction)λ = (uTv) / (uTw)
Step 3 — extrapolated guess, replaces Δn for the next cycleH = B − λ · v
A
B = F(A)
C = F(B)
H ← next start
uThe older step the sequence took — from A to B.
vThe newer step — from B to C. This is the direction Graves-Morris extrapolates along.
λHow far past C to jump. Too small and it barely helps; too large and it can overshoot and oscillate.
HThe new starting state fed into cycle 4 — replacing what plain FPI would have used.
Symbol cheat sheet — used throughout this page
Δn
Full state vector of the column at the end of cycle n — composition, loading, pressure, temperature.
F( · )
The adsorption simulator itself, treated as a black-box function. No Jacobian or derivative needed.
u, v, w
Consecutive differences between three stored FPI outputs. Every one of the 12 variants is built from these three.
λn
Scalar step size along the search direction — each variant defines this differently (see Table 1 in the paper).
H
The extrapolated guess that replaces Δn as the starting point for the next cycle.
CSS
Cyclic steady state — the point where consecutive cycles stop changing beyond a strict tolerance.
Λ̄
Average logarithmic contraction ratio — how fast the residual shrinks per iteration, on average. More negative = faster.
FPI
Fixed-point iteration, i.e. successive substitution — the un-accelerated baseline every method is compared against.
⚑ Why Class V specifically wins

Notice the base of the formula is B = F(A), not the raw input A. That single choice is why Class V methods (Graves-Morris, Zienkiewicz-Lohner) outperform Class U methods, which correct A directly. B is already one FPI step closer to CSS — extrapolating from there, along the freshest available direction v, means every correction starts from better ground and points where the sequence is actually heading.

Outcomes

Where the time actually gets saved

Each band is computational time saved (%) versus plain successive substitution, for the best method in each class on each process. Width tells the story: Class V’s advantage is visible, not just statistical.

VSA speedup — Graves-Morris, 23% of baseline time
TSA speedup — 𝒜4 variant, 35% of baseline time
35%
VTSA time reduction — Zienkiewicz-Lohner, 72% of baseline
Key results

What to remember from this paper

Five numbers and one rule of thumb. If you read nothing else, read this section.

VSA · 4-step cycle
121/ 340 cycles
Graves-Morris reaches CSS in 121 cycles versus 340 for plain successive substitution — 23% of the compute time.
TSA · 6-step cycle
13/ 28 cycles
The 𝒜4 variant and Zienkiewicz-Lohner both roughly halve cycle count, cutting compute time to about a third.
VTSA · 3-step cycle
35% time saved
Fewer cycles saved (only 1–2) but extrapolated guesses speed up the ODE integration itself — savings show up in wall-clock time more than cycle count.
Design-space sweep
average, n = 500
Across 500 Latin-hypercube-sampled operating conditions for VSA, Graves-Morris delivers a consistent ~2× average speedup — not a cherry-picked reference case.
Portability
Py ↔ F90
The same acceleration logic, unmodified, produces comparable speedups in both a Python 3.13 and a Fortran 2023 simulator — the method is genuinely code-agnostic.
Failure mode
C2diverged
Not every variant helps: Class W's C2 method failed to converge within 500 cycles on the VSA case — ill-conditioned λ can make things worse.
Implementation rule of thumb
01
Warm up with 3 plain cycles
Acceleration needs three stored FPI outputs (A, B, C) before it can compute u, v, w and fire.
02
Re-apply every 3 cycles
Fewer risks instability from overuse; more loses the benefit of frequent correction. Three was empirically optimal.
03
Disable below 10⁻⁴ residual
Near CSS the mapping is quasi-linear and extrapolation can overshoot — revert to plain substitution to avoid oscillation.