SpeedyWeather.jl - awesome looking weather modelling DSL in Julia

Well this weather modelling package in Julia looks insanely cool. Very close to the kind of DSL I have been thinking about for infectious disease modelling so great to see:

and this is our Julia prototype (some how we wrote lots of docs and included virtual no real concise examples of composability here):

Note how both dispatch on a set of structs.

Digging deeper this is indeed amazing. See:

Nice parameter handling: Differentiability and Adjoint Model · SpeedyWeather.jl

Nice print method (gives the nice output for all the interim models defs we see: SpeedyWeather.jl/src/models/abstract_models.jl at 68bdc83cd36241a23f84c15038c0b10fe8df1d2b · SpeedyWeather/SpeedyWeather.jl · GitHub

This all depends on a bunch of abstract types which is one of the Julia inheritance mechanisms:

You can see some similarities in our design langauge here:

(I am still very proud of this accumulation approach to iterative latent models and think it could get pretty trendy extended to discrete time ID models i.e renewal extensions).

Lots of similar examples from the JuMP ecosystem and a link to JuMP best practices. Of these I have only looked at HydroModels.jl which looks great. It takes a more algebraic Julia like approach building on ModellingToolkit.jl

More in our neck of the woods there is this nice paper again from the ODE category theory branch of these ideas.

https://royalsocietypublishing.org/doi/full/10.1098/rsta.2021.0309