Skip to content

Include Omega fields needed for p* coordinate in initial conditions#573

Draft
xylar wants to merge 3 commits intoE3SM-Project:mainfrom
xylar:add-ref-layer-thickness
Draft

Include Omega fields needed for p* coordinate in initial conditions#573
xylar wants to merge 3 commits intoE3SM-Project:mainfrom
xylar:add-ref-layer-thickness

Conversation

@xylar
Copy link
Copy Markdown
Collaborator

@xylar xylar commented May 5, 2026

This PR maps vertCoordMovementWeights to VertCoordMovementWeights in Omega and adds RefLayerThickness as the reference pseudo-thickness computed from restingThickness in Omega initial conditions.

We also add support for multiple iterations for computing pseudo-thickness from geometric thickness if the EOS is TEOS-10. The default is 6 iterations, which has been found to be sufficient to achieve machine precision in the horiz_press_grad test.

Checklist

  • Testing comment in the PR documents testing used to verify the changes

@xylar xylar marked this pull request as draft May 5, 2026 11:48
@xylar xylar added Omega PR required The polaris changes won't work with the current Omega submodule and require an update enhancement New feature or request ocean Related to the ocean component labels May 5, 2026
@xylar xylar self-assigned this May 5, 2026
xylar added 2 commits May 5, 2026 13:50
This is needed so we can compute the reference pseudo-thickness
for p* from `restingThickness`.

This merge also adds support for multiple iterations when computing
pseudo-thickness using TEOS-10.
@xylar xylar force-pushed the add-ref-layer-thickness branch from 94a9c56 to 0e8f636 Compare May 5, 2026 11:50
@xylar
Copy link
Copy Markdown
Collaborator Author

xylar commented May 5, 2026

While this should work now, it won't actually be useful until we bring in the p* vertical coordinate from Omega.

@xylar
Copy link
Copy Markdown
Collaborator Author

xylar commented May 5, 2026

Seems to work in that I'm seeing bit-for-bit results with the omega_pr suite and I see the expected variables:

short_forward]$ ncdump -h init.nc 
...

	double PseudoThickness(time, NCells, NVertLayers) ;
		PseudoThickness:long_name = "pseudo-thickness" ;
		PseudoThickness:units = "m" ;
		PseudoThickness:note = "h_tilde = -dp / (RhoSw * g)" ;
	double RefLayerThickness(time, NCells, NVertLayers) ;
		RefLayerThickness:long_name = "pseudo-thickness" ;
		RefLayerThickness:units = "m" ;
		RefLayerThickness:note = "h_tilde = -dp / (RhoSw * g)" ;
...

	double SpecVol(time, NCells, NVertLayers) ;
		SpecVol:long_name = "specific volume" ;
		SpecVol:units = "m3 kg-1" ;
...

	double VertCoordMovementWeights(NVertLayers) ;
...

Comment thread polaris/tasks/ocean/__init__.py Outdated
if self.model == 'omega' and config is not None:
mpas_to_omega_vars = {
'layerThickness': 'PseudoThickness',
'restingThickness': 'RefLayerThickness',
Copy link
Copy Markdown
Collaborator

@cbegeman cbegeman May 5, 2026

Choose a reason for hiding this comment

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

Are there plans to rename the Polaris variable RefPseudoThickness?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Seems that you have that in the pseudo-thickness rename PR. I'm cool with you merging this now and we can make that change after the pseudo-thickness PR is merged.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Yes, that's the plan.

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

Labels

enhancement New feature or request ocean Related to the ocean component Omega PR required The polaris changes won't work with the current Omega submodule and require an update

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants