JuliaDynamics / NetworkDynamics.jl

Julia package for simulating Dynamics on Networks
https://juliadynamics.github.io/NetworkDynamics.jl/dev/
MIT License
128 stars 13 forks source link

NetworkDynamics

A package for working with dynamical systems on complex networks. NetworkDynamics.jl provides an interface between Graphs.jl and DifferentialEquations.jl. It allows to define several types of dynamic and static nodes and edges and to link them up in order to create complex network dynamics.

The behavior of a node or an edge can be described by algebraic equations, by differential algebraic equation (DAEs) in mass matrix form or by ordinary differential equations (ODE). Stochastic ordinary differential equations (SDE) can be implemented as a two-layer network. For details see the docs.

Getting started

Check out the getting started example in our docs.

An introductory talk was recorded at JuliaCon2020.

Benchmarks

In our benchmark on the Kuramoto model NetworkDynamics.jl + DifferentialEquations.jl proved to be an especially performant solution, see https://github.com/PIK-ICoNe/NetworkDynamicsBenchmarks.

PowerDynamics

PowerDynamics.jl is an open-source framework for dynamic power grid modeling and analysis build on top of NetworkDynamics.jl.

Citations

If you use NetworkDynamics.jl in your research publications, please cite our paper.

@article{NetworkDynamics.jl-2021,
    author = {Lindner, Michael and Lincoln, Lucas and Drauschke, Fenja and Koulen, Julia M. and Würfel, Hans and Plietzsch, Anton and Hellmann, Frank},
    doi = {10.1063/5.0051387},
    eprint = { https://doi.org/10.1063/5.0051387 },
    journal = {Chaos: An Interdisciplinary Journal of Nonlinear Science},
    number = {6},
    pages = {063133},
    title = {NetworkDynamics.jl—Composing and simulating complex networks in Julia},
    url = { https://doi.org/10.1063/5.0051387 },
    volume = {31},
    year = {2021}
}

Funding

Development of this project was in part funded by the German Federal Ministry for Economic Affairs and Climate Action as part of the OpPoDyn-Project (Project ID 01258425/1, 2024-2027).