marbl-ecosys / MARBL

Marine Biogeochemistry Library
https://marbl-ecosys.github.io
Other
13 stars 21 forks source link

Set flux_at_ref_depth to reasonable value when ref_depth is deeper than bottom of column #393

Open mnlevy1981 opened 2 years ago

mnlevy1981 commented 2 years ago

In marbl_interior_tendency_mod:L3021, we have a mechanism to set [sinking particulate type]%flux_at_ref_depth when we find the depth containing particulate_flux_ref_depth_cm; if the reference depth is above the ocean floor then we use the flux at the layer containing the reference depth, and if the reference depth is between the ocean floor and the bottom of the column we set the flux to 0.

This worked fine with POP, where shallower columns had fewer active layers than deeper columns but depths below the ocean floor were still included in the column. In MOM, there are options for the vertical levels that make it possible for the bottom-most depth of the column to be above the reference depth. In these cases, [sinking particulate type]%flux_at_ref_depth is unchanged from whatever value happens to be in memory from the previous column.

Currently we rely on the GCM driver to mask out 2D diagnostics where the reference depth is below the ocean floor, but it would be nice to have a mechanism for MARBL to handle this as well. The easiest solution is probably to initialize [sinking particulate type]%flux_at_ref_depth in set_surface_particulate_terms(), but that still raises two questions:

  1. should we initialize these fluxes to 0, or should we have the GCM provide a fill value during initialization? (perhaps the default fill value would be 0?)
  2. what should we rename set_surface_particulate_terms()? We want to avoid terms like init in the function name, since it is not called during the initialization phase. Perhaps reset_particulate_terms()?
mnlevy1981 commented 2 years ago

I should note that I looked in the CISO module, and I don't think there is a corresponding block of code to modify for the carbon isotopes. If there is, it does not use a variable with ref_depth in its name.