Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add tridiagonal solver design document #166

Merged

Conversation

mwarusz
Copy link
Member

@mwarusz mwarusz commented Nov 21, 2024

Design document for tridiagonal solve, which will be used for the vertical diffusion in the momentum and tracer equations.

Checklist

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

@mark-petersen mark-petersen self-requested a review December 9, 2024 16:31
@cbegeman
Copy link

Note that this design doc includes the Schopf and Loughe (1995) approach for accuracy and stability discussed here: E3SM-Ocean-Discussion#42

@mwarusz mwarusz force-pushed the mwarusz/omega-tridiagonal-design branch from d519042 to 342bb32 Compare January 23, 2025 21:41
@mwarusz mwarusz mentioned this pull request Jan 24, 2025
8 tasks
@mwarusz mwarusz marked this pull request as ready for review January 24, 2025 16:13
@mwarusz
Copy link
Member Author

mwarusz commented Jan 24, 2025

@mark-petersen

I have updated this design doc and it is now ready for review. I also opened a draft PR with the implementation (#194). When reviewing the design it might be helpful for you to have a look at one of the unit tests showing how these solvers are used to solve a simple 1D diffusion problem:

https://github.com/mwarusz/E3SM/blob/5617516be139facfaa904e0713287a0d9e4d5b8f/components/omega/test/base/TridiagonalTest.cpp#L146-L245

Copy link

@mark-petersen mark-petersen left a comment

Choose a reason for hiding this comment

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

@mwarusz, thank you for this detailed design document. I compiled locally and reviewed the html version, which looks good. Thanks for adding the Thomas and parallel cyclic reduction versions, which will be useful for stability and performance.

This design doc begins with the equation for the general tridiagonal solve, which is the right scope for this part of the project. In a future design doc we can specify the form of those three coefficients and the boundary equations, as I did here for MPAS-Ocean.

components/omega/doc/design/TridiagonalSolver.md Outdated Show resolved Hide resolved
components/omega/doc/design/TridiagonalSolver.md Outdated Show resolved Hide resolved
@mark-petersen mark-petersen self-assigned this Jan 29, 2025
@mark-petersen
Copy link

Pinging @katsmith133 @vanroekel and @philipwjones, if any of you want to review this design document.

@philipwjones
Copy link

Seems ok to me. I may be more particular about the interface above this for mixing/diffusion.

@vanroekel
Copy link

Also looks fine to me.

@mwarusz mwarusz force-pushed the mwarusz/omega-tridiagonal-design branch from 26a3641 to 30bbafc Compare February 3, 2025 15:25
@mark-petersen mark-petersen merged commit dc3286a into E3SM-Project:develop Feb 3, 2025
2 checks passed
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