Skip to content

Overview

IGM is built around a modular architecture: every physical process and every I/O operation is encapsulated in a self-contained module with its own parameters, source code, and documentation. Modules can be combined, reordered, or replaced from the configuration file — no source-code editing required.

Architecture

A simulation is assembled from three categories of modules:

  • Input modules load data (bedrock, observations, climate) into the shared model state before the time loop begins.
  • Process modules update state variables at every time step — ice flow, mass balance, thermodynamics, and more.
  • Output modules write or visualise results at regular intervals during the time loop.
inputs → [initialize] → time loop { processes → outputs } → [finalize]

The shared state object (state) carries all glacier fields as TensorFlow tensors. Any module can read or write any field; changes propagate to all subsequent modules in the pipeline. See State Variables for the complete list of fields and their dependencies.

Core modules

Maintained by the IGM development team, well-tested, and stable across releases.

Input

Assimilation

Process

Output

Community modules

Contributed by the broader research community. These modules extend IGM with specialised or experimental physics and may evolve more rapidly than core modules.

Process