MaximaLabs
Model-based engineering

First-principles modeling that stands up to scrutiny

The rigorous toolkit process modelers reach for gPROMS or gEST/gOPT to get — parameter estimation with real uncertainty, dynamic optimization, high-index DAE support, hybrid state events, distributed population balances, and Mie-potential thermodynamics — with every capability validated against a known analytic solution.

Six capabilities, each with the math on the table

These run as real solver endpoints and as a workspace panel — not slideware. Every card shows the governing equation and the analytic case we validate it against.

Parameter estimation

Fit model parameters to experimental data by maximum likelihood — and report how well you actually know them, with Fisher-information confidence intervals and a full parameter correlation matrix.

θ^=argminθ i[yif(xi;θ)]2σi2cov(θ^)=(JΣ1J)1\hat{\theta} = \arg\min_{\theta}\ \sum_i \frac{[\,y_i - f(x_i;\theta)\,]^2}{\sigma_i^2} \qquad \mathrm{cov}(\hat{\theta}) = \left(J^{\top}\Sigma^{-1}J\right)^{-1}

Kinetic rate constants, VLE binary interaction parameters, heat-transfer coefficients — estimated from your data, not guessed. The covariance comes from the residual Jacobian, so you get standard errors and confidence bounds, not just a point estimate.

✓ Validated: Recovers the exact analytic covariance (XᵀΣ⁻¹X)⁻¹ for a linear-Gaussian model, to machine precision.

Dynamic optimization & optimal control

Find the time-varying operating trajectory — feed ramp, temperature schedule, reflux profile — that minimizes an objective over a horizon, subject to the process dynamics and terminal constraints.

minu(t)  Φ(x(tf))+0tfL(x(t),u(t))dts.t.  x˙=f(x,u)\min_{u(t)}\ \ \Phi\big(x(t_f)\big) + \int_{0}^{t_f} L\big(x(t),u(t)\big)\,dt \qquad \text{s.t.}\ \ \dot{x} = f(x,u)

Control-vector parameterization (single shooting) discretizes the control into intervals and hands the resulting NLP to a gradient optimizer — the standard, published approach to dynamic optimization, not a black box.

✓ Validated: On the textbook minimum-energy problem (min ∫u² s.t. ẋ = u, x(1)=1) it returns the known optimum J* = 1.

High-index DAE support

Rigorous first-principles models routinely produce differential-algebraic equations of index 2 or 3 that a naïve integrator silently mis-solves. We reduce the index symbolically first.

x˙=f(x,y),0=g(x)   ddt   consistent index-1 system\dot{x} = f(x,y),\quad 0 = g(x) \ \ \xrightarrow{\ \tfrac{d}{dt}\ }\ \ \text{consistent index-1 system}

A Pantelides-style pass differentiates the constraint equations symbolically until the system is index-1 and consistently initializable — then integrates it. The detected differential index is reported back, so the model's structure is explicit, not hidden.

✓ Validated: An index-2 problem (0 = x − sin t) is detected as index 2 and integrated to x = sin t; the index-3 pendulum is handled too.

Hybrid systems & state events

Real processes switch: a valve opens at a pressure threshold, a batch phase ends on a conversion, a controller saturates. Model the discontinuities directly instead of smoothing them away.

x˙=fq(x)in mode q,x+=R(x)  when  γ(x)=0\dot{x} = f_{q}(x)\quad\text{in mode } q,\qquad x^{+} = R(x^{-})\ \ \text{when}\ \ \gamma(x) = 0

The integrator locates each state event by root-finding on its trigger function, applies the state reset, switches mode, and continues — with a Zeno guard so an accumulating event chain can't stall the solve.

✓ Validated: A bouncing ball with restitution reproduces the analytic first-bounce time t = √(2h/g) and the geometric energy decay.

Distributed population balance

Track the whole particle-size distribution — crystals, droplets, flocs — not just its mean. Nucleation, growth, aggregation, and breakage all shape the product, and screening on moments alone misses the tails.

nt+(Gn)L=BaggDagg+BbreakDbreak\frac{\partial n}{\partial t} + \frac{\partial (G\,n)}{\partial L} = B_{\text{agg}} - D_{\text{agg}} + B_{\text{break}} - D_{\text{break}}

A fixed-pivot discretization (Kumar & Ramkrishna) that conserves both particle number and mass exactly across the aggregation and breakage terms, over a geometric size grid — the distributed complement to the moment-based MSMPR crystallizer already in the unit-op library.

✓ Validated: Smoluchowski constant-kernel aggregation reproduces the analytic m₀ decay while conserving m₃ (mass) to 0.1%.

Mie-potential thermodynamics

The variable-range Mie (λr, λa) intermolecular potential and its second-virial / Boyle-temperature behavior — the molecular foundation a SAFT-VR Mie equation of state is built on.

u(r)=Cε ⁣[(σr)λr(σr)λa],C=λrλrλa ⁣(λrλa) ⁣λaλrλau(r) = C\,\varepsilon\!\left[\left(\tfrac{\sigma}{r}\right)^{\lambda_r} - \left(\tfrac{\sigma}{r}\right)^{\lambda_a}\right],\quad C = \frac{\lambda_r}{\lambda_r-\lambda_a}\!\left(\frac{\lambda_r}{\lambda_a}\right)^{\!\frac{\lambda_a}{\lambda_r-\lambda_a}}

Honest scope: this is the potential, its C-constant, and the second virial coefficient / Boyle temperature — the verified foundation, not the full SAFT-VR Mie perturbation EoS (that, plus a regressed group-parameter table, is a data-dependent follow-up we won't fabricate).

✓ Validated: The Lennard-Jones limit (λr, λa = 12, 6) recovers the published reduced Boyle temperature T* ≈ 3.418.

Distributed dynamic models (method of lines)

Model a distributed PDE — a temperature, concentration, or holdup that varies in space AND time — as one indexed equation over a distribution domain, not dozens of hand-written balances.

ct=F ⁣(c,cz,2cz2)  method of lines  c˙i=f(ci1,ci,ci+1)\frac{\partial c}{\partial t} = \mathcal{F}\!\left(c,\, \frac{\partial c}{\partial z},\, \frac{\partial^2 c}{\partial z^2}\right) \;\xrightarrow{\text{method of lines}}\; \dot{c}_i = f(c_{i-1}, c_i, c_{i+1})

The distribution-domain capability (gPROMS DISTRIBUTION_DOMAIN + PARTIAL): write the PDE symbolically — der(T) = D·d2dz2(T) — and the engine auto-generates the finite-difference stencil over the spatial grid, applies your boundary conditions, then integrates in time (LSODA + exact autodiff Jacobian). You write ∂²T/∂z², not the discretization.

✓ Validated: The auto-generated stencil reproduces the analytic sinh/cosh reaction-diffusion profile to 0.003, and a transient bar relaxes to the exact linear steady state (< 0.1 K).

Why we lead with the validation

A new simulator's hardest problem is trust. Ours is that every one of these tools reproduces a solution you can check by hand.

  • Each capability is pinned in the test suite to a closed-form or textbook result — the linear-Gaussian covariance, the minimum-energy optimum J* = 1, x = sin t for the index-2 DAE, the √(2h/g) bounce time, Smoluchowski aggregation, the Lennard-Jones Boyle temperature.
  • The numbers come from a deterministic solver, never from the AI — the copilot can point you at the right tool and read back the result, but it does not invent physics.
  • Where a capability is bounded, we say so on the page: the Mie work is the potential-and-virial foundation of a SAFT-VR Mie EoS, not the full perturbation equation of state.

Reach the whole toolkit from the workspace's Model-based engineering panel (analysis tools), or drive it from the Python SDK / REST API.

See the equations we solve

Every governing equation across the platform is worked out step by step — with the exact Jacobian computed by the same autodiff engine the solver uses.

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