JuliaCon 2023

Phoenix or cyborg: The anatomy of Earth system software in Julia
07-26, 14:00–15:00 (US/Eastern), 32-144

Several large projects on Earth system modelling are based on Julia. In a field where Fortran traditionally dominates model development we want to gather developers to share how we build Earth system software in Julia. Instead of sharing project surfaces, this minisymposium wants to look deeper into their anatomy. The phoenix: are we reinventing traditional coding structures in a new language? Or the cyborg: does Julia allow us to replace these structures with new, enhanced machinery?


Best practices had to be developed to make the most of a new language in the development of Earth system models. Newer concepts in research software engineering find their way into the Earth system modelling community, particularly through the adoption of new languages. And the user demand on interfaces and interoperability to these models also has changed.

With custom types a domain specific language is created within our models and abstraction minimizes code redundancy. Ideally we would like to execute the same code on all computing architectures at high performance, but what are the best practices to achieve that? Earth system models are large with many interoperating parts. How can we build them with a flexibility that any user can swap in and out parts without diving deep into the code base? And we are aiming towards differentiable models that learn from data, ideally without sacrificing anything from above. This minisymposium aims to cover the following topics, but is not limited to

  • Abstraction, multiple dispatch, types and type hierarchies in large projects
  • Flexibility with respect to the computing architecture: CPUs, GPUs, and others
  • Modularity: easily extendible models and their components
  • Differentiability and optimization: Learning from data
  • Integration of Julia’s machine learning frameworks into models
  • Performance: Achieving and monitoring performance during development
  • Usage of high-performance and parallelism frameworks
  • Interconnectivity of packages across the Julia ecosystem
  • Bad practices: Julia’s detours, unnecessary complexity, or missing features

Schedule, Part 1

  • 14:00 Intro
  • 14:10 Gregory Wagner (MIT) on ocean modelling with Oceananigans.jl
  • 14:30 Skylar Gering (Caltech) on "Discrete Element Sea-Ice Modeling in Julia: Successes and Challenges"
  • 14:50 Milan Klöwer (MIT) on atmospheric modelling with SpeedyWeather.jl
  • 15:10 Julia Sloan/Lenka Novak (Caltech) on "ClimaCoupler.jl: An Extensible ESM Coupler in Julia"

15:30-15:40 Break

Schedule, Part 2

  • 15:40 Sarah Williamson (UT Austin) on "Differentiable Ocean models with Enzyme.jl"
  • 16:00 Lisa Rennels (UC Berkeley) on integrated assessment modelling with Mimi.jl
  • 16:20 Gaël Forget (MIT) on Julia-Fortran interfaces with ClimateModels.jl
  • 16:40 Overflow discussion time
  • 16:50 Outro

Chairs: Milan Klöwer (MIT), Simon Byrne (Caltech), Chris Hill (MIT)

Recording: https://www.youtube.com/watch?v=x9d6WtePul0&t=6475s