
The fine grid flux integrals in correct_tracer_tile do not properly account for the coarse grid time interval.
Correct_tracer performs a two-way nesting update of boundary values of the coarse grid tracer field using the difference between the area-integrated (not averaged as stated in initial post), time-integrated fine and coarse boundary fluxes (TFF-TFC), seen below in a nomenclature like the comments in the ROMS code. The timestep interval, dt(ng), is applied in the routine bry_fluxes, but does not appear in the comments.
The expression changes slightly depending on which boundary is being corrected.
The fine grid time summation is missing in tracer_correct_tile, ver 783. Therefore only the flux from the most recent fine grid time step contributes the two-way nesting tracer correction.
As coded and for the tests I've run, the relative correction at the nesting boundary is (TFF-TFC)*pn*pm*Dinv/T_c ~ 10^{-2}, since TFC ~ dt(ngc)/dt(ngf)*TFF. If ROMS is run in a synchronized fashion, ie a common time step for all grids, (TFF-TFC)*pn*pm*Dinv/T_c ~ 10^{-8} or smaller. This is consistent with what was observed in viewtopic.php?f=14&t=4288 - synchronization eliminated my observed nesting error.
If I use the KLUDGE of replacing the summation over the fine grid time steps with a multiplication by the time refinement factor , then (TFF-TFC)*pn*pm*Dinv/T_c ~ 10^{-6} and the nesting errors I reported disappear. This kludge assumes fine grid boundary flux is constant over the coarse time step. This kludge is not a valid correction since the fine grid flux at the boundaries does not stay constant over the interval.