ClimaCoupler.jl
ClimaCoupler.jl copied to clipboard
O5.1.x (coupler) Software Improvements for ClimaCoupler
The Climate Modeling Alliance
Software Design Issue 📜
Purpose
We are planning an initial release of ClimaCoupler.jl v0.1.0, which will include some software revamps (see #358). There are additional improvements to our codebase that need to be made, but will be done after this release to break down the tasks we have into more manageable chunks. These are lower priority items, so there isn't a big focus on these.
Cost/Benefits/Risks
b: streamlining AMIP delivery, higher code quality c: developer time
People and Personnel
- Lead: @juliasloan25
- Collaborators:
- Reviewers:
Components
- clean up coupler interface
- unify coupler/atmos interaction
- performance improvements
- use consistent conventions
- misc. other tasks
Inputs
This SDI follows from #358 and will be worked on in parallel with #367 and #390
Results and Deliverables
- clean coupling interface
- remove hard coding in atmos/coupler interface
QA
- performance should stay the same or improve (#323)
SDI Revision Log
Proposed Delivery Date
31 October 2024
CC
@tapios @cmbengue
### clean up coupler interface
- [ ] https://github.com/CliMA/ClimaCoupler.jl/issues/335
- [ ] https://github.com/CliMA/ClimaCoupler.jl/issues/331
- [ ] https://github.com/CliMA/ClimaCoupler.jl/issues/336
### unify coupler/atmos interaction
- [ ] https://github.com/CliMA/ClimaCoupler.jl/issues/445
- [ ] atmos: `set_precomputed_quantities` not called so EDMF breaks since it steps during init, unless hardcoded fluxes at t=0 [ask Dennis]
- [ ] atmos: `MoistNonEquil` surface thermo state is hardcoded now - want to be able to use other types
- [ ] atmos: need separation between flux inputs setting and calculation - want to be able to set atmos state, then calculate fluxes later (but atmos automatically calcs flux when setting IC)
- [ ] coupler: simplify the init and exchange of fields after Atmos interface revamp - init in 5 lines: 1) get integrator state of each model, 2) exchange all states, 3) compute misc aux (e.g., q_sfc - though also abstractable), 4) calculate fluxes, 5) exchange fluxes
### miscellaneous
- [ ] https://github.com/CliMA/ClimaCoupler.jl/issues/406
### separate surface flux calculation from states
- [ ] https://github.com/CliMA/ClimaCoupler.jl/issues/479