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

Revamp and extend ClimaCore matrix data structures #1190

Closed
wants to merge 5 commits into from

Conversation

dennisYatunin
Copy link
Member

@dennisYatunin dennisYatunin commented Apr 14, 2023

This PR will add a proper API for "columnwise band matrix fields" and "block matrices of matrix fields" to ClimaCore, along with unit tests and documentation. This will vastly simplify and extend the matrix data structures and operations that are currently spread across ClimaCore.jl/src/Operators/stencilcoefs.jl, ClimaCore.jl/src/Operators/pointwisestencil.jl, ClimaCore.jl/src/Operators/operator2stencil.jl, ClimaAtmos.jl/src/tendencies/implicit/wfact.jl, and ClimaAtmos.jl/src/tendencies/implicit/schur_complement_W.jl. These changes are needed in order to more easily extend the Atmos model, particularly to handle the new EDMFX model. Specifically, these changes will allow us to solve for the diagnostic EDMFX quantities, to implicitly solve for the prognostic EDMFX quantities, and to implicitly solve for the prognostic grid-scale quantities using the EDMFX quantities.

  • Code follows the style guidelines OR N/A.
  • Unit tests are included OR N/A.
  • Code is exercised in an integration test OR N/A.
  • Documentation has been added/updated OR N/A.

Copy link
Member

@charleskawczynski charleskawczynski left a comment

Choose a reason for hiding this comment

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

Can we:

  • Write tests for this sketch that compare against a very simple Fortran-style array implementation, for a few core examples?
  • Write additional unit tests that you believe are important to ensure the correctness, including edge and corner cases (and so that others can exercise this code for, e.g., performance analysis)

@trontrytel
Copy link
Member

Would it be meaningful to have a simple integration test planned as well? Where we would solve some simpler set of coupled equations than the full EDMFX+dycore and test the implicit solver? We could use it to explain the concepts/abstractions that need to be implemented? I think it would help with documenting what is happening also

@dennisYatunin dennisYatunin force-pushed the dy/matrix_structures branch 3 times, most recently from dd45f66 to c94fa19 Compare May 5, 2023 00:30
@dennisYatunin dennisYatunin force-pushed the dy/matrix_structures branch from 05109a1 to 3c9ac01 Compare May 25, 2023 01:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
API feature New feature
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants