MADDENING#
Modular Automatic Differentiation and Data Enhanced Neural-network INteracting Graph — a pure-JAX, autodifferentiable framework for composing physical models from typed nodes connected by unit-aware edges. MADDENING is the base framework on which MIME and the MICROROBOTICA IDE are built.
Every Graph step compiles into a single XLA op. Take
jax.grad through 1000-step rollouts; vmap across initial conditions for free.
Author a Node as a pure function of
(state, dt, inputs). Wire it into the graph with unit-aware
Edges and let the scheduler topologically sort and parallelise it.
Gauss-Seidel and Jacobi Coupling for strongly coupled subsystems, Aitken / IQN-ILS acceleration, GCD-based Multi-rate scheduling, and a Richardson + PI adaptive timestepper.
How MADDENING is wired#
MADDENING is split into a small core (node ABC, typed edges, graph manager), a scheduler that resolves coupling and multi-rate timing, an XLA-compilation path, a surrogate training subsystem, a multi-GPU layer (Cartesian and graph-partitioned sharding plus sharded sparse Krylov solvers), an FMI 3.0 export path, and a cloud layer for distributing all of it. MIME plugs in at the node level — same runtime, microrobotics-specific physics + metadata.
flowchart LR
subgraph CORE["core"]
direction TB
Node["SimulationNode<br/><i>pure (state, dt, in) → out</i>"]
Edge["EdgeSpec<br/><i>typed, unit-aware</i>"]
Graph["GraphManager<br/><i>topological sort + cycle staggering</i>"]
end
subgraph SCHED["scheduling"]
direction TB
Coup["coupling<br/><i>Gauss-Seidel · Jacobi</i>"]
Accel["acceleration<br/><i>Aitken · IQN-ILS</i>"]
Multi["multi-rate<br/><i>GCD scheduler</i>"]
Adapt["adaptive dt<br/><i>Richardson + PI</i>"]
end
XLA["XLA compilation<br/><i>jit · vmap · grad</i>"]
subgraph SURR["surrogates"]
direction TB
Train["MLP / DeepONet / FNO<br/><i>training + data loaders</i>"]
Swap["hot-swap registry"]
end
subgraph CLOUD["cloud / API"]
direction TB
Sky["SkyPilot"]
ZMQ["ZMQ rendezvous"]
WRTC["WebRTC streaming"]
API["FastAPI + WebSocket"]
end
USD["USD codeless schemas<br/><i>graph + trajectory serializer</i>"]
Node --> Graph
Edge --> Graph
Graph --> Coup
Coup --> Accel
Graph --> Multi
Graph --> Adapt
Graph --> XLA
Train --> Swap
Swap --> Graph
Graph --> USD
Graph --> ZMQ
Sky --> ZMQ
Graph --> API
ZMQ -.-> WRTC
MIM["MIME<br/><i>SimulationNode subclasses<br/>+ biocompat / SOUP / regime</i>"]:::ext
Node --> MIM
classDef ext stroke-dasharray:5 3
User Guide
Developer Guide
- Node Authoring Guide
- Testing Standards
- Documentation Standards
- Edge validation: migration guide (v0.2 → v0.3.0)
halo_widthmigration guide (v0.2 → v0.3.0)StaticArraymigration guide (v0.2 → v0.3.0)- Sharded static data and domain integrals (v0.2.1)
- Sharding topology: structured vs unstructured
- Stability Report
- Versioned documentation: design and rollout
- Settled design decisions
- The shape of the live site (target)
- How a user sees it: PyData theme’s version switcher
- How a build produces all the versions
- Why this design over alternatives
- Rollout sequence
- How a developer triggers a version-specific local build
- What goes in a new release’s switcher.json
- Open questions
Validation
Regulatory
Release notes