Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add grazer specific diagnostics #236

Closed
jessluo opened this issue Feb 28, 2018 · 5 comments
Closed

Add grazer specific diagnostics #236

jessluo opened this issue Feb 28, 2018 · 5 comments

Comments

@jessluo
Copy link
Collaborator

jessluo commented Feb 28, 2018

In the current diagnostics, there is no way to pull out all of the routing terms from grazing if there are multiple grazers. For example, for each autotroph ({auto}), the only available grazing routing diagnostics are graze_{auto}, graze_{auto}_doc, graze_{auto}_poc, and graze_{auto}_zoo.

In the case with multiple grazers (e.g. zoo1, zoo2; {zoo}), it would be beneficial to be able to distinguish between grazing from the various grazers: {auto}_graze_{zoo}_tot, {auto}_graze_{zoo}_doc, {auto}_graze_{zoo}_poc, and {auto}_graze_{zoo}_{zoo}.

These values would only write as tavg output if ecosystem debug mode is turned on.

@mnlevy1981
Copy link
Collaborator

Maybe also add _to_ (e.g. {auto}_graze_{zoo}_to_doc) for clarity? Instead of {auto}_graze_{zoo}_tot, should be {auto}_graze_{zoo}. Note that for {auto}_graze_{zoo}_to_{zoo}, only loop over {zoo} once (will be identical in both instances). Also, can replace {auto} with {zoo1} and {zoo} with {zoo2}.

@mnlevy1981
Copy link
Collaborator

Perhaps this needs to be a separate ticket, but only need diagnostics for {grazee},{grazer} pairs that actually have grazing relationship. (Might be easier if we move grazing into zooplankton_type)

@mnlevy1981 mnlevy1981 added this to the Post-MARBL1.0.0 milestone Mar 20, 2018
@mnlevy1981
Copy link
Collaborator

Talked to @jessluo about this today. The Fortran side seems pretty straightforward:

  1. autotroph_secondary_species_type: make auto_graze_zoo an allocatable array and allocate it to dimension(zooplankton_cnt) in set_interior_forcing()

  2. Account for extra dimension in compute_grazing(), compute_routing(), and compute_dtracer_local()

  3. Add extra dimension to auto_graze_zoo in marbl_interior_diagnostics_indexing_type

    • Keep zint diagnostics as sum over all? Or introduce per-zoo versions there as well? One thought: auto_graze_zootot and auto_graze_zoo + same for zint and zint_100m.
  4. Allocate indices correctly in marbl_diagnostics_init, and update calls to diags%add_diagnostic()

  5. Update how we store the data in store_diagnostics_autotrophs()

I think the harder part will be in updating diagnostics_latest.yaml and MARBL_generate_diagnostics_file.py to handle entries in the YAML that require two ((label)) replacements [e.g. graze_((autotroph_sname))_((zooplankton_sname))]

@jessluo
Copy link
Collaborator Author

jessluo commented Aug 9, 2018

Would also need to do the same for zoo_graze_zoo, just to be consistent.

@mnlevy1981
Copy link
Collaborator

The main crux of this issue (per-zoo grazing diagnostics) was addressed in #328. I don't believe

Perhaps this needs to be a separate ticket, but only need diagnostics for {grazee},{grazer} pairs that actually have grazing relationship. (Might be easier if we move grazing into zooplankton_type)

is included in that PR, but we can re-open this issue if we want to address that later.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants