A repository for the atmospheric general circulation model SpeedyWeather.jl to measure and document precipitation at a given location. In particular, this repository contains functions and a documentation to show off and rank model setups that make it rain as much as possible at a certain location (e.g. UK) within a certain period. New model setups can be submitted and are automatically evaluated and ranked in the documentation to create a leader board for the most successful rainmaker.
RainMaker.jl exports RainGauge
which is fully described
in the documentation.
In short,
using SpeedyWeather, RainMaker
# create a model
spectral_grid = SpectralGrid(trunc=31, nlayers=8)
model = PrimitiveWetModel(spectral_grid)
# add the rain gauge as callback
rain_gauge = RainGauge(spectral_grid, lond=-1.25, latd=51.75)
add!(model, rain_gauge)
# run the simulation
simulation = initialize!(model)
run!(simulation, period=Day(20))
# visualise
RainMaker.plot(rain_gauge)
which will produce a Makie.jl plot
New to SpeedyWeather? Read the instructions to know which knobs you could change in SpeedyWeather in order to make it rain more or less. While the most successful rainmaker probably requires a combination of several knobs this is a good starting point.
Create a pull request with a julia script some_file_name.jl
to be placed
in the folder /submissions
. After execution, there needs
to be in the global scope of that script the following variables defined
- a
rain_gauge::RainGauge
having measured precipitation of a SpeedyWeather.jl simulation - an
author::String
, e.g.author = "Kermit the Frog"
- a
description::String
describing your model setup in a few words (<6 probably), e.g.description = "3000m mountain in the atlantic"
or"300K aquaplanet"
.
See Submit to the RainMaker challenge and Rules in the documentation for more details.
The RainMaker challenge is used for teaching. After every such teaching sessions we tag a new release to have a version of the documentation with a leader board corresponding to that session. Afterwards we remove the submissions in the main branch so that for the next teaching session the group does not have to compete with the previous subsmissions. Also because we may make changes to the rules. Leaderboards and corresponding versions of RainMaker.jl are
Install Julia. Then, RainMaker.jl is a registered package, in the Julia REPL simply do
julia> ] add SpeedyWeather, RainMaker
where ]
opens the package manager (the prompt changes to (@v1.11) pkg>
). Alternatively, you can do using Pkg; Pkg.add(["SpeedyWeather", "RainMaker"])
to import the package manager Pkg
and then to add the RainMaker
and SpeedyWeather
package. You can install
just RainMaker and SpeedyWeather will be installed automatically, but in most cases you need SpeedyWeather explicitly
anyway.