We want the coupler to treat model information exchanges in a way that it is agnostic to the particular component model source.
Linking on #44
The information exchange piece of the coupler contains the following:
combine surfaces
regrid
rescaling / unit conversion
mask application (and switching off the model in masked areas)
coordination of the timing of the exchange (not addressed here, see #260
optional flux calculation specification
Cost/Benefits/Risks
b: a step towards seamless coupling of different model components, including Oceananigans
r: this may be disruptive across the repo (this will be done in a piece-wise manner, based on a separate initial prototype, with incremental PRs)
People and Personnel
Lead: @LenkaNovak
Collaborators: @juliasloan25
Reviewers: @kmdeck,
Components
Model component level: adapters for specific component model (e.g. oceananigans, slab ocean, ... ) in the experiments directory for each component model type (e.g., ocean)
specifying
exchanged state and flux fields (T_sfc, albedo, roughness, SIC, energ_fluxes, momentum_fluxes)
function that can perform the interrupted stepping
whether fluxes are calculated in this model
mesh and spatial discretization for regridding
any model subcomponents that need to be treated separately (e.g. open water, sea ice)
Coupler Interface level: use CouplerState-like interface, with some adjustments
Inputs
research other couplers, review past designs (e.g. #99 ), and protototype on a simple example
implementation of new ModelExchange module
modifying affected modules
unit tests
update existing GCM drivers
new driver for diffusive column + 2 slabs
new driver with Oceananigans
Results and Deliverables
[ ] ModelExchange module + unit tests
[ ] adaptation of the current modules (coupler_simulation.jl, Regridder.jl, Utilities.jl, ConservationChecker.jl), including new unit tests if needs be
[ ] implementation in the AMIP driver
[ ] implementation in the slabplanet driver (conservation check)
[ ] driver for a diffusive column + 2 slabs (with ClimaCore as the only dependence)
[ ] driver for Oceananigans + Atmos in a Cartesian domain
The Climate Modeling Alliance
Software Design Issue 📜
Purpose
We want the coupler to treat model information exchanges in a way that it is agnostic to the particular component model source.
Linking on #44
The information exchange piece of the coupler contains the following:
Cost/Benefits/Risks
b: a step towards seamless coupling of different model components, including Oceananigans r: this may be disruptive across the repo (this will be done in a piece-wise manner, based on a separate initial prototype, with incremental PRs)
People and Personnel
Components
Inputs
Results and Deliverables
coupler_simulation.jl
,Regridder.jl
,Utilities.jl
,ConservationChecker.jl
), including new unit tests if needs beTask Breakdown And Schedule
SDI Revision Log
Future steps
CC
@tapios @simonbyrne @cmbengue