
Projects
Discrete-Element Sea Ice Modeling
PI: Andrew Thompson (Divisions of Geological and Planetary Science and Engineering and Applied Science)
SASE: Skylar Gering, Scholar
Climate projection models commonly underestimate the decline of arctic sea ice extent and concentration. A potential source of model uncertainty arises from the extreme simplification of sea ice dynamics; sea ice is frequently represented as a single, unfragmented ice sheet to reduce computational complexity. However, satellite imagery reveals that the sea ice pack is composed of discrete ice pieces spanning a large range of scales. Regions with many interacting ice pieces are often the fastest melting and potentially vital to our understanding of climate change impacts.
To understand these important regions, researchers developed discrete-element sea ice models (DEMs). DEMs represent each floe (piece of sea ice) as an individual element and allow element interactions, calculating fine-scale physics. Most DEMs represent the ice pack as a uniform set of unchanging shapes, such as disks or squares. To allow for more realistic computations, Dr. Georgy Manucharyan’s research team at the University of Washington developed the SubZero sea-ice DEM, which represents each floe as a polygon that can change in shape and mass over time. The original SubZero code base was written in MATLAB. To improve performance and usability, it was decided the SubZero code should be ported to the Julia programming language.
Caltech’s Dr. Andy Thompson, in collaboration with Dr. Manucharyan, partnered with the Schmidt Academy to have the Scholar redesign and improve the SubZero code base in Julia. The focus of the redesign was on increasing ease-of-use and improving performance. Using Subzero.jl, users are now able to easily create customized compuautions within a single script for varying experimental needs. Users define everything from the boundary types to the ocean interpolation schemes and can easily turn on and tune various physical processes. Additionally, the new code takes advantage of Julia’s multiple dispatch paradigm to encourage users to extend the code and add any features not yet provided, without having to make source code modifications. These changes allow for simple, idealized experiments for process studies, as well as complex realistic simulations mimicking satellite imagery.
The redesign also dramatically improved code performance. For a simple experiment that simulates ice floes in an ocean current, we see final performance improvements of almost two orders of magnitude over MATLAB. Much of this improvement occurred in the first year of the project (Julia 2023) due to Julia’s performant nature and targeted algorithm improvements.
However, during the second year, the Scholar determined that the polygon clipping library, used to take the union, difference, and intersection of interacting floes, was a major performance bottleneck. At that time, there were no comprehensive, native Julia computational geometry libraries. To solve this problem, the Scholar, along with two Julia community members, developed a new computational geometry package, GeometryOps.jl. The Scholar, along with a Caltech undergrad that she mentored, wrote the polygon clipping code within GeometryOps.jl. This package is now available to the entire Julia community and is actively gaining new users and contributors. Switching to GeometryOps.jl within Subzero.jl resulted in another performance increase (represented on the graph as Julia 2024).
Going forward, Subzero.jl will be released as a Julia package with an accompanying Journal of Open Source Software paper, which is currently in preparation. The scholar is also developing comprehensive documentation, including a tutorial, example computations, and a developer guide.