/GhilSellersEBM.jl

Julia implementation of the Ghil-Sellers 1D Energy Balance Model

Primary LanguageJuliaMIT LicenseMIT

GhilSellersEBM

Dev Build Status

This package provides an implementation of the Ghil Sellers 1D Energy Balance Model. It is based on three publications:

The package does not include a solver, it provides everything needed to discretize the PDE and set it up so that it can be solved e.g. with DifferentialEquations.jl. The documentation provides an introduction to the model as well.

Example Use

Solving the model with two initial conditions: one leading to cold and one to a warm state.

using GhilSellersEBM, DifferentialEquations, Plots 

x = (-90.:5.:90.)./90.
grid = Grid(x)
p = ContinousGhilSellersParameters(grid);

tspan = (0.,1e8)
prob = ODEProblem(ghilsellers_ebm!, 220*ones(p.g.N), tspan, p)

sol_1 = solve(prob)
sol_2 = solve(remake(prob, u0=290*ones(p.g.N)))

t_plot = range(tspan[1],tspan[2],length=200)
anim = @animate for it  t_plot
    plot(p.ϕ, sol_1(it), xlabel="Latitude ϕ [rad]", label="Cold State", ylims=[210,300], ylabel="Temperature T [K]", title="Temperature Profile of Ghil Sellers EBM")
    plot!(p.ϕ, sol_2(it), label="Warm State", ylims=[200,300])
end 
gif(anim, "ebm-anim.gif", fps=10)

docs/src/ebm-anim.gif