Skip to content

adds an mpaso-like frazil option#466

Draft
alicebarthel wants to merge 12 commits into
E3SM-Project:developfrom
alicebarthel:omega/add-frazil-basic-rebased
Draft

adds an mpaso-like frazil option#466
alicebarthel wants to merge 12 commits into
E3SM-Project:developfrom
alicebarthel:omega/add-frazil-basic-rebased

Conversation

@alicebarthel

@alicebarthel alicebarthel commented Jul 10, 2026

Copy link
Copy Markdown

This draft PR is simply to increase the visibility of my basic-frazil dev branch (rebased on #462) to open it up for feedback.

In short:

  • basicFrazil mirrors the mpas-o implementation logic into omega (non BFB due to eos and fundamental equation differences, it is a mass-based cousin of the mpas-o implementation);
  • it runs on pm-cpu and pm-gpu so could be an option while we wait for the eos port that will enable the teos frazil option to run on gpus.

Caveats about physics:

  • it is non-conservative in energy by construction so would not recommend this for production runs. I manually changed the conservationCheck to be logging not failing to understand the behavior, but we probably want to switch it back for production runs with teos frazil that we know should be conservative.
  • by default it uses a constant salinity of IceRefSal and is conservative in salt (and mass). There is a manual option to use porosity rather than constant IceRefSal. The simple ctest shows that this is very non-conservative in salt (order of magnitude difference!). Thus the redistribution of the excess salt in the top layer reconciles this but is likely a strong surface forcing. I don't recommend this as a good approach either but we could later quantify this in single-column tests with more realistic conditions.

Scope and future work:

  • we could easily make an intermediate version of frazil that uses constant latent heat yet tracks the thermodynamics more closely. If the full teos frazil version is too expensive, we could consider this.
  • @njeffery is developing a better mpaso frazil so we could update the omega basicFrazil to mirror it later.

To do:

  • ctests that cover both options;
  • check on the mass, I am missing the salt term because of wanting to mirror mpaso.
  • the "low salinity" check that was in mpaso has not been implemented here.

Checklist

  • Documentation:
  • Linting
  • Building
    • CMake build does not produce any new warnings from changes in this PR
  • Testing
    • CTest unit tests (for basic option only) pass on pm-cpu and pm-gpu.
    • New tests:
      • CTest unit tests: added unit testing for basicFormation.
      • Polaris tests: TBD in single column.

Comment on lines +378 to +382
LocAccMIce(ICell) = LocAccMIce(ICell) * RhoSw;
LocAccMLiq(ICell) = LocAccMLiq(ICell) * RhoSw;
LocAccMSalt(ICell) = LocAccMSalt(ICell) * RhoSw * PPt2Salt;
LocAccELiq(ICell) = LocAccELiq(ICell) * RhoSw;
LocAccEIce(ICell) = LocAccEIce(ICell) * RhoSw;

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

@andrewdnolan Let's chat about these terms so that we agree on the definitions and conversions for the SfcCoupling class.

Comment on lines +489 to +494
// Convert to coupler units
LocAccMIce(ICell) = LocAccMIce(ICell) * RhoSw;
LocAccMLiq(ICell) = LocAccMLiq(ICell) * RhoSw;
LocAccMSalt(ICell) = LocAccMSalt(ICell) * RhoSw * PPt2Salt;
LocAccELiq(ICell) = LocAccELiq(ICell) * RhoSw;
LocAccEIce(ICell) = LocAccEIce(ICell) * RhoSw;

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

@andrewdnolan Let's chat about these terms so that we agree on the definitions and conversions for the SfcCoupling class.

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.

1 participant