I am having a problem running ROMS for internal wave modelling.
Compiling the ROMS code went well. But when I run ROMS, I've got the following error (x 12 times as I use 12 cores I think).
I understand TINTRP is used for time interpolation and is called in set_ngfld.F, set_2dfld.F and set_3dfld.F(as far as I checked by using 'grep'). The lines which caused the error are from the following lines in set_ngfld.F.At line 73 of file set_ngfld.f90
Fortran runtime error: Array reference out of bounds for array 'tintrp', lower bound of dimension 1 exceeded (0 < 1)
Code: Select all
#if defined CRAY || defined SGI fac1=ANINT(Tintrp(it2,ifield,ng)-time(ng)) fac2=ANINT(time(ng)-Tintrp(it1,ifield,ng)) #else fac1=ANINT(Tintrp(it2,ifield,ng)-time(ng),r8) fac2=ANINT(time(ng)-Tintrp(it1,ifield,ng),r8) #endif
I checked the time sequence for all files (initial, boundary netcdf) and it looks ok to me. I created initial and boundary netcdf files from a climatology netcdf file. Tidal forcing is based on OSU inverse tidal model with some modifications. No winds.
I wonder if someone could point out what possibly went wrong and how to check the problem.Initial netcdf file
ocean_time = 22032000 ; !sec
Boundary netcdf file (created from climatology netcdf file)
bry_time = 15, 45, 75, 105, 135, 165, 195, 225, 255, 285, 315, 345 ; !days
DSTART = 255.0d0 ! days
TIME_REF = 20090101.0d0 ! yyyymmdd.dd
I had this error for Intel Fortran(11.1) as well as Gnu Fortran (gfortran). No difference between MPI run and non-MPI run (the same error).
I also would like to know how TINTRP is used for ROMS.
TINTRP is set in mod_ncparam.F as zeros array and does not seem to be called by any files before set_ngfld.F.
Code: Select all
real(r8) :: Tintrp(2,NV,Ngrids) . . ! ! Initialize IO information variables. ! DO ng=1,Ngrids DO i=1,NV . . Tintrp(1,i,ng)=0.0_r8 Tintrp(2,i,ng)=0.0_r8 . . END DO END DO
Not sure if I understand correctly.
Any comments/input would be appreciated.
Thanks in advance.