Open mnlevy1981 opened 11 months ago
One tricky bit is providing fallback information for the PFTs. I think it makes sense to add these fallback variables to autotroph_settings_type
and zooplankton_settings_type
and use them in init_autotroph_tracer_metadata()
and init_zooplankton_tracer_metadata()
, but there's an edge case with the cocco
tracers... we want all the cocco
tracers fallback to be 0.07x the sp
tracers, except coccoCaCO3 = spCaCO3
since all the calcification comes from coccolithophores in the 4pNz configurations. For testing purposes I can hard-code an exception for CaCO3
but I want a better solution than that before merging a PR to development
POP has an
io_read_fallback_mod
module that can be used to tell the model "if [tracer name] isn't available in the initial condition file, initialize it some other way"; that other way could be "read a different tracer," "read a different tracer but scale it by some factor", or "set it to a constant." (The implementation for the MARBL tracers is here.)Given the general design principal that the GCM should have as little semantic knowledge of MARBL as possible, it makes sense for MARBL to provide the GCM information on what to do if the tracer is not available in the IC file. I think it would make the most sense to extend
tracer_metadata_type
:Where
fallback_option
could be'none'
,'alt_tracer'
, or'const'
and the other new variables are pretty self-explanatory. POP could continue to useio_read_fallback
, but instead of explicitly defining the fallbacks in the linked code snippet, it would just loop through the tracer metadata and register any tracer wherefallback_option
is not'none'
.