Skip to content

Module arrhenius

Brief summary

The arrhenius module computes the vertically-averaged Arrhenius rate factor state.arrhenius (MPa\(^{-n}\) yr\(^{-1}\)) used by the iceflow solver to account for the temperature- and water-content-dependent viscosity of ice. It is a standalone companion to the enthalpy module — when enthalpy is active, place arrhenius immediately after it in the override /processes list so that each time step's temperature and water-content fields are fresh before the iceflow solve.

State variables

Reads: T, omega

Writes: arrhenius

Physical model

Ice viscosity depends on temperature through the Arrhenius relation. Using a two-regime law (cold / warm ice), the 3D rate factor is:

\[A(\mathbf{x}, z) = \left(1 + c_\omega \min(\omega, \omega_{\max})\right) A_r \exp\!\left(\frac{-Q_r}{R\, T_{\rm pa}}\right),\]

where \(T_{\rm pa}\) is the pressure-adjusted temperature, \(\omega\) is the water content, and the regime parameters \((A_r, Q_r)\) switch at a threshold temperature \(T_{\rm threshold}\):

\[A_r = \begin{cases} A_{\rm cold},\; Q_r = Q_{\rm cold} & T_{\rm pa} < T_{\rm threshold} \\ A_{\rm warm},\; Q_r = Q_{\rm warm} & T_{\rm pa} \ge T_{\rm threshold} \end{cases}\]

Because viscosity (not the rate factor) should be averaged vertically, the module averages over \(B = A^{-1/n}\) and converts back:

\[A_{\rm avg} = \left(\sum_k B_k \, w_k\right)^{-n},\]

where \(w_k\) are the vertical quadrature weights from the iceflow discretization.

Usage

The arrhenius module reads state.T and state.omega produced by enthalpy. A typical process list looks like:

override /processes:
  - time
  - iceflow
  - thk
  - enthalpy
  - arrhenius   # must come after enthalpy

If neither state.T nor state.omega are available at initialization, the module skips the computation silently and relies on the value already stored in state.arrhenius (e.g. set by iceflow or loaded from a checkpoint).

Parameters

Default configuration file (arrhenius.yaml):

arrhenius:
  # Two-regime Arrhenius law (cold / warm ice) with water-content enhancement.
  # Reads state.E (3D enthalpy) produced by the `enthalpy` module and derives
  # temperature and water content on-the-fly. Place `arrhenius` AFTER
  # `enthalpy` in the `override /processes` list.
  A_cold: 3.985e-13
  A_warm: 1.916e+3
  Q_cold: 60000.0
  Q_warm: 139000.0
  T_threshold: 263.15
  omega_coef: 181.25
  omega_max: 0.01
  R: 8.314

Description of the parameters:

Name Description Default value Units
A_cold Pre-exponential factor in the Arrhenius law for cold ice (T_pa < T_threshold). 3.985e-13 Pa\( ^{-n} \) s\( ^{-1} \)
A_warm Pre-exponential factor in the Arrhenius law for warm ice (T_pa >= T_threshold). 1916.0 Pa\( ^{-n} \) s\( ^{-1} \)
Q_cold Activation energy for cold ice in the Arrhenius law. 60000.0 J mol\( ^{-1} \)
Q_warm Activation energy for warm ice in the Arrhenius law. 139000.0 J mol\( ^{-1} \)
T_threshold Pressure-adjusted temperature threshold separating cold and warm ice regimes. 263.15 K
omega_coef Water-content enhancement coefficient: omega_factor = 1 + omega_coef * min(omega, omega_max). 181.25
omega_max Cap on water content used in the enhancement factor to avoid unphysical softening. 0.01
R Universal gas constant used in the Arrhenius exponential. 8.314 J mol\( ^{-1} \) K\( ^{-1} \)

Contributors: Guillaume Jouvet, Thomas Gregov.