pyissm.tools.geometry

Geometry-related functions for ISSM

This module contains functions to compute geometric properties on ISSM model meshes.

Functions

effectivepressure(md[, head])

Calculate the effective basal pressure N from md.geometry and the effective pressure coupling rule in md.friction.

nowicki_profile(x)

Create a theoretical ice profile at the transition zone based on Sophie Nowicki's thesis.

slope(md[, field])

Compute the slope of a given field over the mesh elements.

pyissm.tools.geometry.effectivepressure(md, head=None)

Calculate the effective basal pressure N from md.geometry and the effective pressure coupling rule in md.friction.

Parameters:
  • md (object) – ISSM model object.

  • head (array-like, optional) – Hydraulic head at mesh vertices (m). Only used when md.friction.coupling == 4.

Returns:

N – Effective pressure at the base (Pa).

Return type:

ndarray

Raises:
  • ValueError – If coupling == 4 and md.hydrology is not a hydrologyprescribe instance and no head is provided.

  • ValueError – If an unsupported coupling value is given.

Notes

Coupling modes:

  • 0 — Uniform sheet; negative water pressure permitted (default).

  • 1 — Effective pressure equals overburden pressure.

  • 2 — Uniform sheet; water pressure clamped to >= 0.

  • 3 — Prescribed effective pressure from md.friction.effective_pressure.

  • 4 — Dynamically coupled to the hydrology model (md.hydrology.head

    or a supplied head array).

See also

basalstress

pyissm.tools.geometry.nowicki_profile(x)

Create a theoretical ice profile at the transition zone based on Sophie Nowicki’s thesis.

Parameters:

x (array_like) – Along-flow coordinate

Returns:

  • b (ndarray) – Ice base

  • h (ndarray) – Ice thickness

  • sea (float) – Sea level

pyissm.tools.geometry.slope(md, field=None)

Compute the slope of a given field over the mesh elements.

Parameters:
  • md (object) – Model object containing mesh and geometry information.

  • field (array-like, optional) – Field values at mesh nodes. If not provided, uses the surface elevation from md.geometry.surface. Default is None.

Returns:

  • sx (ndarray) – Slope component in the x-direction at element centers.

  • sy (ndarray) – Slope component in the y-direction at element centers.

  • s (ndarray) – Magnitude of the slope at element centers.

Raises:

NotImplementedError – If the mesh dimension is 3D, as 3D meshes are not yet supported.

Notes

The slope is computed using nodal basis functions N(x, y) = alpha*x + beta*y + gamma. For 2D meshes, elements and coordinates are taken directly from the mesh. For 3D meshes, 2D elements and coordinates are used instead.

Examples

>>> sx, sy, s = slope(md)
>>> sx, sy, s = slope(md, field=md.geometry.bed)