List of submissions

It follows the code and plot of the RainGauge of all RainMaker submissions to /submissions sorted in alphabetical order of the filename.

Charlotte Merchant: The Rapture: Big Super Mega Ultra Clapped Humid North Sea Mountain HR Injection Under More Pressure Initially and Corrected

path: /submissions/the_rapture.jl

rank: 1. of 16 submissions

# 1. All precipitation measured by the rain gauge has to be simulated by SpeedyWeather over a 20-day period.
# 2. The rain gauge must be placed at the agreed longitude and latitude coordinates.
# 3. No changes to the following physics inside SpeedyWeather: Large-scale condensation, convection, surface evaporation, or radiation.
# 4. Sea and land surface temperatures cannot exceed 305K anywhere during the simulation.
# 5. The simulation must remain stable over the 20-day period.
author = "Charlotte Merchant"
description = "The Rapture: Big Super Mega Ultra Clapped Humid North Sea Mountain HR Injection Under More Pressure Initially and Corrected"

using SpeedyWeather, RainMaker

spectral_grid = SpectralGrid(trunc=100, nlayers=8)
atm = EarthAtmosphere(spectral_grid)
clausius_clapeyron = ClausiusClapeyron(spectral_grid, atm, e₀=0.00001)
model = PrimitiveWetModel(spectral_grid; clausius_clapeyron)

Base.@kwdef struct inject <: SpeedyWeather.AbstractCallback
    schedule::Schedule = Schedule(every=Hour(1))
end

function SpeedyWeather.initialize!(
    callback::inject,
    progn::PrognosticVariables,
    diagn::DiagnosticVariables,
    model::AbstractModel,
)
    initialize!(callback.schedule, progn.clock)
end

function SpeedyWeather.callback!(
    callback::inject,
    progn::PrognosticVariables,
    diagn::DiagnosticVariables,
    model::AbstractModel,
)
    isscheduled(callback.schedule, progn.clock) || return nothing

    set!(progn, model.geometry, humid=(λ, φ, σ) -> 0.16)
    set!(progn, model.geometry, temp=(λ, φ, σ) -> σ == 1 ? 305 : (σ > 0.8 ? 305 - 10 * (1 - σ) : (σ > 0.5 ? 290 + 5 * (1 - σ) : 250)))
	set!(progn, model.geometry, u=(λ, φ, σ) -> -5.0)
	set!(progn, model.geometry, v=(λ, φ, σ) -> 2.0)
    set!(progn, model.geometry, div=(λ, φ, σ) -> σ > 0.8 ? -0.005 : (σ > 0.5 ? 0.0 : 0.005))
	set!(progn, model.geometry, pres=20)
end

SpeedyWeather.finalize!(::inject, args...) = nothing

rain_gauge = RainGauge(spectral_grid, lond=-1.25, latd=51.75)
add!(model, rain_gauge)

add!(model, inject())

simulation = initialize!(model)

H, λ₀, φ₀, σ = 4000, 2, 51, 5
set!(model, orography=(λ,φ) -> H*exp(-spherical_distance((λ,φ), (λ₀,φ₀), radius=360/2π)^2/2σ^2))

set!(simulation, humid=0.16)
set!(simulation, pres=20)

run!(simulation, period=Day(20))

RainMaker.plot(rain_gauge)
[ Info: Time step changed from 570297 to 540000 milliseconds (-5%) to match output frequency.
[ Info: Time step changed from 570297 to 540000 milliseconds (-5%) to match output frequency.
[ Info: Scheduler adjusted from every 1 hour to every 1 hour, 3 minutes to match timestep.

submission: the_rapture

Danny Ash, Jowan Fromentin - Brain Drain: Rain Rain go away

path: /submissions/brain_drain.jl

rank: 2. of 16 submissions

mountain_positions_canada = [
    (-3.35, 58.67),
    (-4.87, 61.61),
    (-6.74, 64.60),
    (-9.12, 67.60),
    (-12.22, 70.58),
    (-16.39, 73.50),
    (-22.23, 76.30),
    (-30.76, 78.87),
    (-43.59, 81.04),
    (-62.35, 82.50)
]
author = "Danny Ash, Jowan Fromentin - Brain Drain"
description = "Rain Rain go away"

using SpeedyWeather, RainMaker
using CairoMakie

spectral_grid = SpectralGrid(trunc=31, nlayers=5)
time_stepping = Leapfrog(spectral_grid, Δt_at_T31=Minute(0.5))
# define aquaplanet
ocean = AquaPlanet(spectral_grid, temp_equator=200, temp_poles=305)
land_sea_mask = AquaPlanetMask(spectral_grid)
orography = NoOrography(spectral_grid)
model = PrimitiveWetModel(spectral_grid; ocean, land_sea_mask, orography, time_stepping=time_stepping)

rain_gauge = RainGauge(spectral_grid, lond=-1.25, latd=51.75)
add!(model, rain_gauge)

simulation = initialize!(model)
set!(simulation, humid=6, pres =15.1)

# build the wall
H, λ₀, φ₀, σ = 8000, 2, 51, 1     # height, lon, lat position, and width
H_c = 5000
set!(model, orography=(λ, φ) -> begin
orography = 0.0
for (λ₀, φ₀) in mountain_positions_canada
    orography += H_c * exp(-spherical_distance((λ, φ), (λ₀, φ₀), radius=360/2π)^2 / 2σ^2)
end
orography
end, add=true)

set!(model, orography=(λ, φ) -> begin
orography = 0.0
mountain_positions = [(0, 50), (1, 50), (2, 50), (0, 55), (1, 55), (2, 55), (0, 60), (1, 60)]
for (λ₀, φ₀) in mountain_positions
    orography += H * exp(-spherical_distance((λ, φ), (λ₀, φ₀), radius=360/2π)^2 / 2σ^2)
end
orography
end, add=true)




# dig the hole
H, λ₀, φ₀, σ = -6000, -1.25, 51.75, 100.5     # height, lon, lat position, and width
set!(model, orography=(λ,φ) -> H*exp((-(λ-λ₀)^2 - (φ-φ₀)^2)/2σ^2), add=true)


run!(simulation, period=Day(20))
total_precip = maximum(rain_gauge.accumulated_rain_large_scale) + maximum(rain_gauge.accumulated_rain_convection)

println(total_precip)
RainMaker.plot(rain_gauge)

# heatmap(model.orography.orography)
# println(maximum(simulation.prognostic_variables.ocean.sea_surface_temperature))
┌ Warning: NaN or Inf detected at time step 5166
@ SpeedyWeather ~/.julia/packages/SpeedyWeather/pliqj/src/output/feedback.jl:144
1.4835839e6

submission: brain_drain

Amy and breddy: Reddy4rain

path: /submissions/reddy4rain.jl

rank: 3. of 16 submissions

author = "Amy and breddy"
description = "Reddy4rain"

using SpeedyWeather, RainMaker

spectral_grid = SpectralGrid(trunc=12, nlayers=3, Grid=FullGaussianGrid)  # default resolution
rain_gauge = RainGauge(spectral_grid, lond=358.75, latd=51.75)

model = PrimitiveWetModel(spectral_grid)

model.callbacks

simulation = initialize!(model, time=DateTime(2024, 10, 1))

# (; a, b) = struct unpacks the fields a, b in struct identified by name, equivalent to
# a = struct.a and b = struct.b
(; precip_large_scale, precip_convection) = simulation.diagnostic_variables.physics
total_precipitation = precip_large_scale + precip_convection
total_precipitation *= 1000# convert m to mm

# add two Gaussian mountains
λ1, λ2 = (320, 345)    # longitude positions [˚E]
φ₀ = 50                 # latitude [˚N]\
σ = 5                 # width [˚]
H = 7000

# first mountain, radius=360/2π to have distance in ˚ again (not meters)
set!(model, orography=(λ,φ) -> H*exp(-spherical_distance((λ,φ), (λ1,φ₀), radius=360/2π)^2/2σ^2), add=true)

# and add second
set!(model, orography=(λ,φ) -> H*exp(-spherical_distance((λ,φ), (λ2,φ₀), radius=360/2π)^2/2σ^2), add=true)

simulation.diagnostic_variables.physics.precip_large_scale .= 0
simulation.diagnostic_variables.physics.precip_convection .= 0

set!(simulation, sea_surface_temperature=(λ, φ) -> (30 < φ < 60) && (300 < λ < 360) ? 2 : 0, add=true)

# add one rain gauge the measures the whole simulation
rain_gauge_from_beginning  = RainGauge(spectral_grid, lond=-1.25, latd=51.75)
add!(model, rain_gauge_from_beginning)

run!(simulation, period=Week(1))

# add one rain gauge the measures the whole simulation
rain_gauge_from_w2 = RainGauge(spectral_grid, lond=-1.25, latd=51.75)
add!(model, rain_gauge_from_w2)

run!(simulation, period=Week(2))

set!(simulation, humid=0.3, pres=15.1)

# add another rain gauge that only starts measuring
# after that week we already simulated
rain_gauge_after_spinup  = RainGauge(spectral_grid, lond=-1.25, latd=51.75)
add!(model, rain_gauge_after_spinup)
add!(model, rain_gauge)
run!(simulation, period=Day(20))

# now compare them, from the beginning
rain_gauge_from_beginning
┌ Warning: NaN or Inf detected at time step 138
@ SpeedyWeather ~/.julia/packages/SpeedyWeather/pliqj/src/output/feedback.jl:144

submission: reddy4rain

Isaac Campbell: Up initial humidity and lower saturation vapour pressure.

path: /submissions/isaaccampbell.jl

rank: 4. of 16 submissions

author = "Isaac Campbell"
description = "Up initial humidity and lower saturation vapour pressure."

using SpeedyWeather, RainMaker

# Create grid
spectral_grid = SpectralGrid(trunc=31, nlayers=8)

# Alter the laws of physics... lower saturation vapour pressure to 50Pa
atm = EarthAtmosphere(spectral_grid)
clausius_clapeyron = ClausiusClapeyron(spectral_grid, atm, e₀=50)

model = PrimitiveWetModel(spectral_grid; clausius_clapeyron)

# 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, time=DateTime(2000, 8, 1))

# Increase initial humidity
set!(simulation, humid=0.177)
run!(simulation, period=Day(20))

# visualise
RainMaker.plot(rain_gauge)

submission: isaaccampbell

Alex Dobra and Charlotte Wargniez: Aqua planet, change humidity to ridiculous number, add Shirin's mountain, make it cold

path: /submissions/ac_humid.jl

rank: 5. of 16 submissions

author = "Alex Dobra and Charlotte Wargniez"
description = "Aqua planet, change humidity to ridiculous number, add Shirin's mountain, make it cold"

using SpeedyWeather, RainMaker

spectral_grid = SpectralGrid(trunc=31, nlayers=5)
model = PrimitiveWetModel(spectral_grid)

# Set up aqauaplanet but add large mountain in "North Sea" after initialization!
ocean = AquaPlanet(spectral_grid, temp_equator=305, temp_poles=305
)
land = ConstantLandTemperature(spectral_grid, temperature=275)
model = PrimitiveWetModel(spectral_grid; ocean, land)

# Add rain gauge
rain_gauge = RainGauge(spectral_grid, lond=-1.25, latd=51.75)
add!(model, rain_gauge)

# Initialize and run simulation
simulation = initialize!(model, time=DateTime(2000, 6, 21))

# Add mountain now! details for mountain
H, λ₀, φ₀, σ = 5000, 2, 51, 3     # height, lon, lat position, and width
set!(model, orography=(λ,φ) -> H*exp(-spherical_distance((λ,φ), (λ₀,φ₀), radius=360/2π)^2/2σ^2))

# make mountain Land
set!(model, land_sea_mask=(λ, φ) -> H*exp(-spherical_distance((λ,φ), (λ₀,φ₀), radius=360/2π)^2/2σ^2), add=true)


# set humidity
set!(simulation, humid=9e-2,
# temp=275
)

# Run simulation for 20 days
run!(simulation, period=Day(20))

RainMaker.plot(rain_gauge, rate_Δt=Hour(1))
┌ Warning: Land-sea mask was not set to values in [0, 1] but in [0.0, 4370.175]. Clamping.
@ SpeedyWeather ~/.julia/packages/SpeedyWeather/pliqj/src/physics/land_sea_mask.jl:70

submission: ac_humid

Minqi: humid & montain

path: /submissions/minqi_submission.jl

rank: 6. of 16 submissions

author = "Minqi"
description = "humid & montain"

using SpeedyWeather, RainMaker
spectral_grid = SpectralGrid(trunc=25, nlayers=8)
time_stepping = Leapfrog(spectral_grid, Δt_at_T31=Minute(10))
model = PrimitiveWetModel(spectral_grid; time_stepping)

rain_gauge = RainGauge(spectral_grid, lond=-1.25, latd=51.75)
add!(model, rain_gauge)

simulation = initialize!(model)
set!(simulation, humid=0.185)
H, λ₀, φ₀, σ = 10000, 2, 51, 1
set!(model, orography=(λ,φ) -> H*exp(-spherical_distance((λ,φ), (λ₀,φ₀), radius=360/2π)^2/2σ^2))

run!(simulation, period=Day(20))

submission: minqi_submission

Maren: Hot aqua planet with SST anomalie

path: /submissions/maren.jl

rank: 7. of 16 submissions

author = "Maren"
description = "Hot aqua planet with SST anomalie"

using SpeedyWeather, RainMaker
using CairoMakie

# create a model
spectral_grid = SpectralGrid(trunc=31, nlayers=8)
ocean = AquaPlanet(spectral_grid, temp_equator = 300.0, temp_poles= 300.0)
model = PrimitiveWetModel(spectral_grid; ocean)

# add the rain gauge as callback
rain_gauge = RainGauge(spectral_grid, lond=-1.25, latd=51.75)
add!(model, rain_gauge)

simulation = initialize!(model)
set!(simulation, humid=0.18)
set!(simulation, sea_surface_temperature=(λ, φ) -> (50 < φ < 53) && (50 < λ < 60) ? 5 : 0, add=true)
run!(simulation, period=Day(20))

submission: maren

George: default

path: /submissions/grabin.jl

rank: 8. of 16 submissions

author = "George"

using SpeedyWeather, RainMaker

# create a model
spectral_grid = SpectralGrid(trunc=31, nlayers=8)
ocean = AquaPlanet(spectral_grid)
land = ConstantLandTemperature(spectral_grid)
model = PrimitiveWetModel(spectral_grid; ocean)

# 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, time=DateTime(2000, 10, 25))
simulation.prognostic_variables.clock

# CHANGING sea surface and land temperature
simulation = initialize!(model)
set!(model, land_sea_mask=0)    # all ocean
set!(simulation, sea_surface_temperature=(λ, φ) -> (30 < φ < 60) && (270 < λ < 360) ? 1 : 0, add=true)

simulation = initialize!(model)
set!(model, land_sea_mask=1)    # all land
set!(simulation, sea_surface_temperature=(λ, φ) -> (0 < φ < 360) && (270 < λ < 360) ? 10 : 0, add=true)

sst = simulation.prognostic_variables.ocean.sea_surface_temperature

# ADDING A mountain
H, λ₀, φmax = 2000, 15, 60

# set to a global constant
set!(model, orography=0)

# add two Gaussian mountains
λ1, λ2  = (120, 240)    # longitude positions [˚E]
φ₀ = 44                 # latitude [˚N]
σ = 7.4                  # width [˚]

# himalayan mountains lead to more rain than ones in eastern europe...

# first mountain, radius=360/2π to have distance in ˚ again (not meters)
set!(model, orography=(λ,φ) -> H*exp(-spherical_distance((λ,φ), (λ1,φ₀), radius=360/2π)^2/2σ^2), add=true)

# and add second
set!(model, orography=(λ,φ) -> H*exp(-spherical_distance((λ,φ), (λ2,φ₀), radius=360/2π)^2/2σ^2), add=true)
set!(simulation, humid=0.18)
run!(simulation, period=Day(20))

submission: grabin

Thomas Stone: Humid

path: /submissions/thomas.jl

rank: 9. of 16 submissions

author = "Thomas Stone"
description = "Humid"

using SpeedyWeather, RainMaker

# create a model
spectral_grid = SpectralGrid(trunc=31, nlayers=8)
ocean = AquaPlanet(spectral_grid)
model = PrimitiveWetModel(spectral_grid; ocean)

# 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, time=DateTime(2000,10,25))
simulation.prognostic_variables.clock

# add 2 K to N Atlantic
simulation = initialize!(model)
set!(model, land_sea_mask=0)    # all ocean!
set!(simulation, sea_surface_temperature=(λ, φ) -> (30 < φ < 60) && (270 < λ < 360) ? 10 : 0, add=true)


# set to a global constant
set!(model, orography=0)

# add two 2000m ridges at +-30˚E from 60˚S to 60˚N
H, λ₀, φmax = 20000, 15, 60

# add two Gaussian mountains
λ1, λ2  = (120, 240)    # longitude positions [˚E]
φ₀ = 44                 #latitude
σ = 7.4               # width [˚]

# first mountain, radius=360/2π to have distance in ˚ again (not meters)
set!(model, orography=(λ,φ) -> H*exp(-spherical_distance((λ,φ), (λ1,φ₀), radius=360/2π)^2/2σ^2), add=true)

# and add second
set!(model, orography=(λ,φ) -> H*exp(-spherical_distance((λ,φ), (λ2,φ₀), radius=360/2π)^2/2σ^2), add=true)

set!(simulation, humid=0.18)
run!(simulation, period=Day(20))


# visualise
RainMaker.plot(rain_gauge)

submission: thomas

Bradley and Lukas: big humid

path: /submissions/big_humid.jl

rank: 10. of 16 submissions

author = "Bradley and Lukas"
description = "big humid"

using SpeedyWeather, RainMaker

spectral_grid = SpectralGrid(trunc=60, nlayers=8) #60

ocean = AquaPlanet(spectral_grid, temp_equator=302, temp_poles=300)
model = PrimitiveWetModel(spectral_grid; ocean=ocean)

rain_gauge = RainGauge(spectral_grid, lond=-1.25, latd=51.75)
add!(model, rain_gauge)

simulation = initialize!(model)


H, λ₀, φ₀, σ = 4000, 2, 51, 5    # height, lon, lat position, and width
set!(model, orography=(λ,φ) -> H*exp(-spherical_distance((λ,φ), (λ₀,φ₀), radius=360/2π)^2/2σ^2))


set!(simulation, humid=0.12)

run!(simulation, period=Day(20))

submission: big_humid

Jordan: Up initial humidity and lower saturation vapour pressure.

path: /submissions/jordan.jl

rank: 11. of 16 submissions

author = "Jordan"

using SpeedyWeather, RainMaker

spectral_grid = SpectralGrid(trunc=31, nlayers=8)

ocean = AquaPlanet(spectral_grid, temp_equator=302, temp_poles=301)
land = ConstantLandTemperature(spectral_grid)

model = PrimitiveWetModel(spectral_grid; ocean, land)

# add the rain gauge as callback
rain_gauge = RainGauge(spectral_grid, lond=-1.25, latd=51.75)
add!(model, rain_gauge)

simulation = initialize!(model)
set!(model, land_sea_mask=0)    # all ocean!
set!(simulation, sea_surface_temperature=(λ, φ) -> (10 < φ < 20) && (52 < λ < 58) ? 3 : 0.5, add=true)

# set to a global constant
set!(model, orography=0)

H, λ₀, φmax = 10000, 15, 60

# add two Gaussian mountains
λ1, λ2  = (120, 240)    # longitude positions [˚E]
φ₀ = 45                 # latitude [˚N]
σ = 5                   # width [˚]

# first mountain, radius=360/2π to have distance in ˚ again (not meters)
set!(model, orography=(λ,φ) -> H*exp(-spherical_distance((λ,φ), (λ1,φ₀), radius=360/2π)^2/2σ^2), add=true)

set!(simulation, humid=0.15)

run!(simulation, period=Day(20))

submission: jordan

Shirin Ermis: Aqua-planet simulation with a mountain

path: /submissions/aquaplanet_mountain.jl

rank: 12. of 16 submissions

author = "Shirin Ermis"
description = "Aqua-planet simulation with a mountain"

using SpeedyWeather, RainMaker

spectral_grid = SpectralGrid(trunc=31, nlayers=10)
model = PrimitiveWetModel(spectral_grid)

# Set up aqauaplanet but add large mountain in "North Sea" after initialization!
ocean = AquaPlanet(spectral_grid, temp_equator=302, temp_poles=300)
land_sea_mask = AquaPlanetMask(spectral_grid)
model = PrimitiveWetModel(spectral_grid; ocean, land_sea_mask)

# Add rain gauge
rain_gauge = RainGauge(spectral_grid, lond=-1.25, latd=51.75)
add!(model, rain_gauge)

# Initialize and run simulation
simulation = initialize!(model, time=DateTime(2000, 9, 1))

# Add mountain now! details for mountain
H, λ₀, φ₀, σ = 4000, 2, 51, 5     # height, lon, lat position, and width
set!(model, orography=(λ,φ) -> H*exp(-spherical_distance((λ,φ), (λ₀,φ₀), radius=360/2π)^2/2σ^2))

# Run simulation for 20 days
run!(simulation, period=Day(20))

# Plot the results (not needed for submission but doesn't hurt!)
using CairoMakie
# heatmap(model.orography.orography, title="My orogoraphy [m]") # check orography
RainMaker.plot(rain_gauge, rate_Δt=Hour(1))

submission: aquaplanet_mountain

Tim Reichelt: North Sea mountain

path: /submissions/north_sea_mountain.jl

rank: 13. of 16 submissions

author = "Tim Reichelt"
description = "North Sea mountain"

using SpeedyWeather, RainMaker

spectral_grid = SpectralGrid(trunc=31, nlayers=8)
model = PrimitiveWetModel(spectral_grid)

rain_gauge = RainGauge(spectral_grid, lond=-1.25, latd=51.75)
add!(model, rain_gauge)

simulation = initialize!(model)

# add a massive mountain at 51.75°N, 0°W, *after* model initialization
# using spherical_distance for geodesic distances, use radius=360/2π for distance in degrees
H, λ₀, φ₀, σ = 4000, 2, 51, 5     # height, lon, lat position, and width
set!(model, orography=(λ,φ) -> H*exp(-spherical_distance((λ,φ), (λ₀,φ₀), radius=360/2π)^2/2σ^2))

run!(simulation, period=Day(20))

submission: north_sea_mountain

Milan: default

path: /submissions/default.jl

rank: 14. of 16 submissions

author = "Milan"
description = "default"

using SpeedyWeather, RainMaker

spectral_grid = SpectralGrid(trunc=31, nlayers=8)
model = PrimitiveWetModel(spectral_grid)

rain_gauge = RainGauge(spectral_grid, lond=-1.25, latd=51.75)
add!(model, rain_gauge)

simulation = initialize!(model)
run!(simulation, period=Day(20))

submission: default

Milan: Aquaplanet

path: /submissions/aquaplanet.jl

rank: 15. of 16 submissions

author = "Milan"
description = "Aquaplanet"

using SpeedyWeather, RainMaker

spectral_grid = SpectralGrid(trunc=31, nlayers=8)

# define aquaplanet
ocean = AquaPlanet(spectral_grid, temp_equator=302, temp_poles=273)
land_sea_mask = AquaPlanetMask(spectral_grid)
orography = NoOrography(spectral_grid)
model = PrimitiveWetModel(spectral_grid; ocean, land_sea_mask, orography)

rain_gauge = RainGauge(spectral_grid, lond=-1.25, latd=51.75)
add!(model, rain_gauge)

simulation = initialize!(model)
run!(simulation, period=Day(20))

submission: aquaplanet

Milan: Atlantic mountain

path: /submissions/atlantic_mountain.jl

rank: 16. of 16 submissions

author = "Milan"
description = "Atlantic mountain"

using SpeedyWeather, RainMaker

spectral_grid = SpectralGrid(trunc=31, nlayers=8)
model = PrimitiveWetModel(spectral_grid)

rain_gauge = RainGauge(spectral_grid, lond=-1.25, latd=51.75)
add!(model, rain_gauge)

simulation = initialize!(model)

# add a massive mountain at 50°N, 35°W, *after* model initialization
H, λ₀, φ₀, σ = 4000, 325, 50, 5     # height, lon, lat position, and width
set!(model, orography=(λ,φ) -> H*exp((-(λ-λ₀)^2 - (φ-φ₀)^2)/2σ^2), add=true)

run!(simulation, period=Day(20))

submission: atlantic_mountain