Opened 13 years ago

Closed 13 years ago

#515 closed bug (Fixed)

IMPORTANT: serious bug in step3d_uv.F

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

Description

In src:ticket:512 (June 3, 2011) I reported and corrected a parallel bug in step3d_uv.F. It turns out that this did not affected the double-periodic applications (EW_PERIODIC plus NS_PERIODIC) and north-south periodic applications (NS_PERIODIC), but unnecessarily introduced an new bug in other applications. I was completely blinded by the debugger which operates on the *.f90 files and not on the full *.F. My bad!!! The logic in the section of the routine is delicate and complicated because we cannot have redundant assignments in the adjoint model.

I screw-up royally here. I sincerely apologize. If you updated or downloaded the code after June 3, 2011, YOU NEED TO UPDATE. This is a serious parallel bug. It is very serious in the adjoint model and their algorithms. I have been hunting for this new bug that I introduced since last month. It was extremely difficult to catch this bug in the new version of the code that will be released soon. This new version removed all the lateral boundary conditions CPP options because of the nesting algorithm (a massive change). We now use logical switches that are set-up in ocean.in.

We need to have the following conditionals around line 1122:

# if !defined EW_PERIODIC && !defined COMPOSED_GRID
        IF (DOMAIN(ng)%Western_Edge(tile)) THEN
          ...
        END IF
        IF (DOMAIN(ng)%Eastern_Edge(tile)) THEN
          ...
        END IF
# endif
# if !defined NS_PERIODIC && !defined COMPOSED_GRID
        IF (j.eq.0) THEN
          ...
        END IF
        IF (j.eq.Mm(ng)+1) THEN
          ...
        END IF
# endif

Similar logic need to be corrected for the coupling of the southern and northern boundary values for v component. The problem here is the that J-loop is pipelined and we cannot use the DOMAIN(ng)%Southern_Edge(tile) or DOMAIN(ng)%Northern_Edge(tile) resulting in a serious bug. My apologies...

The TLM, RPM, and ADM versions of these routines are also corrected.

Change History (1)

comment:1 by arango, 13 years ago

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