Skip to main content
GITTModel for diffusion-only fits, model downloads for pybamm-only users, full app-URL helpers, and clearer configuration error messages

GITTModel — a first-class diffusion-only model

GITTModel and HalfCellGITTModel are now first-class models in ionworkspipeline (with matching ionworks_schema siblings). GITT fits overwhelmingly use the same lightweight model rather than SPMe: x-averaged particle diffusion per electrode, a single lumped ohmic resistance, fixed OCPs, and no Butler-Volmer kinetics, electrolyte dynamics, or thermal effects. Shipping it as a built-in model unblocks server-side GITT fits and backs the new half-cell GITT fit template.

Download ionworks-defined models for plain pybamm

Users who have only ionworks-schema / ionworks-api — and not the licensed ionworkspipeline package — can now obtain ionworks-defined models (ECM, LumpedSPMR, the MSMR models, GITTModel) in a form they can load and run with plain pybamm. A new endpoint builds the model server-side (where the license lives) and returns a loadable serialisation, exposed through the Python SDK.

App-URL helpers for every routed resource

The SDK’s client.urls grew from a single .measurement() method to a full set of web-app link builders — project, model, parameterized_model, optimization, pipeline, study, simulation, cell_specification, cell_instance, and more — so callers never hand-construct app.ionworks.com URLs from IDs. The helpers are environment-aware, deriving the right host for whichever API environment the client is configured against.

Stricter, clearer pipeline configuration

Most user-driven errors in ionworkspipeline now raise a clear configuration error instead of a generic one, so configuration mistakes — wrong field types, out-of-range values, missing keys — are routed to a clear Configuration error for the user instead of being treated as an internal error. Optimizer configuration is now also validated up front: passing options meant for a different optimizer now hard-errors at submission time instead of being silently ignored.
Improvements
  • Objective- and variable-level cost scoping is now driven by a single source of truth mapping each objective to the variables it should compute. This lets a weighted Wasserstein cost (position-shifting dQ/dV) and a per-variable SSE cost be combined over one objective, with each cost explicitly scoped to the variables it should consume. Electrode balancing gained an option to emit dQ/dV on the model’s own full-window voltage axis so a weighted Wasserstein comparison can align peaks in voltage rather than on the data grid.
  • Strict optimizer-option validation: unknown optimizer option keys (and method/option mismatches) are rejected at submission time, and unknown constructor options are rejected at runtime with an actionable message — the previous behaviour silently ignored them. The typed option wrappers for each supported optimizer (CMA-ES, PSO, Differential Evolution, XNES, Bayesian Optimization, SOBER, TuRBO) remain the recommended way to pass options.
  • Failure handling across the fitting and design-optimization paths is now unified onto a single constant, so the two paths can no longer drift apart and failures are better-conditioned for surrogate-based fits.
Fixes
  • ECM coulomb-count capacity reference is now computed per segment. Multi-measurement fits previously accumulated the cumulative integral across concatenated segment boundaries, inflating the capacity estimate to roughly the sum of per-segment throughputs and triggering spurious capacity-sanity-check warnings.
  • A custom geometry with symbolic bounds is now correctly restored before the simulation is built, instead of arriving in a form that choked the solver.
  • Custom models now correctly honour their serialised mesh and geometry settings, instead of having them silently rebuilt from defaults.
Improvements
  • client.model.download / serialize (introduced above) return ionworks-defined models in a plain-pybamm-loadable form.
  • client.urls (introduced above) now builds links for every routed resource, environment-aware.