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.

Differentiable end-to-end

Every Graph step compiles into a single XLA op. Take jax.grad through 1000-step rollouts; vmap across initial conditions for free.

Node-graph composition

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.

Coupling & multi-rate

Gauss-Seidel and Jacobi Coupling for strongly coupled subsystems, Aitken / IQN-ILS acceleration, GCD-based Multi-rate scheduling, and a Richardson + PI adaptive timestepper.

Neural surrogates

Train an MLP, DeepONet, or FNO Surrogate against a slow physics node, then hot-swap it into the graph at runtime — the rest of the simulation never notices.

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 &middot; Jacobi</i>"]
      Accel["acceleration<br/><i>Aitken &middot; 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 &middot; vmap &middot; 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
    

Developer Guide

Release notes