docsdev docsstable CI codecov Package Downloads

ConceptualClimateModels.jl is a Julia package for creating and analysing conceptual models of climate, such as energy balance models, glaciation cycle models, or climate tipping models. Such conceptual models are simplified representation of basic climate components, and the processes that connect them, such as flows of energy or mass. Within this context such models are typically coupled ordinary differential equations (with partial or stochastic DEs also being possible).

ConceptualClimateModels.jl accelerates both modelling and analysis aspects of working with such models by:

  • Building upon ModelingToolkit.jl for creating equations from symbolic expressions.
  • Utilizing ProcessBasedModelling.jl to provide a field-specific framework that allows easily testing different physical hypotheses regarding how climate variables couple to each other, or how climate processes are represented by equations.
  • Offering many predefined processes from current literature and ongoing research. All predefined processes cite the literature rigorously using BiBTeX.
  • Being easy to extend with more climate variables or physical processes.
  • Allowing the straightforward coupling of different conceptual models with each other.
  • Automating the naming of custom parameters relating to existing climate processes.
  • Integrating with DynamicalSystems.jl to automate the start-up phase of typical nonlinear dynamics based workflows.

with other features coming soon, such as:

  • Support for latitudinal models (where each variable is vector-valued over latitude circles)
  • Support for stochastic ordinary differential equations

To install it, run import Pkg; Pkg.add("ConceptualClimateModels").

All further information is provided in the documentation, which you can either find online or build locally by running the docs/make.jl file.

ConceptualClimateModels.jl development is funded by UKRI's Engineering and Physical Sciences Research Council, grant no. EP/Y01653X/1 (grant agreement for a EU Marie Sklodowska-Curie Postdoctoral Fellowship).


To get started with ConceptualClimateModels.jl see the tutorial. Predefined processes that can be part of a model are in the predefined processes page. See the examples for a couple of applications.

Asking questions

There are three options for asking questions:

  1. As a new post in the official Julia discourse and ask a question under the category Specific Domains > Modelling & Simulations, also using dynamical-systems as a tag.
  2. As a message in our channel #dynamics-bridged in the Julia Slack workplace.
  3. By opening an issue directly on the GitHub page of DynamicalSystems.jl while providing a Minimal Working Example. This is the most useful approach when you encounter unexpected behaviour.


There are many ways to contribute to ConceptualClimateModels.jl:

  1. Just use it! Share it with your colleagues if it was useful for you, and report unexpected behaviour if you find any.
  2. Suggest processes that you think should be included in our library. This should be done by opening a new GitHub issue that describes the process and gives references to papers using the method.
  3. Contribute code by adding new documentation examples.
  4. Contribute code by implementing new processes! That is by far the most impactful way to contribute to the library.

Contributed code must be documented per the standards of DynamicalSystems.jl.