ClimaLand.jl
ClimaLand.jl copied to clipboard
O2.3.5 Enable global runs (on GPU)
Is your feature request related to a problem? Please describe. We want to be able to run ClimaLSM globally. To do this, there are a few structural changes we need to make first.
Main changes
- need global prescribed atmosphere
- forcings over the globe read in from files
- spatially-varying quantities over the globe
1. unified interface for site and global prescribed atmosphere types (see #451)
- we have: a
PrescribedAtmosphere
type (src/shared_utilities/drivers.jl) which can be used at a point. This holds things like atmospheric CO2, wind speed, pressure, etc - we need: a way to extend this struct to run either at the site-level or globally
- potential solution:
-
Interpolators
module implementing unified interface for all cases (analytic drivers, site-level drivers from data, global drivers from data, (prescribed atmos driver?)). This will isolate the differences between each case to the back-end internals, and avoids the need for a new PrescribedAtmos type
-
2. forcings over the globe - store these in p
and update via callback (see https://github.com/CliMA/ClimaLSM.jl/issues/370)
- we have: forcings stored in
PrescribedAtmosphere
- we need: to move some forcings to
p
. When we update these, we'll dispatch off of the PrescrAtmos type, to read in fields over the sphere when running global and just evaluate a function when running at a column. - the reason for this change is that, in the global case, the forcings will be Fields over the sphere that we want to allocate for once and update over time, instead of allocating on-the-fly as we do with column simulations currently
- potential solution:
- add field
p.forcings
containingsw_in, lw_in, P, T, q
, etc - add function
update_forcings
to update these values. This will dispatch off of PrescrAtmos type (as described above) - call
update_forcings
beforeupdate_aux
andupdate_interactions
to update in correct order
- add field
3. spatially-varying parameters read in over time globally (See https://github.com/CliMA/ClimaLand.jl/issues/126)
- we have: albedo as a first example (
BulkAlbedoSpatial
andBulkAlbedoTemporal
types) - we need: analogous types for other quantities
- soil porosity, vg params, lai, canopy height, vcmax, etc @kmdeck @braghiere
4. Handle file IO
### prescribed atmos/forcings/parameters infrastructure
- [ ] https://github.com/CliMA/ClimaLand.jl/pull/451
- [ ] https://github.com/CliMA/ClimaLand.jl/issues/477
- [ ] https://github.com/CliMA/ClimaLand.jl/issues/126
### GPU compatibility + performance
- [ ] #392
- [ ] https://github.com/CliMA/ClimaLand.jl/issues/587
- [ ] #586
- [ ] https://github.com/CliMA/ClimaLand.jl/issues/593
### Add target run
- [ ] https://github.com/CliMA/ClimaLand.jl/issues/644