Ignore:
Timestamp:
2008-01-07T15:29:41+01:00 (13 years ago)
Author:
smasson
Message:

write multiple restarts, see ticket:44

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/LIM_SRC/limrst.F90

    r719 r783  
    5454      !!---------------------------------------------------------------------- 
    5555      ! 
    56       IF( kt == nit000 )   lrst_ice = .FALSE. 
    57        
    58       IF( kt == nitrst - 2*nfice + 1 .OR.  nitend - nit000 + 1 <= nfice ) THEN 
    59          ! beware if model runs less than nfice + 1 time step 
    60          ! beware of the format used to write kt (default is i8.8, that should be large enough) 
    61          IF( nitrst > 1.0e9 ) THEN    
    62             WRITE(clkt,*) nitrst 
    63          ELSE 
    64             WRITE(clkt,'(i8.8)') nitrst 
     56      IF( kt == nit000 )   lrst_ice = .FALSE.   ! default definition 
     57       
     58      ! to get better performances with NetCDF format: 
     59      ! we open and define the ice restart file one ice time step before writing the data (-> at nitrst - 2*nfice + 1) 
     60      ! except if we write ice restart files every ice time step or if an ice restart file was writen at nitend - 2*nfice + 1 
     61      IF( kt == nitrst - 2*nfice + 1 .OR. nstock == nfice .OR. ( kt == nitend - nfice + 1 .AND. .NOT. lrst_ice ) ) THEN 
     62         ! beware of the format used to write kt (default is i8.8, that should be large enough...) 
     63         IF( nitrst > 99999999 ) THEN   ;   WRITE(clkt, *       ) nitrst 
     64         ELSE                           ;   WRITE(clkt, '(i8.8)') nitrst 
    6565         ENDIF 
    6666         ! create the file 
    67          IF(lwp) WRITE(numout,*) 
    6867         clname = TRIM(cexper)//"_"//TRIM(ADJUSTL(clkt))//"_restart_ice" 
    69          IF(lwp) WRITE(numout,*) '             open ice restart.output NetCDF file: '//clname 
     68         IF(lwp) THEN 
     69            WRITE(numout,*) 
     70            SELECT CASE ( jprstlib ) 
     71            CASE ( jprstdimg )   ;   WRITE(numout,*) '             open ice restart binary file: '//clname 
     72            CASE DEFAULT         ;   WRITE(numout,*) '             open ice restart NetCDF file: '//clname 
     73            END SELECT 
     74            IF( kt == nitrst - 2*nfice + 1 ) THEN    
     75               WRITE(numout,*)         '             kt = nitrst - 2*nfice + 1 = ', kt,' date= ', ndastp 
     76            ELSE   ;   WRITE(numout,*) '             kt = '                       , kt,' date= ', ndastp 
     77            ENDIF 
     78         ENDIF 
     79 
    7080         CALL iom_open( clname, numriw, ldwrt = .TRUE., kiolib = jprstlib ) 
    7181         lrst_ice = .TRUE. 
     
    8595      !!---------------------------------------------------------------------- 
    8696 
    87       iter = kt + nfice -1 
     97      iter = kt + nfice - 1   ! ice restarts are written at kt == nitrst - nfice + 1 
    8898 
    8999      IF( iter == nitrst ) THEN 
    90100         IF(lwp) WRITE(numout,*) 
    91          IF(lwp) WRITE(numout,*) 'lim_rst_write : write ice restart.output NetCDF file  kt =', kt 
     101         IF(lwp) WRITE(numout,*) 'lim_rst_write : write ice restart file  kt =', kt 
    92102         IF(lwp) WRITE(numout,*) '~~~~~~~'          
    93103      ENDIF 
     
    97107      !                                                                     ! calendar control 
    98108      CALL iom_rstput( iter, nitrst, numriw, 'nfice' , REAL( nfice, wp) )      ! time-step  
    99       CALL iom_rstput( iter, nitrst, numriw, 'kt_ice', REAL( iter, wp) )      ! date 
     109      CALL iom_rstput( iter, nitrst, numriw, 'kt_ice', REAL( iter , wp) )      ! date 
    100110       
    101111      CALL iom_rstput( iter, nitrst, numriw, 'hicif' , hicif (:,:)   )      ! prognostic variables  
Note: See TracChangeset for help on using the changeset viewer.