Skip to content

Add Vertical Advection design document#301

Merged
sbrus89 merged 4 commits intoE3SM-Project:developfrom
brian-oneill:omega/vertadv-design
Apr 3, 2026
Merged

Add Vertical Advection design document#301
sbrus89 merged 4 commits intoE3SM-Project:developfrom
brian-oneill:omega/vertadv-design

Conversation

@brian-oneill
Copy link
Copy Markdown

This PR adds the design document for the vertical advection module. Compiled here.

Checklist

  • Documentation:
    • Design document has been generated and added to the docs
    • Documentation has been built locally and changes look as expected

Comment thread components/omega/doc/design/VertAdv.md Outdated
Comment thread components/omega/doc/design/VertAdv.md Outdated
Comment thread components/omega/doc/design/VertAdv.md Outdated
Comment thread components/omega/doc/design/VertAdv.md Outdated
Comment thread components/omega/doc/design/VertAdv.md Outdated
Comment thread components/omega/doc/design/VertAdv.md Outdated
@cbegeman
Copy link
Copy Markdown

cbegeman commented Dec 1, 2025

Can you clarify somewhere the relationship between your "Core data arrays" and the variables in the Algorithm section? I think I understand VerticalTransport to correspond to $\tilde{W}_{tr}$ but I don't understand why that is a 2-d array. Is VerticalFlux intended to hold either $U \tilde{W}_{tr}$ or $\phi \tilde{W}_{tr}$?

@cbegeman
Copy link
Copy Markdown

cbegeman commented Dec 1, 2025

The description of VertAdv::computeVerticalTransport sounds to me like it's computing $\tilde{w}$, but I think we've been using the word "Transport" to denote $\tilde{W}_{tr}$. Can you clarify where we're computing each and whether both will be available for output?

@brian-oneill
Copy link
Copy Markdown
Author

@cbegeman Looking again at the V1 equations document, there is a table where VerticalTransport is used for mass flux, and VerticalVelocity is the velocity, so I'll rename the array here to VerticalVelocity (for $\tilde{w}$). VerticalFlux is just intended for tracer fluxes (specifically the high-order fluxes in FCT, and in the standard vertical advection algorithm there is only one flux array needed).

My initial thoughts were to just modify VerticalVelocity in place to include the corrections (for moving coordinate, projection of normal velocity, etc). If we want to store $\tilde{w}$ and $\tilde{W}_{tr}$ separately to allow for output of both quantities I can add a TotalVerticalVelocity member array. As for the actual computation of these corrections, I haven't worked out that implementation yet. For the initial PR, I was planning to assume $\tilde{W}_{tr} = \tilde{w}$.

@cbegeman
Copy link
Copy Markdown

cbegeman commented Dec 2, 2025

@brian-oneill Thanks for clarifying. I think it would be helpful to be explicit in the document with math notation where you are solving for each. The assumption of no vertical coordinate motion seems fine, but it would probably be helpful to specify that in a few places in the document as well. I haven't given this a lot of thought to say whether modifications in place is the best way forward, but it does seem like adding the projection of the normal velocity to VerticalVelocity could lead to confusion.

Copy link
Copy Markdown
Collaborator

@sbrus89 sbrus89 left a comment

Choose a reason for hiding this comment

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

This looks good @brian-oneill, I just have a couple comments.

Comment thread components/omega/doc/design/VertAdv.md
Comment thread components/omega/doc/design/VertAdv.md
@sbrus89
Copy link
Copy Markdown
Collaborator

sbrus89 commented Mar 20, 2026

@brian-oneill, do you want to make any changes to this based on any outstanding review comments? Let me know and we can get it merged soon.

@sbrus89
Copy link
Copy Markdown
Collaborator

sbrus89 commented Mar 20, 2026

I just realized you're the assignee on this one.

@xylar xylar assigned sbrus89 and unassigned brian-oneill Mar 20, 2026
@xylar
Copy link
Copy Markdown

xylar commented Mar 20, 2026

@sbrus89, unless something changed, @brian-oneill doesn't have merge permission. Someone should fix that (I don't have that level of permission) but for now maybe you can merge.

Copy link
Copy Markdown

@cbegeman cbegeman left a comment

Choose a reason for hiding this comment

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

@brian-oneill Thanks for providing those clarifications in the text!

Copy link
Copy Markdown
Collaborator

@sbrus89 sbrus89 left a comment

Choose a reason for hiding this comment

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

This looks good to me. Thanks @brian-oneill!

@sbrus89
Copy link
Copy Markdown
Collaborator

sbrus89 commented Apr 2, 2026

@vanroekel and @mark-petersen this is ready to go if you both approve.

@sbrus89 sbrus89 merged commit ab63a3d into E3SM-Project:develop Apr 3, 2026
1 check passed
xylar added a commit to E3SM-Project/polaris that referenced this pull request Apr 11, 2026
This merge updates the e3sm_submodules/Omega submodule from [c2542a2](https://github.com/E3SM-Project/Omega/tree/c2542a2) to [6c8aa0f](https://github.com/E3SM-Project/Omega/tree/6c8aa0f).

This update includes the following MPAS-Ocean and MPAS-Frameworks PRs (check mark indicates bit-for-bit with previous PR in the list):
- [ ]  (ocn) E3SM-Project/Omega#301
- [ ]  (ocn) E3SM-Project/Omega#358
- [ ]  (ocn) E3SM-Project/Omega#378
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants