Skip to content

Module effective_pressure

This IGM module computes and maintains state.effective_pressure (in MPa), the basal effective pressure \(N = p_i - p_w\) consumed by the Budd and Coulomb sliding laws of the iceflow module (read as fieldin["effective_pressure"]). It is the single source of truth for \(N\): when active, it overrides any prior value of state.effective_pressure at every update.

The module is opt-in. If the only sliding law in use is Weertman, \(N\) cancels out of the cost and the module should not be activated. Conversely, when Budd or Coulomb is active, effective_pressure is required — the iceflow energy validator refuses to run without it.

Closure modes

The mode parameter selects how \(N\) is computed at each update:

  • constant_one\(N = 1\) MPa everywhere. Useful as a sanity check, or to recover a Weertman-like behaviour with the Budd cost when paired with N_ref = 1.
  • percentage\(N = (1 - \texttt{percentage}) \cdot \rho_i\, g\, h\). A fixed fraction of the ice-overburden pressure (the legacy IGM behaviour).
  • ocean_connected\(N = \rho_i g h - \rho_w g \max(w - b,\, 0)\), where \(w\) is the local water level (state.water_level) and \(b\) is the bedrock elevation (state.topg). This assumes the basal hydraulic system is connected to the ocean / proglacial water body and is the recommended mode for marine / tidewater settings. Requires state.water_level to be defined — see the local and load_ncdf input modules.
  • from_input — leave state.effective_pressure as it was loaded from the input data (e.g. an inversion product). The module then acts as a pass-through that keeps the field on state but does not modify it.

After the chosen formula, \(N\) is clamped from below by N_min (default 1 kPa) to avoid the singularity in the sliding-law cost when \(N \to 0\).

Unit convention

\(N\) is stored in MPa to match the rest of the iceflow stress quantities (slidingco, viscosity costs, surface stress). Literature reference values for \(N_\text{ref}\) are typically \(\mathcal{O}(1\,\text{MPa})\) — see (Brondex2019?), (Pollard2012?), (Pattyn2017?).

Module ordering

effective_pressure must run before iceflow so that the field is up to date when the sliding cost is assembled. When mode: ocean_connected is used, it must also run after whichever input module created state.water_level (typically the local or load_ncdf input phase, which runs before any process).

Contributors: IGM authors.

Parameters

Default configuration file (effective_pressure.yaml):

effective_pressure:
  # How to compute state.effective_pressure (MPa). Modes:
  #   constant_one    — N = 1 MPa everywhere (use with Budd N_ref=1 for Weertman-like behaviour)
  #   percentage      — N = (1 - percentage) * rho_ice * g * h
  #   ocean_connected — N = rho_ice*g*h - rho_water*g*max(water_level - topg, 0)
  #   from_input      — leave state.effective_pressure as already loaded
  #
  # Unit is MPa to match the rest of the iceflow stresses (slidingco, σ, τ).
  # Literature N_ref values are typically O(1 MPa) (Brondex et al. 2019,
  # Pollard & DeConto 2012, Pattyn 2017).
  mode: ocean_connected
  percentage: 0.0      # only used if mode == percentage
  N_min: 1.0e-3        # MPa: floor (1 kPa) applied after the chosen formula

Description of the parameters:

Name Description Default value Units
mode Closure used to compute `state.effective_pressure` (MPa). One of: `constant_one` (N = 1 MPa everywhere), `percentage` (N = (1 - percentage) * rho_ice * g * h), `ocean_connected` (N = rho_ice*g*h - rho_water*g*max(water_level - topg, 0); requires `state.water_level`), or `from_input` (leave `state.effective_pressure` as already loaded from the input data). ocean_connected
percentage Fraction of the ice-overburden pressure subtracted in `mode: percentage`. 0 means N equals overburden; 1 means N is zero. Ignored for other modes. 0.0
N_min Lower floor applied to N after the chosen formula (default 1.0e-3 MPa = 1 kPa) to avoid the singularity in the Budd / Coulomb sliding cost. 0.001 MPa

Example usage

Marine glacier with ocean-connected basal pressure, paired with a Budd sliding law:

# @package _global_

inputs:
  local:
    filename: input.nc
    water_level:
      include: True
      value: 0.0          # uniform sea level at 0 m

processes:
  effective_pressure:
    mode: ocean_connected
    N_min: 1.0e-3
  iceflow:
    physics:
      sliding_law:
        name: budd
        budd:
          N_ref: 1.0      # MPa
          q_exponent: 1.0
  thk: {}
  time:
    start: 2000.0
    end: 2100.0
    save: 5.0

Or override on the command line:

igm_run +experiment/params processes.effective_pressure.mode=percentage processes.effective_pressure.percentage=0.96