3.1.19.3. Same resolution, time extrapolation

Assume two task with the same resolution and the different timesteps are being update by several threads, with a grace value giving an allowed window for time extrapolation::

tA1              tA2               tA3
 |<---dtA1------->|<----dtA2------->|
 0----------------+-----------------+----------------+------------+--- task A
 |-----fA1--------|------fA2--------|-------fA3------|
 |-----fA1----|fA1|----fB2----|-fA2-|---fB3--|
 0------------+---------------+--------------+------------+----------- task B
 |<--dtB1---->|<----dtB2----->|<---dtB3----->|
tB1          tB2             tB3

Assume that after task A and task B have updated as in the previous case, one thread takes task B to do the 2nd time step of it, while another one takes task A, which has also been deemed ready to update, because it is within the grace interval ahead of task B.

Task B will update as in the previous example, using first the fA1 flux from task A, and then its own fl2 flux. Task A will use its own flux (fA2), since task B has not yet made fB2 available. This creates and inconsistency, which needs to be corrected subsequently.

To avoid imposing any new constraints on which task updates before the other, we assume that task A is still ahead by less than the grace value, and hence the two tasks could happen to be updated simultaneously again.

The inconsistency in the fB2 interval may be rectified if task A adds (fB2-fA2) times the length of the time interval. Task B is free to choose to use fA2 in the overlapping time interval, and then its own fB3 value, while task A cannot use new information from task B regarding fluxes, since none is available, and hence it will use fA3 over the whole interval. The situation after the update is thus the same as after the previous update, and may be corrected in the same way, in the next round of updates.