write_any = .false. in gs2_diagnostics_new leads to skipping convergence checks

Issue #43 new
David Dickinson created an issue

The behaviour with write_any=.false. varies between the original and new diagnostics. The original behaviour still results in the linear convergence checks being run even if there is no diagnostic data to write whereas the new module skips this check. I think this is a bug and the new module should still run the convergence check.

Comments (2)

  1. David Dickinson reporter

    Another place with different behaviour is nsave/save_for_restart. With the old diagnostics nsave defaults to -1 and is also forced to -1 if save_for_restart=.false.. With the new diagnostics nsave defaults to 1000 and is not forced to -1 if save_for_restart=.false.. As a result, runs using the new diagnostics will now typically write restart files even if they contain save_for_restart=.false. provided they do at least 1000 steps. I think a sensible compromise is for nsave to default to a suitably large positive integer but for it to be forced to -1 if we've not asked to save restart files.

  2. Stephen Biggs-Fox

    Another example of a bug introduced in the porting of the diagnostics from the old module to the new one is issue #73 (New diagnostics module does not perform file safety check).

    This raises a wider question about diagnostics. Surely there should only be one diagnostics module. It's confusing, especially to new people, to have two. It's also annoying that some features are only in one or the other. For example, it is impossible to achieve the desired behaviour of file_safety_check = .true. and write_zonal_transfer = .true. because the former is only in the old module and the latter is only in the new. It appears that there are a number of bugs in the new diagnostics module. Plus, the library it depends on (simpledataio) is no longer maintained. And the code is really annoying to read (for example gnostics % wryte and gnostics % reed - arrgh!) Presumably, there are some benefits to the new module (beyond write_zonal_transfer). So, how do we propose to consolidate the two modules?

    Or an even bigger question - how do we propose to deal with diagnostics in general going forward?

    Small question - should we open a new issue for this discussion?

  3. Log in to comment