Skip to content

Add TEOS-10 and z-tilde vertical coordinate#464

Open
xylar wants to merge 22 commits intoE3SM-Project:mainfrom
xylar:add-teos10-and-ztilde
Open

Add TEOS-10 and z-tilde vertical coordinate#464
xylar wants to merge 22 commits intoE3SM-Project:mainfrom
xylar:add-teos10-and-ztilde

Conversation

@xylar
Copy link
Collaborator

@xylar xylar commented Feb 18, 2026

This pull request introduces a modular and extensible Equations of State (EOS) framework for the Polaris ocean model, enabling support for both linear and TEOS-10 EOS options. It adds new high-level APIs for computing seawater density and specific volume, improves documentation, and refactors vertical coordinate handling for clarity and extensibility.

This merge also adds a module for the z-tilde vertical coordinate in Omega. Functionality is available for computing geometric pressure from pseudo-height and vice versa, as pressure from geometric thickness, geometric height from pseudo-height, and finally pressure and specific volume together from temperature and salinity values at specified locations in geometric height.

In addition, this merge includes performance improvements and clean-up to the z-star and z-level vertical coordinate initialization.

Checklist

  • Developer's Guide has been updated
  • API documentation in the Developer's Guide (api.md) has any new or modified class, method and/or functions listed
  • Documentation has been built locally and changes look as expected
  • Testing comment in the PR documents testing used to verify the changes

xylar added 21 commits February 18, 2026 08:07
This merge also adds docstrings and adds a compute_specvol()
funciton
It is the same as z-star in this context
One function computes the pressure given geometric layer
thickness and specific volume, while the other computes
pressure and specific volume iteratively, given geometric
thickness, temperature and salinity (among other things).
This computes geometric height from pseudo-height, complimenting
the functionality we already have to compute pseudo-height from
geometric height.
@xylar xylar self-assigned this Feb 18, 2026
@xylar xylar added enhancement New feature or request framework Changes relating to the polaris framework as opposed to individual tests or analysis ocean Related to the ocean component labels Feb 18, 2026
@xylar
Copy link
Collaborator Author

xylar commented Feb 18, 2026

Testing

I ran both the Omega and MPAS-Ocean PR suites on Chrysalis with Intel, using main as a baseline.

For Omega, I am seeing diffs in manufactured solution del4 (again!) that I can't yet explain. All other tests are BFB.

For MPAS-Ocean, I am seeing machine-precision diffs in the initial conditions for in the ice_shelf_2d/5km/z-star test and overflow/default, and BFB results for all other tests.

@xylar
Copy link
Collaborator Author

xylar commented Feb 18, 2026

I believe my diffs are just a mistake in the Omega version I was using as the baseline. I have re-initialized the Omega submodule and now see no differences in my omega.yml files (baseline compared with this branch), whereas i saw diffs earlier. I'll update soon...

@xylar
Copy link
Collaborator Author

xylar commented Feb 18, 2026

Rerunning the Omega PR suite with the correct baseline Omega submodule shows bit-for-bit results for all tests.

@xylar xylar requested a review from cbegeman February 18, 2026 19:35
@xylar
Copy link
Collaborator Author

xylar commented Feb 18, 2026

@cbegeman, would you have time to give this a quick look? My hope is that this will be helpful to you as well, but we may have some conflicts with other work to untangle after this goes in.

@xylar
Copy link
Collaborator Author

xylar commented Feb 19, 2026

I think it would make sense for this to go in before #460 but we should discuss that.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request framework Changes relating to the polaris framework as opposed to individual tests or analysis ocean Related to the ocean component

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

Comments