I am happy to announce a major re-release of NetworkDynamics.jl!
NetworkDynamics is a package for simulating dynamical processes on networks, such as diffusion processes or oscillator networks. It allows you to build the system in a modular way by splitting the graph topology from the dynamical models for nodes and edges, which are modeled as DAE systems with an input-output structure.
ND then essentially helps you build a performant RHS for your overall network that is compatible with DiffEq.jl.
The new release contains many new features:
- Symbolic indexing using SymbolicIndexingInterface.jl: access states and parameters of your system in a symbolic way. This includes “observed”, such as component outputs, which are not necessarily states in the ODE sense (see docs).
- Integration with ModelingToolkit.jl: use MTK to build edge and vertex models (see docs).
- Improved mathematical model and interface: Clear separation between internal states and outputs of components offers a unified modeling approach for what has been known as “ODE” and “Static” components in the past (see docs).
- Different execution schemes: from sequential over threaded to GPU parallel.
Unfortunately, some more niche features, such as delay differential equations, didn’t make it into the new release (see NEWS.md). If you’ve been using those features before, please reach out to us. We’re interested in learning about those use cases.
Future plans
Some features didn’t make it to this release but are on the horizon. Most notable:
- External inputs: define external inputs for components to allow for not-fully decentralized control schemes.
Callback definition on the component level: Attach “local” callbacks to your components and let ND.jl handle the construction of efficient network-wide callbacks. - Improved AD support, especially for SciMLSensitivity.jl usage.
This release is part of a bigger project whose goal is to revamp PowerDynamics.jl, a library for dynamic simulations of power grids. This upcoming rewrite will use all the newly developed backend features, for example a fully MTK based model library. So stay tuned for updates on that.