The MW Battery Engine
The Modak–Walawalkar (MW) Battery Engine is a Bayesian, physics-constrained approach to battery analytics. It reads the ordinary BMS/CAN log a pack already produces and separates the single health number into how cells actually age: resistance growth, lithium-inventory loss, slower internal transport and heat.
Five ingredients, one engine
Together they separate meaningful ageing signals from noise, sensor faults, inconsistencies and misleading indicators.
- Measured battery behaviour
Resistance, relaxation and dQ/dV peaks fitted directly from the raw log.
- Battery physics
Ageing laws such as Arrhenius temperature acceleration, calendar fade and SEI growth, with SoH ≤ 1 and no capacity recovery built in.
- Integrity checks
Ten laws test whether the log itself is physically consistent before anything is concluded from it.
- Bayesian inference
The ageing-law constants are learned as probability distributions, so every result carries its uncertainty.
- Predictive modelling
Many coherent simulated futures through a learned map of battery states give a life distribution, not a guess.
Why physics plus Bayes, and not one without the other
A 20-hour log from one pack is far too little data to learn battery ageing from scratch. The physics priors — the law forms, SoH ≤ 1, no capacity recovery — do the heavy lifting, and the posteriors learned across training packs supply the constants. The log then only has to place each cell on that learned map. That is why the engine can say something useful from ordinary BMS telemetry, and why it can also say clearly where it cannot.
A distribution, not a single answer
A conventional tool answers “what is the SoH?” with one number. A Bayesian engine answers with what is plausible, how plausible, and how much the data actually supports. It decides what the report is allowed to claim.
- PriorWhat physics allows
Law forms (Arrhenius, √t calendar fade, SEI), SoH ≤ 1, no capacity gain.
- DataWhat was observed
Training packs shape the posteriors. Your log is projected in.
- PosteriorWhat we now believe
Law coefficients as distributions; each cell placed on the map with its own σ.
- PredictiveWhat happens next
48 coherent walks through the map give an end-of-life distribution and a health band.
- DecisionWhat you can act on
Probability of end of life within N cycles, percentiles, whether an effect is resolved, and trust via MW distance.
Every value says how far to trust it
Every number in an assessment belongs to one of three groups. The split is deliberate: model estimates can never sit unnoticed among the measurements.
Two families, two jobs
Physics can reveal an inconsistency; the physical cause still needs investigation. Keeping the two families apart is what makes both trustworthy.
Ageing laws: how a cell ages
Arrhenius temperature acceleration, √t calendar fade, SEI growth, cycle ageing, C-rate, SoC and depth-of- discharge stress, plating, swelling, particle cracking. Their coefficients are learned as posteriors and shape every forecast.
- L1Arrhenius factor Ageing rate at your temperature vs 25 °C
- L2Plating window Cold and fast charge
- L3Voltage window Cells inside chemistry limits
- L4Capacity bound SoH ≤ 1
- L5Manifold distance Is your state admissible?
- L6Training range Largest input vs training normaliser
- L7No recovery A forecast path must not gain capacity
Integrity laws: is this log consistent?
Ohm, Arrhenius sign, OCV–SoC, coulomb closure, SoH ≤ 1, voltage window, balance, Joule heating, relaxation and manifold agreement. Each tests measured values against a fire line, scaled by the value’s own uncertainty, so a noisy cell does not fire on noise alone.
- MP1Voltage follows current across steps (Ohm)
- MP2Resistance falls as cells warm
- MP3Resting voltage agrees with BMS SoC
- MP4∫I dt agrees with ΔSoC
- MP5Capacity ≤ nominal
- MP6Cell voltages inside the chemistry window
- MP7String balanced at rest
- MP8Gradient consistent with Joule heating Fired on the reference pack
- MP9Voltage relaxes back after steps
- MP10Manifold SoH agrees with measured
Manifolds instead of hand-solved equations
Solving governing equations for every scenario takes specialist time and compute. The MW Framework replaces that with Bayesian priors and a learned manifold of physically consistent states.
- Step 1
Encode physics as priors
Domain knowledge — thermodynamics, electrochemistry — becomes a Bayesian prior instead of a hand-solved equation.
import pyro import pyro.distributions as dist def battery_prior(): r_int = pyro.sample( "internal_resistance", dist.LogNormal(-2.1, 0.3) ) soh = pyro.sample( "state_of_health", dist.Beta(9.0, 1.2) ) return r_int, soh - Step 2
Learn the manifold
An encoder–decoder pair learns the low-dimensional curved surface that physically consistent battery states actually live on.
- Step 3
Read the distance
A state far from that surface is physically unusual. MW distance measures how far, so the model can say when it is outside what it knows.
MW distance on the reference pack
Knowing when not to trust a forecast is part of the analytics. Above 3σ the model is outside its learned range, and the report says so instead of quoting a life number.
1.7σ this pack: inside the learned map, so the forecast can be used with its stated caveats.
> 3σ outside what the model has learned: do not quote a remaining-life number. Gather more data or retrain.
Where v7 is not yet fully Bayesian
Worth knowing before you describe the system to a specialist. Each gap has a concrete upgrade that closes it.
- MP1–MP10 use fixed fire lines. They report “fired / not fired”, not a posterior probability that the law is violated.
- L1 uses the central value of the activation-energy posterior. The 2.46× factor is shown without the interval that posterior implies.
- The forecast samples the cell’s latent state, not the law coefficients, so the credible window understates coefficient uncertainty.
- Latent σ is capped at the prior (σ ≤ 1). This keeps far off-manifold bands from blowing up, but also means the band cannot widen as much as it should.
The same engine as a physics validation layer
Battery analytics is our commercial offering. The MW Framework underneath it is general: only the priors change.
A physics constraint layer for world models
AI is moving from text to the physical world. World models can drift over long horizons — inventing energy, violating conservation, producing impossible states. MW is designed to plug in as a physics constraint layer that checks whether a predicted state is physically valid. We do not compete with world-model labs; we aim to complete them.
Built in India
Not by outspending anyone on hardware, but by extracting exact answers from imperfect means — a long Indian tradition from Aryabhata to Ramanujan. We are building a sovereign physics engine for India’s strategic future.
Validated against published battery research
Trained only on electrochemical priors, the engine independently reproduced a leading battery researcher’s published SEI-cracking findings on his own data, a result he has confirmed.
One architecture, other domains
The same engine powers our RF work, detecting GNSS spoofing that per-band threshold systems miss. Our GitHub repository hosts an open demo of MW applied to verticals other than batteries.
See what your own battery data is telling you.
Share a BMS/CAN log. We run it through the MW Battery Engine and send back an MW Battery Assessment Report: findings, how sure we are, and what to do next. The first assessment is free.