Repository navigation
Add hydrofracture vulnerability gating for mask calving - #187
matthewhoffman merged 2 commits into
Conversation
There was a problem hiding this comment.
🟡 Changes recommended
The new Fortran constants fFactor and FFactor differ only by case, which will cause a duplicate-symbol compilation error in Fortran.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
This PR adds a fracture-toughness-based hydrofracture vulnerability criterion to MALI mask calving, so the ISMIP7 Path C shelf-collapse mask only removes floating ice where extensional stresses indicate vulnerability. It also introduces a diagnostic mask field to expose vulnerability in outputs and wires new configuration options through the namelist/registry plumbing.
Changes:
- Add two new namelist options to gate mask calving by hydrofracture vulnerability and to set fracture toughness.
- Compute and store
hydrofractureVulnerabilityMaskfor floating cells during mask calving and use it to conditionally apply calving. - Register and output the new diagnostic field via the MPAS registry and streams.
File summaries
| File | Description |
|---|---|
| components/mpas-albany-landice/src/Registry.xml | Adds new namelist options and registers/streams the hydrofractureVulnerabilityMask diagnostic field. |
| components/mpas-albany-landice/src/mode_forward/mpas_li_calving.F | Implements the stress-threshold vulnerability criterion and gating logic in mask_calving. |
| components/mpas-albany-landice/bld/namelist_files/namelist_definition_mali.xml | Documents the two new namelist entries for MALI. |
| components/mpas-albany-landice/bld/namelist_files/namelist_defaults_mali.xml | Provides default values for the new namelist options. |
| components/mpas-albany-landice/bld/build-namelist-section | Ensures new options are included in namelist section defaults. |
| components/mpas-albany-landice/bld/build-namelist | Ensures new options are included in the overall build-namelist defaults. |
Review details
- Files reviewed: 6/6 changed files
- Comments generated: 1
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Add a fracture-toughness-based vulnerability criterion to MALI mask calving so the ISMIP7 Path C shelf-collapse mask only removes floating ice that is also vulnerable to hydrofracture per Lai et al. (2020) / Reynolds and Nowicki (2026, eqs 4-8). A cell is vulnerable where the resistive stress R_xx = 2*tauMax + tauMin exceeds a thickness-independent threshold that depends on ice fracture toughness. New namelist options: - config_require_extensional_stresses_for_mask_calving (logical) - config_calving_fracture_toughness (real, default 2e5 Pa m^0.5) The LEFM functions f=1.068 and F=1.122 are hardcoded. Also add diagnostic field hydrofractureVulnerabilityMask (computed for all floating ice) and write it to the output stream.
b5375ca to
03b3970
Compare
TestingAll tests pass except for the recently added RC and DF tests, which is expected because the base of this branch is too old to support them. I have not tested the added functionality, but this confirms that these changes do not break existing tests. |
Mask calving now uses flood-fill algorithm to ensure that vulnerable ice shelf areas are only calved when connected to the marine margin (calving front). This prevents unphysical calving in the interior of ice shelves. The implementation creates a marine dynamic margin mask by identifying cells at the dynamic margin adjacent to open ocean or nondynamic floating ice connected to open ocean. Flood-fill then propagates from these seed cells through contiguous vulnerable floating ice that meets the calving criteria. Only ice connected to the marine margin is removed. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
TestingI tested this on a CESM2-WACCM SSP585 ISMIP7 run set up using MPAS-Dev/compass#989. I started the run in 2250 (just using the c. 2008 initial condition for testing), with the following relevant namelist settings: The maps below confirm that calving only occurs where |
matthewhoffman
left a comment
There was a problem hiding this comment.
@trhille , this is exciting to have this working. I made a few comments for minor changes, but given the deadline we are working under and the marginal impact of them, I'm fine with merging this as-is, so I'm approving now.
| <var name="upperSurface"/> | ||
| <var name="temperature"/> | ||
| <var name="cellMask"/> | ||
| <var name="hydrofractureVulnerabilityMask"/> |
There was a problem hiding this comment.
I don't think it makes sense to have this in the default output stream. But given the default output stream already has sort of random fields in it, and we never actually use it, it's fine to leave it in, and we can make a more intentional choice about cleaning this up at a later point.
| endif | ||
| enddo | ||
|
|
||
| ! create mask of cells that are on the dynamic **marine** margin |
There was a problem hiding this comment.
Ideally we'd move this to a shared routine that can be called from here and from damage calving.
| call mpas_pool_get_config(liConfigs, 'config_calving_fracture_toughness', config_calving_fracture_toughness) | ||
| call mpas_pool_get_config(liConfigs, 'config_ice_density', config_ice_density) | ||
|
|
||
| ! Threshold resistive stress for hydrofracture vulnerability, eq. 8 of Reynolds and Nowicki (2026) |
There was a problem hiding this comment.
It would be nice to gate this to only be calculated if needed.
There was a problem hiding this comment.
This is just a scalar calculation, so evaluating an if-statement would probably be more expensive.



Add a fracture-toughness-based vulnerability criterion to MALI mask calving so the ISMIP7 Path C shelf-collapse mask only removes floating ice that is also vulnerable to hydrofracture per Lai et al. (2020) / Reynolds and Nowicki (2026, eqs 4-8).
A cell is vulnerable where the resistive stress R_xx = 2*tauMax + tauMin exceeds a thickness-independent threshold that depends on ice fracture toughness. This merge also requires that cells marked with
calvingMaskare contiguous with the marine margin before being removed. New namelist options:Also add diagnostic field hydrofractureVulnerabilityMask (computed for all floating ice) and write it to the output stream.