Opened 15 years ago

Closed 15 years ago

#344 closed bug (Fixed)

Corrected release of Lagrangian drifters and parallel bug

Reported by: arango Owned by: arango
Priority: major Milestone: Release ROMS/TOMS 3.3
Component: Nonlinear Version: 3.3
Keywords: Cc:

Description

Corrected the release of new floats. The floats were released twice during two consecutive time steps. The conditional for release needs to be:

       HalfDT=0.5_r8*dt(ng)
       DO l=Lstr,Lend
         IF (.not.bounded(l).and.                                        &
      &      (time(ng)-HalfDT.le.Tinfo(itstr,l).and.                     &
      &       time(ng)+HalfDT.gt.Tinfo(itstr,l))) THEN
           ...
         END IF
       END DO

Previously, we have a dt(ng) instead of HalfDT. This triggered the consecutive release.

To facilitate error tracking the routine interp_floats is now inside of a module. So the arguments to this routine were changed to follow modules rules.

Also corrected a major parallel bug in the vertical random walk. We have been hunting for this bug for days. It was very frustrating since the bug desappeared several times. Well, after all this was a random process. Anyway, the major parallel bug was actually in step3d_t.F when computing the vertical diffusivity gradient. Rats..., I have been looking at the drifters routines for days instead. This one was nasty, it has been in ROMS since its implementation!

The float's vertical random walk is now computed in a separated new module, vwalk_floats.F. This facilitated the predictor/corrector for the float vertical position. It is assumed that the vertical diffusivity and its gradient remains constant during the corrector step. The correction is done only in the float spatial positions. The old forward step is still possible by activating new option VWALK_FORWARD.

Change History (1)

comment:1 by arango, 15 years ago

Resolution: Fixed
Status: newclosed
Note: See TracTickets for help on using tickets.