Custom Query (964 matches)
Results (79 - 81 of 964)
Ticket | Owner | Reporter | Resolution | Summary |
---|---|---|---|---|
#207 | Fixed | FLT_TEST with MPI, invalid value of ng | ||
Description |
When I run the FLT_TEST case with MPI enabled and in debug mode (compiler is G95), it hits an out-of-bounds error in subroutine wclock_on. The stack trace is At line 45 of file timers.f90 Traceback: (Innermost first) Called from line 330 of file distribute.f90 Called from line 262 of file inp_par.f90 Called from line 94 of file ocean_control.f90 Called from line 97 of file master.f90 Fortran runtime error: Array element out of bounds: 2 in (1:1), dim=3 The offending line is in subroutine wclock_on (source file timers.f90): Cstr(region,MyModel,ng)=my_wtime(wtime) and the problem is that ng is equal to 2, which is out of bounds for array Cstr. The value of ng = 2 is being passed to this routine by subroutine mp_bcasti_s (file distribute.f90), which is passed it by subroutine inp_par (file inp_par.f90). Here is the block of code in inp_par where mpi_bcasti_s is called (via the interface mp_bcasti): ! !----------------------------------------------------------------------- ! Check C-preprocessing options and definitions. !----------------------------------------------------------------------- ! IF (Master) THEN CALL checkdefs CALL my_flush (out) END IF CALL mp_bcasti (ng, model, exit_flag, 1) IF (exit_flag.ne.NoError) RETURN In subroutine inp_par there are several loops of the form DO ng=1,Ngrids ... END DO but this block of code is not inside one of these loops, so ng is left with the value it had on exit from the previous loop, ie Ngrids+1. So I presume the solution is to wrap this in a loop CALL mp_bcasti (ng, model, exit_flag, 1) |
|||
#212 | Fixed | Modifications to platform-specific make files | ||
Description |
The attached zip file contains modified versions of three platform-specific make files: CYGWIN-g95.mk, CYGWIN-gfortran.mk, Linux-g95.mk. The changes are:
|
|||
#214 | Fixed | Modifications to include files | ||
Description |
Attached are copies of globaldefs.h, riverplume1.h and riverplume2.h with a few modifications: globaldefs.h: Code to set the ASSUMED_SHAPE switch has been changed from this #define ASSUMED_SHAPE #if defined G95 && defined I686 # undef ASSUMED_SHAPE #elif defined UNICOS_SN # undef ASSUMED_SHAPE #endif to this #if !((defined G95 && defined I686) || defined UNICOS_SN) # define ASSUMED_SHAPE #endif The disadvantage with the former is that the "#undef" directives make it impossible to set ASSUMED_SHAPE via the MY_CPPFLAGS variable. Also the code to set the xxxx_FSOBC macros has been changed, eg this #if (defined WEST_FSRADIATION && defined WEST_FSNUDGING) || \ defined WEST_M2FLATHER || defined WEST_FSCLAMPED || \ defined WEST_M2REDUCED # define WEST_FSOBC #endif has been changed to #if (defined WEST_FSRADIATION && defined WEST_FSNUDGING) || \ defined WEST_M2FLATHER || defined WEST_FSCLAMPED # define WEST_FSOBC #endif The use of xxxx_M2REDUCED does not by itself mean that boundary surface-height data is required. For example it is possible to use xxxx_M2REDUCED with xxxx_FSCHAPMAN, in which case there is no need for xxxx_FSOBC. riverplume1.h: Removed a lot of obsolete #if defined RIVERPLUME1 #elif defined RIVERPLUME2 #endif stuff. riverplume2.h: Removed a couple of unnecessary #undef statements |