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.
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
Load initial fields (ice thickness, bedrock, velocities) from local NetCDF or GeoTIFF files
load_ncdfLoad one or more fields from a NetCDF file at an explicit path
load_tifLoad fields from GeoTIFF raster files
oggm_shopAutomatically download and prepare glacier data (DEM, ice thickness, RGI outline) from the OGGM database
Assimilation
Invert for ice thickness and flow parameters from observed surface velocities
field_inversionInvert for unknown fields (e.g. ice thickness) from surface observations (e.g. surface ice velocities)
pretrainingPre-train an ice flow emulator on a catalogue of synthetic glaciers
time_relaxationData assimilation by forward time relaxation — nudge control fields (SMB, sliding coefficient, thickness, topography) toward observations within an inner forward loop
Process
Advance the simulation clock with an adaptive CFL time step
Time climateUnified climate module — dispatches to simple, oggm, glacialindex, or station based on the `method` parameter
Atmosphere smbUnified surface mass balance module — dispatches to simple, oggm, or accpdd based on the `method` parameter
Atmosphere arrheniusCompute the vertically-averaged Arrhenius rate factor from ice temperature and water content
Cryosphere enthalpySolve the 3D enthalpy equation for temperature, water content, and basal melt
Cryosphere iceflowCompute 3D ice velocities — direct solver or neural-network emulator
Cryosphere thkEvolve ice thickness and surface elevation via mass conservation
Cryosphere subglacial_hydrologyCompute basal effective pressure and (optionally) evolve the subglacial till water layer
Lithosphere particlesAdvect Lagrangian particles to trace flow paths and estimate ice age
MiscOutput
Write selected state fields to a NetCDF file in the run output folder
write_ncdfWrite fields to a NetCDF file at an arbitrary path
write_vtpWrite fields to VTK PolyData format for 3D visualisation in ParaView
write_tifWrite fields to GeoTIFF rasters (georeferenced)
write_tsWrite scalar time series (volume, area, mass balance, …) to a CSV file
plot2dSave 2D map snapshots as PNG images at each output time step
live_dashboardDisplay an interactive real-time dashboard of key fields during the simulation
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
Redistribute snow from steep slopes to prevent unrealistic high-elevation accumulation
Cryosphere gflexCompute isostatic bedrock adjustment to ice load via thin-plate flexure
Lithosphere glerosionEstimate glacial erosion rates and update bedrock topography from basal sliding velocities
Lithosphere rockflowSimulate the transport of supraglacial and englacial debris coupled to ice flow
Lithosphere read_outputReplay a saved NetCDF output file as if freshly computed
Misc textureTrack a passive scalar (e.g. sediment, tracer) transported through the ice
Misc