MaximaLabs
Validation

See the deviation, not just the claim

Every row here is regressed live against a named, cited dataset with a stated acceptance tolerance. Expand any row for the parity plot, or run the exact case yourself.

5/5 datasets within tolerance
Binary pairPackageBubble-T AADVapor-y AADPointsStatus
Ethanol-Water (NRTL)
Gmehling & Onken, DECHEMA Vol. I; Carey & Lewis (1932). 101.3 kPa.
nrtl0.18 K/ ≤ 1 K0.0043/ ≤ 0.029Pass
Ethanol-Water (UNIQUAC)
Gmehling & Onken, DECHEMA Vol. I; Carey & Lewis (1932). 101.3 kPa.
uniquac0.10 K/ ≤ 1.2 K0.0029/ ≤ 0.0259Pass
Methanol-Water (NRTL)
Dunlop (1948) smoothed data via Perry's Chemical Engineers' Handbook. 101.3 kPa.
nrtl0.06 K/ ≤ 1 K0.0063/ ≤ 0.029Pass
Benzene-Toluene (Peng-Robinson)
Perry's Chemical Engineers' Handbook; near-ideal benzene-toluene at 101.3 kPa.
peng-robinson0.13 K/ ≤ 2 K0.0035/ ≤ 0.039Pass
Benzene-Toluene (Soave-RK)
Perry's Chemical Engineers' Handbook; near-ideal benzene-toluene at 101.3 kPa.
srk0.24 K/ ≤ 2 K0.0026/ ≤ 0.039Pass

AAD = average absolute deviation vs. cited experimental data. Generated 9/7/2026, 9:01:03 PM.

Measured VLE at corpus scale — NIST TRC ThermoML Archive

378 binary pairs / 13,823 measured tie-lines, vendored in this repository. For every measured (T, x) the model is asked what vapour is in equilibrium with that liquid; the number is the average absolute deviation in vapour mole fraction.

PackageCoverageMedian AAD (y) / tolMean AAD (y)Worst pairsStatus
nrtl17%(10/60)0.0309/ 0.080.0376
isobutanol–n_hexane 0.078
n_hexane–sec_butanol 0.069
n_butane–propane 0.048
Pass
peng-robinson97%(58/60)0.0627/ 0.080.1001
3_methylamino_propylamine–water 1.880
gamma_valerolactone–water 0.245
carbon_dioxide–perfluoro_n_hexane 0.167
Pass
srk98%(59/60)0.0614/ 0.081.2035
3_methylamino_propylamine–water 67.016
ammonia–ethanol 0.250
gamma_valerolactone–water 0.208
Pass

Coverage qualifies the deviation and is reported next to it deliberately. NRTL is the most accurate here but only reaches the binaries it has fitted interaction parameters for; the cubics reach nearly every pair in the corpus at roughly twice the deviation. That trade is the result, not a footnote. The gate is on the median rather than per pair — a sweep of arbitrary binaries legitimately contains systems no general-purpose package fits.

Component attribution in the source archive is inferred, not read: the rendering mislabels which component a composition belongs to, so labels are resolved by a pure-component saturation-pressure tie-break that corrected 23% of datasets. The tie-break uses only pure-component data, independent of the mixture models scored here — but it is an inference, and it travels with these numbers.

Pure-component property path — measured against NIST ThermoML

1,038 components, 62,715 measured points. Scores the component databank's own liquid-property path: only 431 of 6,745 components carry a regressed DIPPR block, so for the rest every property is a corresponding-states estimate.

PropertyMethodComponents / pointsMedian errorp90
liquid viscosityDIPPR (regressed)control137 / 2,8411.9%9%
liquid viscosityLetsou-Stielestimate265 / 3,72268.8%94%
liquid thermal conductivityDIPPR (regressed)control61 / 7892.6%7%
liquid thermal conductivitySato-Riedelestimate67 / 84311.0%47%
surface tensionDIPPR (regressed)control89 / 1,4061.0%4%
surface tensionBrock-Birdestimate156 / 1,6147.1%50%
vapor pressureDIPPR (regressed)control184 / 5,7961.3%16%
vapor pressureLee-Keslerestimate519 / 11,87910.6%86%
liquid densityDIPPR (regressed)control174 / 3,6330.1%1%

The DIPPR rows are a control, not a result: a regressed correlation scored against the data it was regressed from must come out tight, and that is what makes the estimated rows interpretable rather than merely asserted. Letsou-Stiel viscosity measures at roughly twice its own published error.

Still open: liquid density has no corresponding-states fallback, so 6,286 components carry criticals but cannot produce one. Vapour pressure had the same hole until Lee-Kesler was measured on this corpus and wired in.

MESH solver vs. the exact analytical solution

The production distillation solver run on a synthetic constant-α, constant-molal-overflow binary — the one case where McCabe-Thiele and Fenske are exact. The reference is a different algorithm (sequential stage march with shooting), so agreement tests the solver rather than restating it.

Constant-alpha binary column (McCabe-Thiele / Fenske exact)Pass
Product deviation
6.2e-7/ 1e-5
Stage-profile deviation
1.2e-6/ 1e-5
Fenske N_min deviation
0.29/ 0.5 stages

x_D 0.888624 vs 0.888625 · x_B 0.111374 vs 0.111375 · α 2, N 12, R 2

McCabe & Thiele, Ind. Eng. Chem. 17, 605 (1925) / Lewis (1922) operating-line staircase; Fenske, Ind. Eng. Chem. 24, 482 (1932) total-reflux limit — both exact for a constant-relative-volatility, constant-molal-overflow binary.

Rigorous column — measured solve time and residual

Real wall-clock timing of the Boston-Sullivan inside-out MESH solver at increasing stage counts, measured on this run.

CaseStagesSolve timeResidualStatus
5 stages
Small stripper / rough-cut column
50.97 s8.2e-7converged
8 stages
Standard binary distillation
812.31 s7.1e-4converged
12 stages
High-purity binary split
1216.93 s6.6e-4converged

Timed on the server that generated this report, so absolute times reflect its hardware and current load — the point is the trend with stage count and that every case converges, not the seconds.

Ideal-gas heat capacity vs. independent compilations (TRC, Poling)

PopulationCoverageMedian |dev|p90 |dev|Status
Correlations the solver uses254/38266%0.27%1.52%validation.table.pass
CoolProp-shadowed (never evaluated)42/4888%0.21%0.97%validation.table.pass

5 correlation(s) found wrong beyond the threshold are superseded at runtime by the TRC coefficients and are therefore listed here rather than scored: ethyl_chloride, ethylene_carbonate, ethylene_glycol, nitrogen_trioxide, acrylic_acid.

Matched by CAS against the TRC gas tables and Poling, Prausnitz & O'Connell 5th ed. Appendix A, each evaluated only inside its own stated temperature range. Both populations are shown because a CoolProp cross-check can only see the shadowed ones — which are exactly the correlations the solver never evaluates. This tests transcription, units and equation dispatch against independent compilations of overlapping experimental literature; it is not an independent measurement.

Electrolyte activity coefficients (B-dot vs. Pitzer)

ModelIonic strengthModel γLiterature γSourceStatus
NaCl mean activity coefficient (B-dot)1 mol/kg0.66200.6570Hamer & Wu, J. Phys. Chem. Ref. Data 1, 1047 (1972); NaCl, 25 degC.Pass
NaCl mean activity coefficient (B-dot)2 mol/kg0.67600.6680Hamer & Wu, J. Phys. Chem. Ref. Data 1, 1047 (1972); NaCl, 25 degC.Pass
NaCl mean activity coefficient (B-dot)3 mol/kg0.71390.7140Hamer & Wu, J. Phys. Chem. Ref. Data 1, 1047 (1972); NaCl, 25 degC.Pass
NaCl mean activity coefficient (B-dot)4 mol/kg0.76410.7830Hamer & Wu, J. Phys. Chem. Ref. Data 1, 1047 (1972); NaCl, 25 degC.Pass
NaCl mean activity coefficient (Pitzer)1 mol/kg0.65490.6570Hamer & Wu, J. Phys. Chem. Ref. Data 1, 1047 (1972); NaCl, 25 degC.Pass
NaCl mean activity coefficient (Pitzer)2 mol/kg0.66660.6680Hamer & Wu, J. Phys. Chem. Ref. Data 1, 1047 (1972); NaCl, 25 degC.Pass
NaCl mean activity coefficient (Pitzer)3 mol/kg0.71220.7140Hamer & Wu, J. Phys. Chem. Ref. Data 1, 1047 (1972); NaCl, 25 degC.Pass
NaCl mean activity coefficient (Pitzer)4 mol/kg0.78100.7830Hamer & Wu, J. Phys. Chem. Ref. Data 1, 1047 (1972); NaCl, 25 degC.Pass
NaCl mean activity coefficient (Pitzer)6 mol/kg0.98650.9860Hamer & Wu, J. Phys. Chem. Ref. Data 1, 1047 (1972); NaCl, 25 degC.Pass

Saturation pressure (Antoine / EoS)

T (K)Model PsatReference PsatDeviationSourceStatus
373.15101.42 kPa101.42 kPa0.002%Cengel & Boles, "Thermodynamics: An Engineering Approach", Table A-4 (IAPWS-IF97).Pass
393.15198.67 kPa198.67 kPa0.002%Cengel & Boles, "Thermodynamics: An Engineering Approach", Table A-4 (IAPWS-IF97).Pass
423.15476.18 kPa476.16 kPa0.003%Cengel & Boles, "Thermodynamics: An Engineering Approach", Table A-4 (IAPWS-IF97).Pass
443.15792.19 kPa792.19 kPa0.000%Cengel & Boles, "Thermodynamics: An Engineering Approach", Table A-4 (IAPWS-IF97).Pass

PC-SAFT — pure-component saturation & liquid density

ComponentConditionModel valueReference valueDeviationSourceStatus
propaneP=9.97e+05 Pa299.93 K300.00 K0.02%NIST WebBook saturation data; Gross & Sadowski (2001) Table 1 parameters.Pass
n_pentaneP=1.01e+05 Pa309.20 K309.20 K0.00%NIST WebBook saturation data; Gross & Sadowski (2001) Table 1 parameters.Pass
n_hexaneP=1.01e+05 Pa341.95 K341.90 K0.01%NIST WebBook saturation data; Gross & Sadowski (2001) Table 1 parameters.Pass
n_octaneP=1.01e+05 Pa398.98 K398.80 K0.05%NIST WebBook saturation data; Gross & Sadowski (2001) Table 1 parameters.Pass
benzeneP=1.01e+05 Pa353.50 K353.20 K0.09%NIST WebBook saturation data; Gross & Sadowski (2001) Table 1 parameters.Pass
ethaneP=2.66e+06 Pa277.68 K280.00 K0.83%NIST WebBook saturation data; Gross & Sadowski (2001) Table 1 parameters.Pass
co2P=1e+06 Pa231.53 K233.00 K0.63%NIST WebBook saturation data; Gross & Sadowski (2001) Table 1 parameters.Pass
co2T=240.0 K, P=1.28e+06 Pa1064.33 kg/m^31088.00 kg/m^32.18%NIST WebBook liquid density; Gross & Sadowski (2001) Table 1 parameters.Pass
n_heptaneT=298.1 K, P=1e+05 Pa672.49 kg/m^3679.50 kg/m^31.03%NIST WebBook liquid density; Gross & Sadowski (2001) Table 1 parameters.Pass

Distillation column — stage count vs. Fenske minimum

Actual converged stages compared against the Fenske minimum-reflux stage count for the same separation; ratio must fall in the expected design range.

Feed / packageActual stagesFenske minimumRatioSourceStatus
ethanol-water
nrtl
88.230.97×/ [0.9–2.5]Fenske, Ind. Eng. Chem. 24, 482 (1932) — closed-form total-reflux min-stage equation.Pass

Azeotrope location

Predicted azeotrope composition and temperature compared against the cited experimental azeotrope for each system.

Binary pairPackageComposition (predicted / experimental)Temperature (predicted / experimental)SourceStatus
ethanol-water azeotrope
nrtl89.07% / 89.40%Δ 0.33 / ≤ 2%351.40 / 351.30 KΔ 0.10 / ≤ 1 KGmehling & Onken, DECHEMA Vol. I; ethanol-water azeotrope 89.4 mol%, 78.15 degC, 1atm.Pass

Liquid-liquid equilibrium (LLE)

Checks whether the thermo package predicts the same two-phase liquid split the cited data shows, and how much of each component crosses into the other phase.

SystemT (K)Two phases?Minor-component carryoverSourceStatus
water/n_hexane miscibility gap
298.15Yes
n_hexane in water: 0.009% / ≤ 0.50%
water in n_hexane: 0.076% / ≤ 1.00%
Sorensen & Arlt, DECHEMA LLE Data Collection; water/n-hexane near-immiscibility, 25 C.Pass

Thermodynamic consistency (Gibbs-Duhem)

The Herington area-test D and J values for each VLE dataset; |D − J| within 10 flags the underlying data (not the model) as thermodynamically consistent.

Binary pairDJ|D − J| / ≤ 10SourceStatus
Ethanol-Water (NRTL)
11.07.43.6Gmehling & Onken, DECHEMA Vol. I; Carey & Lewis (1932). 101.3 kPa.Consistent
Ethanol-Water (UNIQUAC)
11.07.43.6Gmehling & Onken, DECHEMA Vol. I; Carey & Lewis (1932). 101.3 kPa.Consistent
Methanol-Water (NRTL)
22.19.612.5Dunlop (1948) smoothed data via Perry's Chemical Engineers' Handbook. 101.3 kPa.marginal
Benzene-Toluene (Peng-Robinson)
45.110.1Perry's Chemical Engineers' Handbook; near-ideal benzene-toluene at 101.3 kPa.Near-ideal
Benzene-Toluene (Soave-RK)
45.110.1Perry's Chemical Engineers' Handbook; near-ideal benzene-toluene at 101.3 kPa.Near-ideal

APC controller solve-time scaling

Timed benchmark of the real MIMO DMC quadratic-program solver,flowsim.apc.mimo_dmc.dmc_move, at increasing controller sizes — measured, not projected.

Controller sizeP / M horizonDecision varsSolve timeOptimality residualTarget applicationStatus
2 × 4 (unit scale)20 / 5100.04 ms/ ≤ 1000 ms4.6e-16Local flow loopsPass
5 × 10 (process loop)20 / 5250.04 ms/ ≤ 1000 ms4.2e-16Standard unit opsPass
10 × 20 (unit wide)30 / 101000.41 ms/ ≤ 1000 ms8.2e-16Crude tower sectionPass
20 × 40 (area wide)30 / 1020011.09 ms/ ≤ 1000 ms1.8e-15Fractionation areaPass
50 × 100 (plant wide)30 / 1050059.19 ms/ ≤ 1000 ms1.9e-15Plant-wide refinery networkPass
0.005500.04301.00e+3Decision variablesSolve time (ms)

Protocol: Each row solves the QP end-to-end on this box and reports wall-clock time against the scan-budget ceiling for that controller class.

Optimality residual is the KKT stationarity norm ‖∇L‖ at the solver's terminal iterate — near zero confirms the QP actually converged, not just that it stopped.

RTO cycle-solve scaling

Timed benchmark of the real plant-wide multistart Ipopt NLP,flowsim.solver.rto.run_rto_schedule, at increasing multistart-restart counts — measured, not projected.

Multistart restartsSolve timeObjective ($/cycle)EngineStatus
1 multistart18.2 ms/ ≤ 1000 ms$250.00Plant-wide NLP (CasADi/Ipopt, multistart)Pass
4 multistarts60.9 ms/ ≤ 1000 ms$250.00Plant-wide NLP (CasADi/Ipopt, multistart)Pass
8 multistarts69.6 ms/ ≤ 1000 ms$250.00Plant-wide NLP (CasADi/Ipopt, multistart)Pass
16 multistarts108.4 ms/ ≤ 1000 ms$250.00Plant-wide NLP (CasADi/Ipopt, multistart)Pass
0.0017.618.21.00e+3Multistart restartsSolve time (ms)

Per-model acceptance cases

Beyond the binary-VLE sweeps above, each of these binds one model to one published dataset, one acceptance metric and one tolerance — the electrolyte, equation-of-state and solubility models a VLE parity plot can't score. 8 of 8 pass. Recomputed live from the shipped code.

Model / propertyReference datasetNMetricToleranceVerdict
eNRTL CO₂-MEA VLEp_CO₂ vs. loading [Pa]Jou, Otto & Mather (1995), Can. J. Chem. Eng. 73, 140 — 30 wt% MEA, 313.15 K40.289log10 AAD0.450pass
NRTL ethanol-water VLEbubble temperature [K]Gmehling & Onken, DECHEMA VLE Data Coll. Vol. I (Carey & Lewis 1932), 101.3 kPa90.178AAD1.00pass
NRTL ethanol-water VLEvapor ethanol fraction [mol frac]Gmehling & Onken, DECHEMA VLE Data Coll. Vol. I (Carey & Lewis 1932), 101.3 kPa90.00435AAD0.0200pass
Pitzer NaCl activitymean ionic activity coeff. γ± [dimensionless]Hamer & Wu (1972), J. Phys. Chem. Ref. Data 1, 1047 — NaCl(aq), 298.15 K50.00216rel. AAD0.0100pass
SAFT-VR Mie methane densitysaturated-liquid density [kg/m³]Lafitte et al. (2013), J. Chem. Phys. 139, 154504 — methane, NIST sat. liquid50.00734rel. AAD0.0100pass
CPA water saturationsaturation temperature vs. pressure [K]NIST/IAPWS-IF97 steam tables — water saturation line, 10-500 kPa50.234AAD0.500pass
Peng-Robinson speed of soundspeed of sound [m/s]NIST reference acoustic data — CH₄ ~450, N₂ ~353, CO₂ ~270 m/s at 300 K, 1 bar30.00124rel. AAD0.0100pass
Scale-mineral solubility (Ksp)mineral solubility in pure water [mol/L]Blount (1977) barite 1.04e-5; CRC fluorite ~2.05e-4 / gypsum ~1.53e-2 mol/L30.0366rel. AAD0.0600pass

Numerical-robustness leaderboard

The cases that break solvers — near-critical flashes, spurious-root bubble points, phase boundaries, azeotrope pinches, tight recycles, singular Jacobians — run live through the real engine, each with its measured outcome. Every number is recomputed on load, not stored.

Near-critical / cryogenic flash
survived
C3MR LNG cold-end JT expansion (Peng-Robinson)

An isenthalpic flash of a mixed refrigerant into the cryogenic cold end; a naive subcooled bracket floors at ~180 K and returns the wrong temperature.

Measured: recovered 169.6 K, vapour fraction 0.465 — in the cold end below 180 K

C3MR liquefaction cold end (110-230 K); subcooled / JT physics (Peng-Robinson).

Ill-conditioned / wide-boiling
survived
Ethane-rich bubble point — spurious-root avoidance (Peng-Robinson)

A wide relative-volatility spread makes the incipient-phase iteration prone to collapsing onto the heaviest pure component's saturation temperature (a spurious root).

Measured: bubble point 222.7 K (pure ethane 220.4 K, pure n-pentane 365.9 K); K-value spread 2.0e+02

92% ethane / propane / butane / pentane at 5 bar; true bubble point sits just above pure ethane's 220.4 K, not near pure n-pentane's 365.9 K.

Phase-boundary edge
survived
Rachford-Rice all-liquid / all-vapour edges

At the phase boundary the Rachford-Rice root sits exactly at 0 or 1; a naive Newton or unclamped bracket walks outside the physical [0,1] window and diverges.

Measured: psi(all-liquid)=0.00e+00 (=>0), psi(all-vapour)=1.000000 (=>1)

Analytic edges: every K<1 => psi=0; every K>1 => psi=1.

Azeotrope pinch
survived
Ethanol-water minimum-boiling azeotrope location (NRTL)

The relative volatility crosses 1 at the azeotrope; a model that misplaces it makes every distillation result past the pinch wrong even when the AAD looks fine.

Measured: located x=0.891 vs 0.894 (dev 0.003), T=351.40 vs 351.30 K (dev 0.10 K)

Gmehling & Onken, DECHEMA Vol. I; ethanol-water azeotrope 89.4 mol%, 78.15 degC, 1atm.

Recycle convergence
survived
High-recycle ammonia loop (sequential-modular + Wegstein)

A tight (~5:1) material recycle: the tear fixed point converges slowly and can oscillate; sequential-modular needs many accelerated passes to close the loop.

Measured: converged in 78 recycle passes, tear residual 9.01e-07

high-recycle-ammonia-eo; sequential-modular closes the tear via Wegstein acceleration (the equation-oriented mode closes all stream unknowns in one solve).

Singular Jacobian (structural)
survived
Structural singularity detection & explanation

An under/over-determined flowsheet has a singular Jacobian; legacy simulators report a cryptic 'Singular Jacobian' code with no location or cause.

Measured: DoF +2, 0 floating variable(s); explained: 2 degree(s) of freedom — system is under-determined

Structural degrees-of-freedom / floating-variable analysis (eo_diagnostics) — the same view surfaced in the in-app Solver Diagnostics panel.

Property-based fuzz
survived
Randomized flash-invariant campaign (Peng-Robinson + NRTL)

Hand-picked hard cases can only cover what someone thought to try; a seeded sweep of thousands of random (T,P,composition) states hammers the flash across the whole phase envelope — subcooled, two-phase and superheated — and asserts the invariants every flash must satisfy (no NaN, psi in [0,1], normalized phases, and the lever rule z=(1-psi)x+psi y).

Measured: 3000/3000 random flash states survived every invariant (worst lever-rule residual 1.6e-13, tol 1e-06); 2000/2000 Rachford-Rice cases clean

Property-based testing of the (T,P) flash + Rachford-Rice; deterministic (seeded), run in CI and expandable to millions of states offline with no cloud infra.

Validation history

Every milestone adds cited validations, fixes regressions, improves convergence, or reproduces new literature — the honest "quality is increasing" signal, not one snapshot.

  1. Numerical-robustness leaderboard2026-08
    Added
    Published robustness leaderboard: near-critical cryogenic (P,H) flash, wide-boiling spurious-root bubble point, Rachford-Rice edges, ethanol-water azeotrope pinch, tight ammonia recycle, and structural singular-Jacobian detection — each run live through the real solver with its measured outcome.
  2. MESH Levenberg-Marquardt globalization2026-07-30
    Added
    Near-azeotropic extractive-column convergence guard (CO2/ethane with an n-decane entrainer) in the inside-out MESH Newton.
    Fixed
    Unconverged distillation columns now return a physically self-consistent best-iterate partial (every stage T is its own composition's bubble point), not the last swing.
    Convergence
    Levenberg-Marquardt globalization crosses the near-pinch region where the pure-Newton line search stalled; co2-ethane and light-ends columns that previously fell to the successive-substitution fallback now converge to ~1e-6.
  3. Component-balance convergence gate + mass-conservation audit2026-07-28
    Added
    Whole-catalog per-unit mole-conservation audit with an executable ledger of known internal leaks; a column is accepted as converged only if its global feed-vs-products component balance closes.
    Fixed
    Indefensible columns (17-63% single-component imbalance) are now honestly reported unconverged instead of a false 'converged'.
  4. Complex-op cited-reference gates (SMB / Petlyuk / VPSA)2026-07-28
    Added
    Simulated Moving Bed vs triangle theory (Storti/Mazzotti/Morbidelli 1993). · Petlyuk dividing-wall energy saving against Triantafyllou-Smith (1992), 20-30% band. · VPSA 13X N2/O2 Langmuir loadings against Data in Brief (2020), within 5%.
    Fixed
    Cryogenic (P,H) flash subcooled floor lowered 180 K -> 90 K (LNG cold end no longer clamped to a wrong temperature). · Wide-relative-volatility bubble point no longer collapses to the heaviest pure component's spurious saturation root.
    Literature
    Triangle theory; Triantafyllou-Smith DWC saving; 13X adsorption isotherms.
  5. Thermodynamic-rigor gates2026-07
    Added
    PC-SAFT bubble-T + liquid density vs NIST WebBook / Gross & Sadowski (2001). · Pitzer NaCl activity coefficient vs Hamer & Wu (1972), ~0.3% to I=6 mol/kg. · Herington (1951) thermodynamic-consistency test on every cited VLE set. · UNIFAC liquid-liquid equilibrium vs Sorensen & Arlt DECHEMA solubility bounds. · Rigorous MESH column cross-checked against the Fenske minimum-stages shortcut.
    Literature
    DECHEMA / Carey & Lewis (1932) ethanol-water VLE + azeotrope; Dunlop (1948) methanol-water; Perry's benzene-toluene; IAPWS-IF97 water saturation.

Reproduce every number

Nothing above is pinned — it's recomputed live from the solver on every page load. We publish our inputs, our numbers, and the citation so the comparison is reproducible. We don't publish competitor numbers we didn't measure. To benchmark a competitor honestly: build the identical case in your own simulator (same components, package family, and conditions), read off the same quantity, and compare against the cited experimental reference — the ground truth both simulators are measured against.

# reproduce our numbers locally (no API key needed)
uv run python scripts/reproduce_validation.py

# or drive the same case through the Python SDK
from flowsim.sdk import FlowSimClient
client = FlowSimClient("https://maximalabs.io")
# ...build the cited case, run, and compare against the reference

Stop fighting legacy software. Build your first flowsheet in 60 seconds.