Battery simulation consulting from the team behind PyBaMM.
We build parameterized models, custom physics, and degradation studies for battery R&D teams. PyBaMM consulting from the maintainers. Every parameterized model we deliver is yours to keep and run forever.
When to bring in outside help
Most teams that reach out already know what they need. They have data, a deadline, and a model they need built or fixed. This page is for the moment after that: when an internal build doesn't make sense, when an open-source project doesn't ship support, or when the next step requires expertise your team has not yet built.
- 01
You have the data, not the modeling team.
Your hardware group runs careful parameterization experiments (GITT, EIS, pulse, slow-rate discharge) but the cycler files have been sitting in a shared drive because nobody on the team writes Python. We take the data, fit the model, and hand back a validated parameter set with the cell specification, the fitting provenance, and a short note on what it can and cannot predict.
- 02
You need a degradation model and you've never built one.
Empirical capacity-fade fits, mode-level models that separate LLI from LAM, mechanism-level models for SEI growth or lithium plating. Each one wants a different experimental design and a different fitting workflow. Most teams need one degradation model once, not a permanent in-house degradation function. Hire us for the deliverable.
- 03
Your team uses PyBaMM and has hit a wall.
You already model in PyBaMM. The blocker is specific: an identifiability problem the optimizer keeps ducking, a new chemistry that needs custom physics, a fitting pipeline that converges nicely but disagrees with the validation set. We unblock it without rebuilding the capability you already have. And because we maintain PyBaMM, the fix usually flows back into the framework your team is already using.
What we build
Seven project types across parameterization, degradation, and applied studies. Every engagement is fixed-scope and every deliverable is yours to keep. Pick the row that matches your engineering question — or tell us about it and we will tell you which one does.
Battery parameterization services
Most engagements start here. A standard model fit against your cell, or a custom model when the standard ones don't cover your chemistry. Both end the same way: a validated parameter set, the cell specification it belongs to, and the Python code we used to get there.
- ~1 month
Standard performance model fit (SPM, SPMe, DFN)
We fit a physics-based model (single-particle, single-particle with electrolyte, or full Doyle-Fuller-Newman) against your cycling, pulse, OCP, and EIS data using the ionworkspipeline package. Combine multiple objective types in one fitting run so each parameter is constrained by the experiment designed to reveal it. Deliverable: a validated parameter set bundled with its cell specification, the fitting provenance, and a voltage-vs-data comparison report.
- 3–6 months
Custom and non-standard models
New chemistry or new physics. We extend the PyBaMM framework to cover sodium-ion cells, solid-state systems, silicon-anode formulations, or multi-site multi-reaction (MSMR) electrodes, then parameterize the new model against your data. Suitable when the question is "how do I model a cell PyBaMM does not yet ship a model for."
Battery degradation modeling services
Three levels of degradation modeling, ordered by how much physics you want and how far outside the training data you need to predict. Pick the one that matches the engineering question, not the most sophisticated one available.
- ~1 month
Empirical degradation model
A data-driven capacity-fade and resistance-growth fit against long-cycling datasets. Suitable when you need lifetime predictions for conditions close to the training data and a mechanistic model would be overkill. We deliver the fit, the validation against held-out cycles, and an honest note on extrapolation limits.
- ~2 months
Degradation mode model (LLI, LAM)
Attribute capacity loss to loss of lithium inventory and loss of active material on each electrode. More interpretable than an empirical fit. You can say "this cell is losing inventory faster than it is losing active material." Substantially less expensive than a full mechanism model. The right choice when the conversation needs to be about why, not just how much.
- ~6 months
Degradation mechanism model (SEI, lithium plating)
Full physics-based degradation. SEI layer growth, lithium plating onset, or both, calibrated against targeted experiments designed to expose each mechanism. The longest engagement type we offer, and the only one that gives you confidence in predictions for conditions outside the training data: fast charge profiles you have not yet tested, temperature ranges you have not yet swept, calendar conditions that take longer to measure than to simulate.
Applied studies
Once a parameterized model exists, we use it. Optimization studies sweep design parameters against an engineering objective. Custom interfaces let the rest of your team run the model without writing Python.
- ~1 month
Custom optimization study
Starting from an existing parameterized model (yours, ours from a prior project, or one from the literature), we run design-parameter sweeps against an engineering objective. Energy density versus coating thickness. Fast-charge window versus particle size. Cycle life versus electrolyte loading. Deliverable: the study, the code that ran it, and a written interpretation of the trade-off surface.
- ~1 month
Custom Dash or Streamlit GUI
A browser interface around a one-off modeling workflow so the non-modelers on your team (cell engineers, program managers, customers of your customers) can run scenarios and read results without touching Python. Useful when the model needs to be used by more people than the person who built it.
Looking for training instead of a built deliverable? See PyBaMM training for R&D teams →
What we can model
Chemistries, model types, data formats, and fitting objectives we work with most often. Other combinations on request. We have not exhausted what the framework supports.
Chemistries
NMC·NCA·LFP·silicon-anode·sodium-ion·solid-state·others on request
Model types
SPM·SPMe·DFN·ECM (0–5 RC pairs)·LumpedSPMR·LumpedSPMeR
Data formats
Maccor·Neware·BioLogic·Arbin·BPX·generic CSV
Fitting objectives
current-driven cycling·cycle aging·EIS·pulse resistance·OCP half-cell·electrode balancing·MSMR
How we work
Engagements are fixed-scope projects, not retainers. We agree the deliverable, the timeline, and the data we need before any work begins.
01
Duration
1–6 months
Scoped per project. No open-ended retainers.
02
Deliverables
parameter sets · designs · run-only Python script
Concrete artifacts your team uses, not slide decks.
03
Ownership
your IP
Every deliverable is wholly owned by you. No licensing terms on consulting output, no carve-outs, no derivative restrictions.
What you take away
Every engagement ends with a parameterized model your team can run forever, plus the documentation and validation evidence that backs it up. Refitting the model against new data, version-controlling it, and sharing it across studies happens in Ionworks Studio.
01
A parameterized model you can run forever
The model class, the validated parameter set, and the cell specification, packaged so your team can load it and run simulations from a Python script. Run-only and yours to keep. No license, no expiry.
02
Validation evidence and a model report
Every parameter linked to the measurement that constrained it. The protocols we used. The fitting metrics, the residuals, the validation runs against held-out data. Enough provenance that six months from now, anyone on your team can trace any number back to its source. And defend it in a design review.
03
For refitting and team workflows: Ionworks Studio
The fitting pipeline itself, model versioning, studies, and the browser interface for non-Python users live in Ionworks Studio. If you want to refit the model against new data later, run sweeps without writing code, or share results across the team, that's what Studio is for. The run-only model from your engagement keeps working without it.
Frequently asked questions
Have a battery modeling problem you can't solve in-house?
Tell us what you're trying to build and we'll tell you which project type fits, or whether we're the wrong call.


