Opened 4 years ago

Closed 4 years ago

#843 closed bug (Fixed)

Subscript out of bounds on river tracer source when using HSIMT

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

Description (last modified by arango)

The following error is issued when using HSIMT tracer advection:

forrtl: severe (408): fort: (2): Subscript #2 of the array HVOM has value 73 which is greater than the upper bound of 72

Image              PC                Routine            Line        Source             
oceanG             000000000305D9E6  Unknown               Unknown  Unknown
oceanG             00000000014BED29  step3d_t_mod_mp_s         703  step3d_t.f90
oceanG             00000000014622DA  step3d_t_mod_mp_s          78  step3d_t.f90

On this particular tile, Hvom is dimensioned (0:326,0:72), but the test goes out to Jendp3 which is 73:

                  IF ((Hadvection(itrc,ng)%MPDATA).or.                    &
       &              (Hadvection(itrc,ng)%HSIMT)) THEN
                    LapplySrc=(IstrUm2.le.Isrc).and.                      &
       &                      (Isrc.le.Iendp2i).and.                      &
       &                      (JstrVm2.le.Jsrc).and.                      &
       &                      (Jsrc.le.Jendp3)

I have HSIMT set for the advection type in this case. This is probably not a new bug and I in fact stumbled on it when trying to track something else down.

Change History (1)

comment:1 by arango, 4 years ago

Description: modified (diff)
Resolution: Fixed
Status: newclosed
Summary: Subscript out of bounds on river tracer sourceSubscript out of bounds on river tracer source when using HSIMT

Yes, the HSIMT needs three ghost points as MPDATA. I was not able to reproduce the error in my testing application. I need lots of rivers to get one at a specific tile partition.

I added the following statement to read_phypar.F:

!
!  Set switch for three ghost-points in the halo region.
!
      ThreeGhostPoints=ANY(Hadvection(:,:)%MPDATA).or.                  &
     &                 ANY(Hadvection(:,:)%HSIMT)
#ifdef UV_VIS4
      ThreeGhostPoints=.TRUE.
#endif
Note: See TracTickets for help on using tickets.