Skip to content

Add basic frazil only - #509

Draft
katsmith133 wants to merge 23 commits into
E3SM-Project:developfrom
katsmith133:omega/add-basic-frazil-only
Draft

Add basic frazil only#509
katsmith133 wants to merge 23 commits into
E3SM-Project:developfrom
katsmith133:omega/add-basic-frazil-only

Conversation

@katsmith133

Copy link
Copy Markdown

This PR pulls the basic frazil option out of #466 so that it can be reviewed and merged first. The TEOS-10 option will need extra work and time. This branch has also been rebased onto #461 so that it can take advantage of small changes made there to some of the helper functions. I include here the information from #466 relevant to the basic frazil option:

General implementation (documented in the docs):
The Frazil class calculates the frazil in a vertical column. We calculate the (cell, layer) tendencies and accumulate frazil fields that are necessary for frazil calculation in the layers above. The tendency class then simply calls frazil (if tendencies are turned on) and uses the tendencies. The column-integrated frazil fields (mass, energy, salt) will be passed to the coupler explicitly.

Basic frazil and caveats:
- 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 is non-conservative in energy by construction so would not recommend this for production runs. Alice 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!). The redistribution of the excess salt in the top layer reconciles this but is likely a strong surface forcing. Alice doesn't recommend this as a good approach either but we could later quantify this in single-column tests with more realistic conditions.

Additional information can be found in #466 on scope and future work.

Checklist

  • Documentation:

  • Linting

  • Building

    • CMake build does not produce any new warnings from changes in this PR
  • Testing

    aurora, oneapi-ifx, mpich

    • CTests Pass
    • Polaris omega_pr Pass

    chrysalis, oneapi-ifx, openmpi

    • CTests Pass
    • Polaris omega_pr Pass

    frontier, craygnu, mpich

    • CTests Pass
    • Polaris omega_pr Pass

    frontier, craygnu-mphipcc, mpich

    • CTests Pass
    • Polaris omega_pr Pass

    pm-cpu, gnu, mpich

    • CTests Pass
    • Polaris omega_pr Pass

    pm-gpu, gnugpu, mpich

    • CTests Pass
    • Polaris omega_pr Pass
  • Provide relevant details in a comment to the PR titled Testing with the following:

    • Which machines CTest unit tests
      have been run on and indicate that are all passing.
    • The Polaris omega_pr test suite
      has passed, using the Polaris e3sm_submodules/Omega baseline
    • Document machine(s), compiler(s), and the build path(s) used for -p for both the baseline (Polaris e3sm_submodules/Omega) and the PR build
    • Indicate "All tests passed" or document failing tests
    • Document testing used to verify the changes including any tests that are added/modified/impacted.
  • New tests:

    • CTest unit tests for new features have been added per the approved design.
    • Polaris tests for new features have been added per the approved design (and included in a test suite)

@katsmith133

Copy link
Copy Markdown
Author

Testing

CTest unit tests:

  • Machine: Frontier
  • Compiler: PM-CPU, PM-GPU
  • Build type: Release
  • Result: All tests passed

@katsmith133
katsmith133 marked this pull request as draft August 12, 2026 16:29
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.

4 participants