Skip to content

Add FastIsostasy coupling setup for ISMIP7 AIS test case - #970

Merged
trhille merged 8 commits into
MPAS-Dev:mainfrom
hollyhan:landice/add_fastisostasy_to_ismip7
Sep 24, 2026
Merged

trhille merged 8 commits into
MPAS-Dev:mainfrom
hollyhan:landice/add_fastisostasy_to_ismip7

Conversation

@hollyhan

@hollyhan hollyhan commented Jul 21, 2026 •

Copy link
Copy Markdown
Contributor

This PR adds functionality to set up coupled MALI-FastIsostasy simulations in the ISMIP7 AIS test case, following the same pattern as the existing Sea Level Model (SLM) integration.

Checklist

  • User's Guide has been updated
  • Developer's Guide has been updated
  • API documentation in the Developer's Guide (api.rst) has any new or modified class, method and/or functions listed
  • Documentation has been built locally and changes look as expected

Update (09/22/2026): Test results of coupled modeling based on realistic climate forcing and Earth sturcture can be found here: MALI-Dev/E3SM#183

July 2026: test results with a simple climate forcing
image

The signs of bedrock change and thickness change seem reasonable (ice thickening → bedrock subsiding & ice thinning → bedrock uplifting)

@hollyhan hollyhan added enhancement New feature or request land ice labels Jul 21, 2026
@hollyhan
hollyhan force-pushed the landice/add_fastisostasy_to_ismip7 branch 3 times, most recently from becdeee to 64f63ae Compare July 21, 2026 19:13
@hollyhan hollyhan added the in progress This PR is not ready for review or merging label Jul 21, 2026
@matthewhoffman matthewhoffman added this to the ISMIP7 milestone Sep 16, 2026
@hollyhan
hollyhan force-pushed the landice/add_fastisostasy_to_ismip7 branch 2 times, most recently from 716950c to 52837d0 Compare September 18, 2026 06:28
@hollyhan hollyhan removed the in progress This PR is not ready for review or merging label Sep 18, 2026
@hollyhan
hollyhan force-pushed the landice/add_fastisostasy_to_ismip7 branch 4 times, most recently from 7b66b51 to 6ad3ac5 Compare September 19, 2026 03:09
@hollyhan

Copy link
Copy Markdown
Contributor Author

@matthewhoffman , @trhille . This is ready to be tested and merged.

@hollyhan
hollyhan force-pushed the landice/add_fastisostasy_to_ismip7 branch from e99b233 to eb8e8ae Compare September 19, 2026 16:28

@trhille trhille left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@hollyhan, thanks for this amazing work! I have a number of comments, which I think are important but should be easy to address.

Comment thread docs/developers_guide/landice/api.rst Resolved
hollyhan and others added 8 commits September 21, 2026 13:34
  This commit adds functionality to set up coupled MALI-FastIsostasy simulations in the
  ISMIP7 AIS test case, following the same pattern as the existing Sea Level Model (SLM)
  integration.

  New files:
  - create_fastiso_mapping_files.py: Step class for generating mapping files
    * Includes create_ismip7_grid_file() function copied from MPAS-Tools
    * Creates MALI -> FastIsostasy mapping (conserve method)
    * Creates FastIsostasy -> MALI mapping (bilinear method)

  Modified files:
  - __init__.py: Added CreateFastIsoMappingFiles step when fastisostasy=true
  - set_up_experiment.py: Added FastIsostasy configuration and validation
  - ismip7_ais.cfg: Added fastisostasy, fastiso_res_km, and icesheet options
  - ismip7_ais_test.cfg: Added same configuration options

  Configuration options:
  - fastisostasy (bool): Enable FastIsostasy coupling
  - fastiso_res_km (int): Grid resolution in km (2, 4, 8, or 16 for AIS)
  - icesheet (str): Ice sheet identifier ('AIS' or 'GrIS')
The ismip7_run test group had no api.rst entry at all, even for the
pre-existing base/SLM functionality. Adds the full listing, including
the new CreateFastIsoMappingFiles step and create_ismip7_grid_file
function.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Rename fastiso_earth_structure_path to fastiso_path so it can house
both the Earth-structure rheology file and a new optional activation
mask for FastIsostasy's interactive sea level. Without a mask file,
FastIsostasy activates interactive sea level only over the un-padded
ice domain, producing a hard cutoff at the domain/padding boundary
that shows up as a ring artifact in bed-topography change near the
ice sheet edge; a supplied mask lets that region be widened (e.g. to
the full padded domain) instead.

- Add fastiso_mask_filename config option (default "None", matching
  FastIsostasy's own no-mask convention).
- Template mask_file in namelist.fastisostasy.template instead of
  hardcoding "None".
- Symlink the mask file alongside the Earth-structure file in
  SetUpExperiment.setup() when configured.
- Update user's and developer's guide docs accordingly.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@hollyhan
hollyhan force-pushed the landice/add_fastisostasy_to_ismip7 branch from 96091c0 to c10fa75 Compare September 21, 2026 18:29
@trhille
trhille self-requested a review September 24, 2026 17:17

@trhille trhille left a comment •

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tested this with MALI built at the current head of https://github.com/MALI-Dev/E3SM/tree/matthewhoffman/mali/fastisostasy (commit 1580599).

Here is my .cfg file:

Click to expand
[ismip7_run_ais]

# List of experiments to set up.
# Can be "all", "historical", "projections", "ctrl", or a
# comma-delimited list of experiment names.
# Valid experiment names:
#   historical_CESM2-WACCM, historical_MRI-ESM2-0,
#   ssp126_CESM2-WACCM, ssp126_MRI-ESM2-0,
#   ssp370_CESM2-WACCM, ssp370_MRI-ESM2-0,
#   ssp585_CESM2-WACCM, ssp585_MRI-ESM2-0,
#   ctrl_CESM2-WACCM, ctrl_MRI-ESM2-0,
#   ocx
exp_list = ocx
# historical_CESM2-WACCM,ssp585_CESM2-WACCM

# Number of tasks to use for each run
ntasks = 512

# Value to use for config_pio_stride.
# Should be divisible into ntasks
pio_stride = 128

# Base path to the pre-processed ISMIP7 forcing files.
# Expected layout:
#   {forcing_basepath}/{model}_{scenario}/atmosphere/
#   {forcing_basepath}/{model}_{scenario}/ocean_thermal_forcing/
# User has to supply.
forcing_basepath = /global/cfs/cdirs/m4288/users/trhille/ISMIP7/test_processing/AIS/

# Path to the initial condition file. User has to supply.
init_cond_path = /pscratch/sd/t/trhille/ISMIP7/AIS/mesh_gen_20260805/2008/4to20km/optimization/molho/budd/20260914/AIS_4to20km_r03_20260915.nc

# Path to the file for the basal melt parametrization coefficients.
melt_params_path = /pscratch/sd/t/trhille/ISMIP7/AIS/test_MALI-Dev_PR187_and_COMPASS_PR989/ismip6shelfMelt_params.nc

# Path to the reference surface elevation file
reference_surface_path = /pscratch/sd/t/trhille/ISMIP7/AIS/test_MALI-Dev_PR187_and_COMPASS_PR989/upper_surface.nc

# Path to the region mask file
region_mask_path = /global/cfs/cdirs/fanssie/MALI_input_files/AIS_4to20km_r03/AIS_4to20km_r03_20260905_ismip6_regionMasks.nc

# Path to the ocean thermal forcing climatology file for CTRL2015 runs.
# This is the constant-climate 30-year mean (2000-2029) thermal forcing.
# User has to supply if running ctrl experiments.
ctrl_tf_climatology_path = NotAvailable

# Path to the atmosphere climatology files for CTRL2015 runs.
# Directory containing constant-climate SMB, temperature, etc.
# User has to supply if running ctrl experiments.
ctrl_atm_climatology_path = NotAvailable

# Path to OCX (observationally constrained experiment) forcing.
# User has to supply if running the ocx experiment.
ocx_forcing_path = /global/cfs/cdirs/m4288/users/trhille/ISMIP7/test_processing/AIS/OCX_main

# Calving method to use. Options: restore, von_mises
calving_method = restore

# Path to the file containing the von Mises parameter fields.
# Only required if calving_method is set to 'von_mises'.
von_mises_parameter_path = NotAvailable

# Whether to apply the ISMIP7 Path C ice shelf collapse mask (from
# ismip7_forcing fracture) as hydrofracture-gated mask calving. Expected
# layout: {forcing_basepath}/{model}_{scenario}/shelf_collapse/*.nc
# Not used for historical, ctrl, or ocx experiments. If true and the mask
# file is missing for an experiment that should have one, setup fails.
use_hydrofracture_forcing = true


# Ice fracture toughness (K_IC, Pa m^0.5) used in the hydrofracture
# vulnerability criterion gating mask calving. Only used when
# use_hydrofracture_forcing is true.
calving_fracture_toughness = 2.0e5

gia_model = FastIsostasy

# Path to the directory containing globally defined ice thickness
# field for the sea-level model
slm_input_ice = NotAvailable

# Path to the directory containing earth model for the sea-level model
slm_input_earth = NotAvailable

# Earth structure profile filename
slm_earth_structure = prem_512.l60K2C.sum18p6.dum19p2.tz19p4.lm22

# Path to the directory containing other SLM input files
slm_input_others = NotAvailable

# Number of gauss-legendre nodes in latitude (typically multiple of 512)
nglv = 2048

fastiso_path = /global/cfs/cdirs/fanssie/MALI_projects/FastIsostasy_Inputs/

fastiso_earth_structure_filename = weak-earth.nc

fastiso_mask_filename = mask_full_domain.nc

fastiso_res_km = 16

[parallel]
parallel_executable = srun --label --cpu-bind=cores

Bed topography change 2008–2012 (not 100% sure which way the sign points because of the way Paraview programmable filter works):

Image

@trhille
trhille merged commit 9ff2455 into MPAS-Dev:main Sep 24, 2026
5 checks passed
@trhille

trhille commented Sep 24, 2026

Copy link
Copy Markdown
Collaborator

Note that we're getting a little ahead of ourselves by merging this before merging the MALI-Dev PR MALI-Dev/E3SM#183. I should have checked that this works with gia_model = none before merging this. I just tested that, and everything seems to work as expected.

@trhille trhille mentioned this pull request Sep 24, 2026
9 of 12 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request land ice

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants