Hi everyone, below you will find the summary of the BoF session of JuliaCon2020. I’ve tried to make everything sensible, feel free to correct me in the comments!
Our working definition of “dynamical modelling” is:
Modelling natural (physics/chemistry/biology), engineering, economic or social systems that evolve in time
What does Julia have in terms of dynamical modelling?
- DifferentialEquations.jl
- RigidBodyDynamics.jl, DiffEqBiological.jl, Pumas.jl, NetworkDynamics.jl (and many more that derive from DifferentialEquations.jl)
- DynamicalSystems.jl (it doesn’t actually model anything, but further analyzes)
- Modia and Modia3D.jl (Modelica implementation in Julia)
- CLiMA (https://clima.caltech.edu/) – global climate model in Julia
- Stochastic models of chemical reactions: Catalyst.jl ReactionMechanismSimulator.jl
- Agents.jl : socio-economic systems, agent based modelling, discrete & categorical state spaces
- Spiking neural networks – WaspNet.jl
- DynamicalBilliards.jl, HardSphereDynamics.jl
- Rigorous ODE solutions: TaylorModels.jl and JuliaReach org
- Molly.jl and NBodySImulator.jl for molecular simulation
- Spin-flip models for statistical physics and phase transitions (packages?)
- Optimal control (real-time feedback on model parameters) DiffEqFlux.jl
- Differential-algebraic equations (ODEs with constraints) (https://diffeq.sciml.ai/latest/solvers/dae_solve/)
you will see that some fields do not have packages listed. please let us know whether what you’ve typed is a “request” or something that actually exists
What were the key discussion points?
- A lot of packages exist, and many new come. How do we organize this information?
- Over-arching website for “Dynamical modelling in Julia”? Suggestion: perhaps use the existing “ecosystem” page in the official Julia website?
- Document all the different packages and how they are similar / different
- Should we be helping/motivating new packages join established orgs?
- What is the best way to compare software for modelling in Julia with alternatives in other languages? How to make them fair but also highlight performance?
- How to compare “code complexity”?
- How to better expose concrete (performance) benchmarks?
- How would you compare your “paradigm shifts”?
- There are lots of standard benchmarks around
- Work out what other packages are out there and how to install them for CI
- Trying to come up with examples of how and why Julia is different (e.g. Can you throw in a fundamentally different type?) can lead to not only exposing why doing dynamic modelling in Julia is great, but also lead to new research directions.
- How do we incorporate standardized file formats into the ecosystem? (ie how can we export models for sharing and simulation in other tools? See: Functional Mockup Interface https://fmi-standard.org)
- How do we invite more people to join us (from other languages)?
- Make good tutorials! From people that are actively working on the subjects!
- Make good comparisons (but also as objective as possible) that expose with “facts” why it is a good idea to join us.
- Tutorial sprints/hackathons - coordinate with JuliaStreamers/julialang.live
- Can we do Hybrid dynamical systems (mixing continuous evolution with discrete events) better?
What do we want to have done until next JuliaCon?
- Tips to write code that is good for Julia, doesn’t allocate, but also how to make it work on the GPU / compatible with Zygote. Currently run into the “Two implementation problem” (One non-allocating CPU facing implementation, and a separate GPU/differentiable facing implementation)
- Ege
DiffEqBase.@..
(see Chris’ post) - Related: KernelAbstractions.jl (write code once and run on CPU, threaded, and GPU)
- Ege
- More comparisons with other software (“competitors”) in the talks and package-docs
- Perhaps a “tutorial-thon”?!
- Highlight interplay between Julia packages (e.g. how one can make Agents.jl work with OpenStreetMapX.jl, DynamicalBilliards.jl work with Makie.jl, or OrdinaryDiffEq.jl work with pretty much anything from the huge list of packages in the SciML ecosystem)
“Leftovers”
Here I provide, almost verbatim, various scattered sentences that did not have much thematic connection to where they originally were. As always, feel free to correct, I’ll edit the post as we go along.
Co-simulation
-
Model exchange
-
Comes out of Modelica community
-
Functional mockup interface standard – open standard
-
ReactionNetworkImporters.jl
-
CellMLToolkit.jl
-
GitHub - AnHeuermann/JuliaFMI: Simulator for FMUs in Julia (WIP)
Symbolic transformations on models as compiler passes
- E.g. model-order reduction (lossy)
- Using ModelingToolkit.jl
Data-driven approaches
thanks everyone for joining and providing so many useful points!