Skip to content

Add ISSM ice sheet model GridComp to Landice#1203

Draft
agstub wants to merge 107 commits intodevelopfrom
feature/agstub/issm-gridcomp
Draft

Add ISSM ice sheet model GridComp to Landice#1203
agstub wants to merge 107 commits intodevelopfrom
feature/agstub/issm-gridcomp

Conversation

@agstub
Copy link

@agstub agstub commented Feb 5, 2026

This Draft PR adds a new gridcomp that runs ISSM, NASA's Ice-sheet and Sea-level System Model. The ISSM gridcomp is a child of the Landice gridcomp. This Draft PR was spurred by discussions in this issue, which provides an overview and outlines some other changes and development issues.

Overview of the new ISSM gridcomp:
Imports:

  • ICESMB (ice surface mass balance) from landice (described below)

Exports:

  • ICESURF (ice surface elevation)
  • ICETHICK (ice thickness)
  • ICEVEL (ice flow speed)
  • ICESMB (ice smb on mesh elements, time averaged between ISSM time steps; this is exactly the forcing that ISSM 'feels'; not sure if we should name it something different to distinguish mesh and time averaging attributes)
    *These are the main fields/forcing in the underlying PDEs. Other 'requested outputs' can be obtained from ISSM's binary output file by users with the python or Matlab interface if desired.

The ISSM gridcomp does two main things:

  1. It calls (C++) IRF methods that are defined in this branch of GMAO's fork of ISSM. The IRF methods are defined here.
  2. It creates an ESMF_Mesh version of ISSM's internal (unstructured, triangular) mesh for regridding imports/exports between mesh and the attached grid. The gridded versions of fields are then transformed to landice tile space via MAPL_LocStreamTransform.

Currently, output of ICEEL and ICESMB via HISTORY is restricted to the landice tilespace or the attached grid. Note: We are discussing ways to output fields defined on the mesh by creating a new tilespace where each tile corresponds to an element (triangle) of the mesh.

Major changes to landice:

  1. Added ISSM as a child of Landice. Currently, it is the only child of Landice.
  2. Added a new Initialize method that puts the landice tile locstream in the child (ISSM) gridcomp's internal state, and then call's MAPL_GenericInitialize. Landice originally just relies on MAPL_GenericInitialize, so there should be no issues when not running ISSM. Note: The new initialize method is basically a copy of Land gridcomp's Initialize method (with only some comments changed).
  3. Added a new ICESMB export, calculated as ACCUM (net ice accumulation rate) minus RUNOFF (runoff total flux). This is exported to ISSM gridcomp.

To Do:

  • Discussions with @weiyuan-jiang and @mathomp4 suggest we may need to modify CMakeLists.txt for landice (and issm?) to "stub" the build in case the ISSM module is not present.
  • Add element coordinates to mesh tile locstream (elementCoords(1::2) and elementCoords(2::2) are the lon/lat coords for each element)

Related Issues and PRs:
Will update these as progress is made:

A word of caution:
This is my first big draft PR so please don't hesitate to let me know if I did something wrong. I tried to provide ample comments in the new ISSM gridcomp to highlight each step.

@github-actions
Copy link

github-actions bot commented Feb 5, 2026

This PR is being prevented from merging because you have not added one of our required labels: 0 diff, 0 diff trivial, Non 0-diff, 0 diff structural, 0-diff trivial, Not 0-diff, 0-diff, automatic, 0-diff uncoupled, github_actions. Please add one so that the PR can be merged.

@agstub agstub added the Draft label Feb 5, 2026
@gmao-rreichle gmao-rreichle changed the title Feature/agstub/issm-gridcomp Add ISSM ice sheet model GridComp to Landice Feb 5, 2026
@weiyuan-jiang
Copy link
Contributor

To output the fields on Mesh by the way of locstream, this export variable must be in the Mesh space too.ICEEL, Would that be ok? @agstub

@agstub
Copy link
Author

agstub commented Feb 9, 2026

To output the fields on Mesh by the way of locstream, this export variable must be in the Mesh space too.ICEEL, Would that be ok? @agstub

Yes, that should be fine

v11: Build ISSM based on detection of ISSM
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

Comments