Opened 16 years ago

Closed 16 years ago

#209 closed bug (Fixed)

FLT_TEST 3D with MPI, out of bounds access in isobaric correction

Reported by: m.hadfield Owned by: arango
Priority: major Milestone: Release ROMS/TOMS 3.2
Component: Nonlinear Version: 3.2
Keywords: Cc:

Description (last modified by arango)

When running FLT_TEST with SOLVE3D defined, with MPI and bounds-checking enabled, an out of bounds error is triggered in step_floats_tile in the code that keeps the floats at their initial depth. The specific statement where the out-of-bounds error occurs is at line 292 in step_floats.F and the failure occurs for float l=231 (i.e. near the top of the grid). The reason it occurs is the horizontal locations, track(ixgrd,nfp1,l) and track(ixgrd,nfp1,l), appear not to have been initialised.

I will look into this further when I can.

Change History (1)

comment:1 by arango, 16 years ago

Description: modified (diff)
Resolution: Fixed
Status: newclosed

Yes, this one was nasty. First, the out-of-bounds was because the logic to initialize the floats in grid_coords.F has some problems. The conditional statement to compute MyThread(:) needs to be the same that we have in step_floats.F. We also have couple of parallel bugs in step_floats.F. We were not getting the exact trajectories in different tile partitions. This happened when an isobaric float was moving to another tile.

I cleaned the code a little and now three types of floats are allowed:

  • 3D Lagrangrian floats (Ftype=1; flt_Lagran)
  • Isobaric floats, p=g*(z+zeta)=constant, (Ftype=2; flt_Isobar)
  • Geopotential floats, constant depth, (Ftype=3; flt_Geopot)
Note: See TracTickets for help on using tickets.