Module vert_flow
Brief summary
The vert_flow module computes the vertical velocity \(w\) from the horizontal velocity components \((u, v)\) provided by the iceflow module. Two methods are available: kinematic (layer-following) and incompressibility (divergence-free). This module is required before invoking the particle module for 3D trajectory integration or the enthalpy module for 3D advection-diffusion.
Terrain-following coordinate system
Ice flow simulations use a terrain-following vertical coordinate
where \(z\) is the physical height, \(b(x,y)\) is the bed elevation, and \(H(x,y)\) is the ice thickness. In this coordinate system, \(\zeta = 0\) at the bed and \(\zeta = 1\) at the surface, regardless of the underlying terrain complexity.
Principle
Basal kinematic condition
Both methods enforce that ice velocity is parallel to the bed:
Kinematic method
The kinematic method computes \(w\) by requiring that ice velocity is tangent to each layer surface. At layer elevation \(z_\zeta = b + \zeta H\):
where \(\bar{\mathbf{u}}_\zeta\) is the depth-averaged velocity from the bed up to that layer. This naturally accounts for varying terrain through the layer slope terms.
Incompressibility method
The incompressibility method uses the divergence-free condition for ice, which is expressed in physical coordinates:
where the horizontal derivatives are taken at constant physical height \(z\). Integrating from the bed:
Changing the integration variable to terrain-following coordinates:
While we integrate with respect to \(\zeta\), the incompressibility condition requires horizontal derivatives at constant physical height \(z\). However, our velocity fields \(u\) and \(v\) are discretized and computed at constant \(\zeta\). Therefore, we must transform the derivatives using the chain rule. Applying it to \(u(x,y,z)\) with \(z = b + \zeta H\):
so that
Versions
| Version | Kinematic | Incompressibility | Terrain correction | Implementation |
|---|---|---|---|---|
| 1 (GJ) | ✓ | ✓ | Kinematic only | Direct numerical derivatives |
| 2 (CMS) | ✓ | ✓ | ✓ | Numerical integration with terrain chain rule |
| 3 (TG) | ✗ | ✓ | ✓ | Matrix-based with precomputed operators |
Versions 1 and 2 support choosing between kinematic and incompressibility methods via the method parameter, but only when using the Lagrange vertical basis. For Legendre basis, both versions use a spectral incompressibility method. For MOLHO basis, all versions use a two-layer kinematic approach. Version 3 implements only the incompressibility method for all basis functions.
Parameters
Default configuration file (vert_flow.yaml):
Description of the parameters:
| Name | Description | Default value | Units |
|---|---|---|---|
version
|
Version of the vert_flow method (1: original, by GJ; 2: improved, by CMS; 3: unified, by TG). | 2 | — |
method
|
Method to retrieve the vertical velocity (kinematic, incompressibility). | kinematic | — |
Contributors: G. Jouvet, C.-M. Stücki, T. Gregov.