You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Before running the functionality that calculates fluxes over multiple arbitrary surfaces, as specified in #311 , we need to update combine_surfaces! and update_surface_fractions. This includes a new Interfacer module that prescribes the component model interfaces. This is a prequel to the ClimaEarth.jl design, and a step towards having a source code that has no dependencies on the data structures of the underlying component models.
Components
update code with interface changes
add unit tests for Interfacer
update slabpanet
update AMIP
QA
the same behavior compared to current main recovered
conservation
AMIP paperplots
comparable performance to the current main
CI unit tests pass
Note on the design
we're using a function get_field(sim::ComponentModelSimulation, ::Val(:{field_of_interest})) for now, which allows model-agnostic field specification, as well as definition of wrapper methods, such as get_field(sim::ComponentModelSimulation, ::Val, colidx). While we could define variable-specific functions, e.g. get_termperature, and use anonymous functions for the wrapper functions, the wrapper functions would be less transparent and may cause conflicts with methods of the same signature. Alternatively, we could define each variable as a struct object upon which we dispatch, but this adds a bit more code and less flexibility when developing. The current solution seems like a good temporary compromise.
The text was updated successfully, but these errors were encountered:
Before running the functionality that calculates fluxes over multiple arbitrary surfaces, as specified in #311 , we need to update
combine_surfaces!
andupdate_surface_fractions
. This includes a newInterfacer
module that prescribes the component model interfaces. This is a prequel to theClimaEarth.jl
design, and a step towards having a source code that has no dependencies on the data structures of the underlying component models.Components
Interfacer
QA
Note on the design
get_field(sim::ComponentModelSimulation, ::Val(:{field_of_interest}))
for now, which allows model-agnostic field specification, as well as definition of wrapper methods, such asget_field(sim::ComponentModelSimulation, ::Val, colidx)
. While we could define variable-specific functions, e.g.get_termperature
, and use anonymous functions for the wrapper functions, the wrapper functions would be less transparent and may cause conflicts with methods of the same signature. Alternatively, we could define each variable as a struct object upon which we dispatch, but this adds a bit more code and less flexibility when developing. The current solution seems like a good temporary compromise.The text was updated successfully, but these errors were encountered: