-
Notifications
You must be signed in to change notification settings - Fork 5
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
ClimaCoupler interface #134
Comments
Looking good! Do you think you could add rough estimates of timelines, @juliasloan25? |
To follow up on our call this morning:
|
Merged
17 tasks
15 tasks
bors bot
added a commit
that referenced
this issue
Jan 3, 2023
175: Boundary Condition Reader interface r=juliasloan25 a=juliasloan25 For reviewers: This is a large PR, but the majority of the changes are in `src/BCReader.jl`, `test/bcreader_tests.jl`, and `test/mpi_tests/bcreader_mpi_tests.jl`. Also, I created the `src/CallbackManager.jl` file in this PR to simplify compatibility with BCReader, but that module will be documented and tested in a separate PR. Move functions from `coupler_utils/bcfile_reader.jl` to `src/BCReader.jl` module, and ensure that they are thoroughly commented and tested. #134 ## To-do PHASE 1 - moving and documentation - [x] Copy file(s) to module in `src/` - [x] Add module to `ClimaCoupler.jl` - [x] Docstring for each function - [x] Add input/output types in docstring if not type annotated - [x] Add docstring info to `docs/src`, `docs/make.jl` - [x] Add exports for externally-used functions - [x] Flag potentially-removable parts of code PHASE 2 - testing - [x] Create test file in `test/`, add to `test/runtests.jl` - [x] Unit test for each exported function in module - [x] Integration tests as needed - [x] Add any tests that use MPI in `test/mpi_tests` and in buildkite pipeline PHASE 3 - cleanup - [x] Remove flagged parts of code - [x] Check all imports are necessary - [x] Formatting - [x] Read through comments Co-authored-by: Julia Sloan <[email protected]>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Purpose
We want to refactor the ClimaCoupler to make a more modular interface.
Benefits
This will remove global-scope objects, making performance tracking faster and increasing usability of the interface. Code will be more generalized and therefore able to be used by different modules more easily.
Risks
We will develop an interface that will conflict with the current main stream of the model. To minimize this risk, we are developing this interface in parallel with development of the rest of the model. Eventually we will change over the rest of the code to align with this new interface design.
People and Personnel
Components
a. Check unit test coverage
a. Check unit test coverage
a. Re-evaluate scope of global variables and make them local if possible
b. Add coupler-specific abstractions which are consistent with other CliMA model abstractions
c. Optimize, generalize existing coupler functions
Module Conversion Task Breakdown
For each module:
PHASE 1 - moving and documentation
src/
src/ClimaCoupler.jl
a. Add input/output types in docstring if not type annotated
b. Add docstring info to docs/src, docs/make.jl
PHASE 2 - testing
test/
, add totest/runtests.jl
a. Test simplest functions first
test/mpi_tests
and in buildkite pipelinea. Add file to
run_mpi_tests.jl
PHASE 3 - cleanup
a. Test after each one
Results and deliverables
Information exchange (push_pull.jl, flux_calculator.jl)Quality expectations
Performance metrics
Throughout development, we will track performance changes as we update modules. During the optimization stage (after translation to modules) flame graphs will be used to assess performance of the entire driver.
Task Breakdown And Tentative Due Dates
Next steps (partly addressed in issue #205 )
Proposed Delivery Date
10 January 2023
The text was updated successfully, but these errors were encountered: