MOM6
MOM6 copied to clipboard
potential issue with neutral diffusion diagnostics when multiple iterations per timestep occur
The post_data
calls for neutral diffusion diagnostics occur within the subroutine neutral_diffusion
. This subroutine is called from subroutine tracer_hordiff
inside a sub-cycling iteration loop that is there to avoid violating diffusive CFL limits. If there are multiple iterations because of CFL limits, then there are multiple calls to post_data
per timestep for these diagnostics.
Note that advection diagnostics are handled differently. While advection can be sub-cycled, the advection diagnostics are accumulated across these iterations, and the post_data
calls are outside of the iteration loop.
The potentially multiple calls per timestep to post_data
for neutral diffusion diagnostics result in multiple calls per timestep to FMS's send_data
. Does FMS handle multiple send_data
calls per timestep for individual diagnostics?
The same question applies to diagnostics for lateral boundary mixing, whose implementation closely follows the neutral diffusion implementation.
No, FMS does not handle multiple post_data calls per timestep gracefully, so it is up to the MOM6 code to accumulate the net transports across multiple iterations. The construct noted with this issue is a bug and should be fixed.
@klindsay28, are there ongoing efforts to fix this via the dev/ncar fork, or should we try to organize someone to address this bug?
@Hallberg-NOAA, I am working on this on the dev/ncar fork. Thanks for asking.