Skip to content

Define the mass balance fluxes everywhere - #40

Merged
xylar merged 2 commits into
ismip:mainfrom
xylar:fix-flux-missing-values
Oct 2, 2026
Merged

xylar merged 2 commits into
ismip:mainfrom
xylar:fix-flux-missing-values

Conversation

@xylar

@xylar xylar commented Oct 1, 2026

Copy link
Copy Markdown
Member

acabf, libmassbfgr and libmassbffl are now forbidden, like the other mass fluxes, as agreed on the issue. A model with no floating ice can submit libmassbffl as zeros. A new check replaces the old basal flux masks: libmassbfgr must be 0 where sftgrf is 0, and libmassbffl where sftflf is 0. Fixes #39.

For reviewers:

  • A fill value in a forbidden variable is an error. To keep it a warning for these three fluxes only, I added a fill_severity column to the data request rather than reusing margin_severity. Reusing it would also have downgraded fill values in lithk.
  • hfgeoubed is typed FL but is a heat flux and is not zero away from ice, so I left it outside_domain.

Changed behavior

  • A fill value in acabf, libmassbfgr or libmassbffl is a warning for now.
  • A nonzero basal flux where its mask is 0 is a warning for now (margin_severity).
  • acabf is no longer compared with orog and topg for where the domain is.

Raising either warning to an error later is a one-cell change in the data request. The user docs are updated in Errors and warnings.


Posted by Claude Code on @xylar's behalf. The testing, analysis and wording above are AI-authored; please check them accordingly.

🤖 Generated with Claude Code

acabf, libmassbfgr and libmassbffl move to the forbidden fill policy, as
agreed on issue ismip#39: like the other mass fluxes, they hold a number in
every cell.  A model without floating ice can then submit the mandatory
libmassbffl as zeros, where before it had to be all fill values, which
the checker rejects.

What the old policies said about where the basal fluxes live is kept as
a new consistency check: libmassbfgr is 0 where sftgrf is 0, and
libmassbffl is 0 where sftflf is 0.  It runs at margin_severity, a
warning for now.

The first round of submissions was written to the old policies, so a
fill value in these three variables is a warning rather than an error.
A new fill_severity column in the data request says so, and making it an
error later is a one-cell change.

The generator writes the basal fluxes as 0 where their mask is 0, and
acabf drops out of the outside_domain footprint comparison, which is the
only change to the reference logs.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@xylar

xylar commented Oct 1, 2026

Copy link
Copy Markdown
Member Author

Testing

  • pytest tests in the isschecker environment: 212 passed
  • sphinx-build -W --keep-going: builds cleanly
  • Regenerated the golden logs. The only change is that acabf no longer has a CONSISTENCY section, since it is no longer outside_domain.

Posted by Claude Code on @xylar's behalf. The testing, analysis and wording above are AI-authored; please check them accordingly.

@xylar
xylar requested a review from hgoelzer October 1, 2026 18:32
@xylar

xylar commented Oct 1, 2026

Copy link
Copy Markdown
Member Author

@hgoelzer, please take a look.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

@hgoelzer hgoelzer left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Great, implemented as discussed.

@xylar
xylar merged commit a243ef1 into ismip:main Oct 2, 2026
6 checks passed
@xylar
xylar deleted the fix-flux-missing-values branch October 6, 2026 10:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

libmassbffl is mandatory per ISMIP7_variable_request.csv but can't be all missing values

2 participants