Recent Releases of IGM

IGM - v3.2.0

IGM 3.2.0 — Full list of changes

Release: 3.2.0 -> 3.1.2

Breaking changes (require action — see migration guide)

  • Environment: TF ≥ 2.16 / Keras ≥ 3.12 required; Keras-2 env fails at first ice-flow solve.
  • Default stack: the iceflow emulator used to run pretrained under the emulated mode;
    it now runs under the unified mode, trained from scratch with the dahunet
    architecture by default, as this proved to be a much more robust choice. The default
    number of vertical layers numerics.Nz also dropped 10 → 4.
  • Friction rename: slidingcotau_ref on the unified mode
    (legacy stack keeps slidingco); hard-fail at startup naming each key.
  • Physics parameters renamed and regrouped: the iceflow.physics parameters were
    reorganised under two blocks — sliding: (per-law sub-blocks flattened one level up)
    and viscosity: (Glen-flow parameters) — with init_ prefixes dropped and a few keys
    renamed for consistency. Old keys hard-fail at startup naming their replacement. (Full
    translation table in the migration guide.)
  • data_assimilation moved processesassimilations: the data_assimilation
    module now lives in the new assimilations module category (alongside the new, fully
    rewritten field_inversion), no longer under processes.
  • smb / climate umbrella modules: the individual smb_simple / clim_* modules
    are replaced by umbrella smb / climate modules with a method: selector.
  • enthalpy decoupling: pieces formerly bundled in enthalpy are now standalone —
    arrhenius split into its own process, and subglacial hydrology / effective pressure
    moved to subglacial_hydrology. The former vert_flow module was folded into
    iceflow, which now optionally computes the vertical velocity (e.g. required to run
    enthalpy or particles).

Changes by module

  • subglacial_hydrology (new):

    • Decoupled from enthalpy; computes state.effective_pressure for Budd and Coulomb sliding
    • Modes: constant_one, percentage, ocean_connected, from_input, till_storage
  • arrhenius (new):

    • Decoupled from enthalpy into a standalone process module
  • iceflow:

    • New: unified stack — trains a from-scratch dahunet emulator online,
      now the default ice-flow method
    • New: Several sliding laws, including budd, regu_coulomb, mohr_coulomb.
    • New: pretrained dahunet emulators (full, mini, micro) shipped with IGM;
      referenceable by name (e.g. pretrained_path: dahunet)
    • Renaming: slidingcotau_ref (legacy alias kept for backward compatibility)
    • Defaults: sliding.u_ref 1 → 100 m/yr (unified only; legacy emulated/solved/diagnostic
      require u_ref=1.0, enforced at startup), with sliding.tau_ref rescaled 0.0464 → 0.215
      so the physics is unchanged
    • Config: viscosity parameters regrouped under viscosity: block; sliding sub-blocks
      flattened; init_ prefix dropped on friction keys
    • Numerics: choice of bx/by discretisation; extra 2nd-derivative regularisation term
    • Floating: updated to use 2D water_level for calving-front basal pressure
    • New: iceflow.vertical_velocity folds in the former vert_flow process
  • enthalpy:

    • Simplified diagnostics; T and omega no longer saved by default
    • New: temppasurf and temppabase published on state
    • arrhenius and subglacial hydrology split out into standalone modules
  • data_assimilation (moved to assimilations):

    • Moved from processes to the new assimilations category
    • Updated to accept either slidingco or tau_ref as friction control
    • Regularization: additional second-order term in regu_thk; configurable
      discretization for bx/by (PR #45)
    • Default params changed: retrain_iceflow_model false, fix_opti_normalization_issue
      true, obstacle_constraint: [reproject], smooth_anisotropy_factor 1.0,
      convexity_weight 0.0
    • (Superseded by field_inversion — see below)
  • smb / climate (new):

    • Umbrella modules introduced with method: dispatch to smb_* / clim_* submodules
      (simple/oggm/accpdd; simple/oggm/glacialindex/station)
  • field_inversion (in assimilations):

    • Overhauled data assimilation — alternates inversion with light retraining
  • pretraining (in assimilations):

    • Moved from processes to new assimilations category
    • Model artifacts migrated to .keras format (manifest removed)
    • Pretrained network validated against config on load (horizontal + vertical basis checks)
    • New SIADecompNet architecture
  • time_relaxation (in assimilations):

    • New module (alternative to field_inversion) that permit data assimilation
      but using time relaxation.
  • time:

    • New: cfl_percentile option for adaptive time-stepping
  • state:

    • New: variable aliases
    • New: diagnostic variables are now optional (opt-in)
  • core:

    • New: check_module_needs flag to validate module dependencies at init (off by default)

Code maintenance

  • Black formatting enforced in CI
  • Hewitt & Schoof (2017) subglacial hydrology benchmark test added

Contributors: @shrrosier, @jouvetg, @tgregov, @gillian-smith.

Cryosphere - Glacier and Ice Sheets - Python
Published by instructed-glacier-model about 1 month ago

IGM - v3.1.2

The highlights of this release are a new SR-based data assimilation module, a major overhaul of the data assimilation framework with support for both iceflow backends, and new optimization solvers (MUON, SOAP, improved CG-Newton and Trust Region).

Improvements and Updates

Modules

  • data_assimilation:

    • Compatibility: new dispatch layer for use with both emulated and unified iceflow
    • Fix: early stop with patience for the optimization loop
  • data_assimilation_SR (new):

    • SR-based inversion with flexible misfit terms (Huber, L²) and regularization (L2, Laplacian-squared)
    • Normalization: cost terms normalized by domain area (ice mask)
    • Fix: boundary effects in mask-based regularization
  • iceflow:

    • New: no_inflow boundary condition
    • New: NiceNet and CNO emulator architectures
    • Schema v3 for pretrained model artifacts with improved loading and validation
    • Improved double-precision support
    • Sliding: new u_ref / tau_ref convention for Weertman (more interpretable); Budd and Coulomb slidingco definitions aligned with Weertman; new use_mask_gr flag to force zero friction on floating areas
  • pretraining:

    • Overhaul: warmup phase, cleaner normalization layer, model save/load
    • Checkpoint resumption
  • optimizers:

    • New: MUON and SOAP optimizers
    • Improved CG-Newton and Trust Region solvers
    • L-BFGS-B: improved bound constraints and memory updates
  • live_dashboard (new):

    • Real-time monitoring during runs

Code maintenance

  • Optuna is now an optional dependency (pip install igm-model[optuna])
  • Early stop with patience for training loops
  • Profiler option added

Contributors: @shrrosier, @brfi3983, @tgregov, @jouvetg, @gillian-smith, @tancredeleger.

Cryosphere - Glacier and Ice Sheets - Python
Published by jouvetg about 2 months ago

IGM - IGM v3.1.1

The highlight of this release is a refactor of the enthalpy module, as well as the addition of various horizontal discretizations for the ice-flow solver.

Improvements and Updates

Modules

  • enthalpy:
    • Refactoring: the componenets are now located in separate folders
    • Discretization: independent vertical discretization for enthalpy (Nz_E)
    • BC: option to force basal temperature at pressure melting point
    • Config: more detailed structure with numerics, solver, thermal, arrhenius, drainage, till sections
    • Tests: Kleiner et al. (2015) Exp A & B benchmarks, unit tests
  • iceflow:
    • Discretization: new horizontal discretization framework (basis_horizontal); with Q1 FE, P1 FE, central FD (legacy discretization, remains default)
    • Cost components: adapted to new horizontal discretization framework and new enthalpy grid
    • Renaming: vertical_discr to discr_v, vert_basis to basis_vertical, staggered_grid to basis_horizontal
  • vert_flow:
    • New version 3: based on precomputed discretization matrices

Code maintenance

  • Included missing __init__.py file in enthalpy utils folder to resolve PyPI installation
  • Fixed version for NetCDF compatibility

Contributors: @tgregov, @brfi3983.

Cryosphere - Glacier and Ice Sheets - Python
Published by tgregov 6 months ago

IGM - IGM v3.1.0

Disclaimer: This release is currently broken (with PyPI) due to import issues with the enthalpy module. Please use v3.1.1 or later.

The highlight of this release is a new unified framework for the ice-flow module, accessible via method=unified.

This framework consolidates the existing solver and emulation approaches under a single interface, using the mapping parameter to select the desired mode: identity corresponds to the legacy solver mode, while network corresponds to the legacy emulated mode. The unified framework provides greater flexibility and simplifies long-term maintenance. The legacy solver and emulated modes will eventually be deprecated and removed.

Improvements and Updates

Modules

  • iceflow:
    • Solver: unified framework allowing for more flexible and maintainable ice-flow solver
    • Networks: new neural architectures (FNO, MLP, CNN)
    • Inputs: defaults to normalization of inputs (within unified)
    • Discretization: new flexible vertical discretization for velocity
    • Optimizers: sequential option, halt/convergence criterion
    • BC: update frozen boundary condition for new vertical discretization
    • Performance: uses tf.function for forward pass of the ice-flow model
    • Memory: work in progress for single/double precision support
    • Display: cleaner visualization using rich
    • Renaming:sia to molho, w to theta, gradient to grad, warm_up_it to nbit_warmup
    • Tests: ISMIP-HOM suite, BCs, vertical discretization, data preparation
    • Documentation: update config files and website
  • data_assimilation:
    • Work in progress
  • instructed_oggm:
    • Adapted to IGM 3.0

Code maintenance

  • CI/CD: Added pandoc, mkdocs-bibtex dependencies for documentation

Contributors: @tgregov, @shrrosier, @brfi3983, @jouvetg.

Cryosphere - Glacier and Ice Sheets - Python
Published by tgregov 6 months ago

IGM - IGM v3.0.1

Improvements and Updates

Modules

  • iceflow:
    • Boundary conditions
    • Vertical discretization
    • Progress bar
    • ζ coordinate corrections
    • Tests for L-BFGS optimizer
  • write_vtp:
    • New VTK output module for particle visualization
  • data_assimilation:
    • Work in progress
    • Integration of Optuna features
  • oggm_shop:
    • Added EPSG attribute to output (J. Fürst)
    • Adapted to IGM 3.0 (#41)

Code maintenance

  • Installation:
    • Removed specific Python version requirement (#24)
  • CI/CD:
    • Fixed PyPI packaging with proper __init__.py files

Cryosphere - Glacier and Ice Sheets - Python
Published by brfi3983 6 months ago

IGM - IGM v3.0.0

IGM v3.0.0

Check at more detailed list of changes to transition from version 2 to 3 at : https://igm-model.org/latest/about/transition-IGM-2-to-3/

Improvements and Updates

  • IGM can now deploy multiple runs on a single GPU (if memory allows it)
  • Integration with hydra
  • Improved the code layout and structure
  • Added various modules
    • Damage
    • Stress
    • Improved lagrangian particle tracking

Breaking changes

  • argparse is now replaced with hydra
  • documentation is now moved from wiki to https://igm-model.org/latest/
  • json has been replaced with yaml

Bug fixes

Other changes

Cryosphere - Glacier and Ice Sheets - Python
Published by brfi3983 11 months ago

IGM - v2.2.3

IGM v2.2.3

Bug fixes and other changes

  • Final release before /feature/hydra branch is merged into main

Cryosphere - Glacier and Ice Sheets - Python
Published by brfi3983 11 months ago

IGM - v2.2.2

Cryosphere - Glacier and Ice Sheets - Python
Published by jouvetg about 2 years ago

IGM - v2.2.1

Cryosphere - Glacier and Ice Sheets - Python
Published by brfi3983 over 2 years ago

IGM - v2.2.0

Cryosphere - Glacier and Ice Sheets - Python
Published by brfi3983 over 2 years ago

IGM - v2.1.0

Cryosphere - Glacier and Ice Sheets - Python
Published by jouvetg over 2 years ago

IGM - v2.0.4

This release includes renaming of parameter and module

Cryosphere - Glacier and Ice Sheets - Python
Published by jouvetg almost 3 years ago

IGM - v2.0.0

Cryosphere - Glacier and Ice Sheets - Python
Published by jouvetg almost 3 years ago