Skip to main content
June 1, 2026
Faster default simulation solver, structured error details on failed pipelines and optimizations, Wasserstein weighted mode and MSMRFullCell dQ/dU output

Faster default simulation solver

Simulations now default to a new solver that is a drop-in replacement for the previous PyBaMM-based solver, with substantially reduced per-step cost on supported model types and automatic fallback for models it doesn’t yet cover. Piecewise interpolation now also accepts smoothing=0 so a hard step function can be modelled directly.

Structured error details on failed pipelines and optimizations

Pipeline element and optimization failures now carry a structured error_detail with the exception type and a link to the captured diagnostic event. Two new job error codes — CONFIGURATION_ERROR and SOLVER_ERROR — separate user-fixable config mistakes from solver-side failures. In Studio, failed optimizations now show a View diagnostic button (superadmin only) that opens the captured event directly; the exception message itself is stripped before serialization so user-visible diagnostics stay safe to share.

Wasserstein weighted-point-cloud mode and MSMRFullCell dQ/dU output

iws.costs.Wasserstein gains optional position_variable and weight_variable fields. When both are set, the cost computes one Wasserstein-1 distance per objective comparing two weighted point clouds — useful for full-cell MSMR fits where peak-location error in Voltage [V] should be measured by the |dQ/dV| weights instead of sample-by-sample. MSMRFullCell also now emits Differential capacity [Ah/V] when listed in objective variables, derived from Full voltage [V] / Full capacity [A.h] and interpolated to the data voltage grid.

Pipelines documentation moved to schema-first Docs section

The runnable “how do I actually run this” pipelines content has moved out of the Guide into a new schema-first Pipelines section under the Documentation tab, with every code sample rewritten to use ionworks-schema + ionworks-api. The Guide retains the theory — equations, parameter tables, intuition — and its existing “Pipelines” group is renamed to Parameterization. The Japanese tab mirrors the new section.
Fixes
  • Project-scoped ECM fitting from existing measurements no longer fails with a validation error: the frontend now sends the payload shape the backend expects for per-measurement initial SOC, and shows a per-measurement initial-SOC input next to each selected measurement.
Improvements
  • client.simulation.protocol(...) accepts design_parameters again as a flat dict — the single-simulation convenience that was accidentally removed when the protocol-template flow landed. Supplying both design_parameters and design_parameters_doe, or a DOE that expands to more than one simulation, now raises explicitly instead of silently billing for the extra runs.
  • BioLogic .mps protocols with large embedded drive-cycle tables (e.g. ~96k-row Urban Profile traces inlined as YAML block scalars) no longer time out when parsed via /protocols/parse-to-template.
  • iws.direct_entries.DirectEntry accepts a pybamm.ParameterValues directly. Callable values (concentration- / temperature-dependent interpolants) are serialized automatically and deserialized back into pybamm symbols so local and API consumption paths behave the same.
Fixes
  • Logging configuration now correctly governs all pipeline submodule loggers, so log-level settings apply consistently across the package.
Improvements
  • client.simple_pipeline.create(...) accepts a PipelineOptions (e.g. live_progress_updates=False), wiring this option through end to end from the SDK client.
Fixes
  • Outbound JSON payloads no longer raise TypeError when a request body contains a pandas DataFrame with datetime columns. pd.Timestamp is serialized via isoformat() and pd.NaT becomes null.
Fixes
  • BioLogic .mps parser no longer hangs on protocols like lfp_gr_cccv.mps where an internal sub-cycle pointer could be misread as a forward jump. Only genuine forward jumps emit gotos; backward or equal values are treated as plain step-ends.
Improvements
  • Ionworks skills can now be installed as a Gemini CLI extension; the Coding agents docs page is updated to cover Gemini CLI, Cursor, and GitHub Copilot install paths alongside Codex and Claude Code.
  • New half-cell MSMR template and helper scripts in the parameterize skill. The reference page mandates the template and lays out a discover → inspect → scaffold → dry-run → submit → validate workflow so every half-cell OCP fit uses the same canonical priors, multistarts, and method.
Fixes
  • The process-data skill now documents the platform’s actual current sign convention (positive = discharge), matches the validator and corresponding transform, and calls out the double-flip trap.