Ignore:
Timestamp:
2015-07-08T14:10:46+02:00 (5 years ago)
Author:
clem
Message:

stop the simulation if the max number of seconds between each restart is larger than the largest integer the computer can represent (kind 4). It avoids unexpected crashes due to bad forcing fields reading (see part of ticket #1561).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/nemo_v3_6_STABLE/NEMOGCM/NEMO/SAS_SRC/daymod.F90

    r5518 r5564  
    7171      !!---------------------------------------------------------------------- 
    7272      ! 
     73      ! max number of seconds between each restart 
     74      IF( REAL( nitend - nit000 + 1 ) * rdt > REAL( HUGE( nsec1jan000 ) ) ) THEN 
     75         CALL ctl_stop( 'The number of seconds between each restart exceeds the integer 4 max value: 2^31-1. ',   & 
     76            &           'You must do a restart at higher frequency (or remove this stop and recompile the code in I8)' ) 
     77      ENDIF 
    7378      ! all calendar staff is based on the fact that MOD( rday, rdttra(1) ) == 0 
    7479      IF( MOD( rday     , rdttra(1) ) /= 0. )   CALL ctl_stop( 'the time step must devide the number of second of in a day' ) 
     
    239244               nday_year = 1 
    240245               nsec_year = ndt05 
    241                IF( nsec1jan000 >= 2 * (2**30 - nsecd * nyear_len(1) / 2 ) ) THEN   ! test integer 4 max value 
    242                   CALL ctl_stop( 'The number of seconds between Jan. 1st 00h of nit000 year and Jan. 1st 00h ',   & 
    243                      &           'of the current year is exceeding the INTEGER 4 max VALUE: 2^31-1 -> 68.09 years in seconds', & 
    244                      & 'You must do a restart at higher frequency (or remove this STOP and recompile everything in I8)' ) 
    245                ENDIF 
    246246               nsec1jan000 = nsec1jan000 + nsecd * nyear_len(1) 
    247247               IF( nleapy == 1 )   CALL day_mth 
Note: See TracChangeset for help on using the changeset viewer.