Opened 14 years ago
Closed 14 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.