Changeset 9556


Ignore:
Timestamp:
2018-05-05T11:51:20+02:00 (2 years ago)
Author:
cetlod
Message:

Minor improvments to ensures PISCES restartability

Location:
branches/2017/dev_merge_2017/NEMOGCM
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/TOP_SRC/trcrst.F90

    r7753 r9556  
    186186      INTEGER  ::  jlibalt = jprstlib 
    187187      LOGICAL  ::  llok 
    188       REAL(wp) ::  zkt, zrdttrc1 
    189       REAL(wp) ::  zndastp 
     188      REAL(wp) ::  zrdttrc1, zkt, zndastp, zdayfrac, ksecs, ktime 
     189      INTEGER  ::   ihour, iminute 
    190190 
    191191      ! Time domain : restart 
     
    222222            !                                          ! set the date in offline mode 
    223223            IF( ln_rsttr .AND. nn_rsttr == 2 ) THEN 
    224                CALL iom_get( numrtr, 'ndastp', zndastp )  
     224               CALL iom_get( numrtr, 'ndastp', zndastp ) 
    225225               ndastp = NINT( zndastp ) 
    226226               CALL iom_get( numrtr, 'adatrj', adatrj  ) 
     227               CALL iom_get( numrtr, 'ntime' , ktime   ) 
     228               nn_time0=INT(ktime) 
     229               ! calculate start time in hours and minutes 
     230               zdayfrac=adatrj-INT(adatrj) 
     231               ksecs = NINT(zdayfrac*86400)            ! Nearest second to catch rounding errors in adatrj               
     232               ihour = INT(ksecs/3600) 
     233               iminute = ksecs/60-ihour*60 
     234                 
     235               ! Add to nn_time0 
     236               nhour   =   nn_time0 / 100 
     237               nminute = ( nn_time0 - nhour * 100 ) 
     238               nminute=nminute+iminute 
     239                
     240               IF( nminute >= 60 ) THEN 
     241                  nminute=nminute-60 
     242                  nhour=nhour+1 
     243               ENDIF 
     244               nhour=nhour+ihour 
     245               IF( nhour >= 24 ) THEN 
     246                  nhour=nhour-24 
     247                  adatrj=adatrj+1 
     248               ENDIF            
     249               nn_time0 = nhour * 100 + nminute 
     250               adatrj = INT(adatrj)                    ! adatrj set to integer as nn_time0 updated             
    227251             ELSE 
    228                ndastp = ndate0 - 1     ! ndate0 read in the namelist in dom_nam 
    229                adatrj = ( REAL( nittrc000-1, wp ) * rdt ) / rday 
     252               ! parameters corresponding to nit000 - 1 (as we start the step 
     253               ! loop with a call to day) 
     254               ndastp = ndate0        ! ndate0 read in the namelist in dom_nam 
     255               nhour   =   nn_time0 / 100 
     256               nminute = ( nn_time0 - nhour * 100 ) 
     257               IF( nhour*3600+nminute*60-ndt05 .lt. 0 )  ndastp=ndastp-1      ! Start hour is specified in the namelist (default 0) 
     258               adatrj = ( REAL( nit000-1, wp ) * rdt ) / rday 
    230259               ! note this is wrong if time step has changed during run 
    231260            ENDIF 
     261            IF( ABS(adatrj  - REAL(NINT(adatrj),wp)) < 0.1 / rday )   adatrj = REAL(NINT(adatrj),wp)   ! avoid truncation error 
    232262            ! 
    233263            IF(lwp) THEN 
     
    235265              WRITE(numout,*) '   date ndastp                                      : ', ndastp 
    236266              WRITE(numout,*) '   number of elapsed days since the begining of run : ', adatrj 
     267              WRITE(numout,*) '   nn_time0                                         : ', nn_time0 
    237268              WRITE(numout,*) 
    238269            ENDIF 
     
    257288         CALL iom_rstput( kt, nitrst, numrtw, 'adatrj' , adatrj            )   ! number of elapsed days since 
    258289         !                                                                     ! the begining of the run [s] 
     290         CALL iom_rstput( kt, nitrst, numrtw, 'ntime'  , REAL( nn_time0, wp)) ! time 
    259291      ENDIF 
    260292 
  • branches/2017/dev_merge_2017/NEMOGCM/SETTE/sette.sh

    r9553 r9556  
    289289    set_namelist namelist_cfg cn_exp \"O2L3P_LONG\" 
    290290    set_namelist namelist_cfg nn_it000 1 
    291     set_namelist namelist_cfg nn_itend 1000 
    292     set_namelist namelist_cfg nn_stock 500 
     291    set_namelist namelist_cfg nn_itend 1200 
     292    set_namelist namelist_cfg nn_stock 600 
    293293    set_namelist namelist_cfg jpni 4 
    294294    set_namelist namelist_cfg jpnj 8 
     
    322322    cd ${EXE_DIR} 
    323323    set_namelist namelist_cfg cn_exp \"O2L3P_SHORT\" 
    324     set_namelist namelist_cfg nn_it000 501 
    325     set_namelist namelist_cfg nn_itend 1000 
    326     set_namelist namelist_cfg nn_stock 500 
     324    set_namelist namelist_cfg nn_it000 601 
     325    set_namelist namelist_cfg nn_itend 1200 
     326    set_namelist namelist_cfg nn_stock 600 
    327327    set_namelist namelist_cfg ln_rstart .true. 
    328328    set_namelist namelist_cfg nn_rstctl 2 
     
    332332    set_namelist namelist_top_cfg ln_rsttr .true. 
    333333    set_namelist namelist_top_cfg nn_rsttr 2 
    334     set_namelist namelist_cfg cn_ocerst_in \"O2L3P_LONG_00000500_restart\" 
    335     set_namelist namelist_top_cfg cn_trcrst_in \"O2L3P_LONG_00000500_restart_trc\" 
    336     set_namelist namelist_ice_cfg cn_icerst_in \"O2L3P_LONG_00000500_restart_ice\" 
     334    set_namelist namelist_cfg cn_ocerst_in \"O2L3P_LONG_00000600_restart\" 
     335    set_namelist namelist_top_cfg cn_trcrst_in \"O2L3P_LONG_00000600_restart_trc\" 
     336    set_namelist namelist_ice_cfg cn_icerst_in \"O2L3P_LONG_00000600_restart_ice\" 
    337337    # put ln_ironsed, ln_river, ln_ndepo, ln_dust 
    338338    # if not you need input files, and for tests is not necessary 
     
    351351        L_NPROC=$(( $i - 1 )) 
    352352        L_NPROC=`printf "%04d\n" ${L_NPROC}` 
    353         ln -sf ../LONG/O2L3P_LONG_00000500_restart_${L_NPROC}.nc . 
    354         ln -sf ../LONG/O2L3P_LONG_00000500_restart_trc_${L_NPROC}.nc . 
    355         ln -sf ../LONG/O2L3P_LONG_00000500_restart_ice_${L_NPROC}.nc . 
    356         ln -sf ../LONG/O2L3P_LONG_icebergs_00000500_restart_${L_NPROC}.nc O2L3P_LONG_00000500_restart_icebergs_${L_NPROC}.nc 
     353        ln -sf ../LONG/O2L3P_LONG_00000600_restart_${L_NPROC}.nc . 
     354        ln -sf ../LONG/O2L3P_LONG_00000600_restart_trc_${L_NPROC}.nc . 
     355        ln -sf ../LONG/O2L3P_LONG_00000600_restart_ice_${L_NPROC}.nc . 
     356        ln -sf ../LONG/O2L3P_LONG_icebergs_00000600_restart_${L_NPROC}.nc O2L3P_LONG_00000600_restart_icebergs_${L_NPROC}.nc 
    357357    done 
    358358    if [ ${USING_MPMD} == "yes" ] ; then 
     
    379379    set_namelist namelist_cfg cn_exp \"O2L3P_48\" 
    380380    set_namelist namelist_cfg nn_it000 1 
    381     set_namelist namelist_cfg nn_itend 450 
     381    set_namelist namelist_cfg nn_itend 1200 
    382382    set_namelist namelist_cfg jpni 4 
    383383    set_namelist namelist_cfg jpnj 8 
     
    416416    set_namelist namelist_cfg cn_exp \"O2L3P_84\" 
    417417    set_namelist namelist_cfg nn_it000 1 
    418     set_namelist namelist_cfg nn_itend 450 
     418    set_namelist namelist_cfg nn_itend 1200 
    419419    set_namelist namelist_cfg jpni 8 
    420420    set_namelist namelist_cfg jpnj 4 
     
    463463    set_namelist namelist_cfg cn_exp \"OFFP_LONG\" 
    464464    set_namelist namelist_cfg nn_it000 1 
    465     set_namelist namelist_cfg nn_itend 40 
    466     set_namelist namelist_cfg nn_stock 20 
     465    set_namelist namelist_cfg nn_itend 360 
     466    set_namelist namelist_cfg nn_stock 180 
    467467    set_namelist namelist_cfg jpni 4 
    468468    set_namelist namelist_cfg jpnj 8 
     
    495495    cd ${EXE_DIR} 
    496496    set_namelist namelist_cfg cn_exp \"OFFP_SHORT\" 
    497     set_namelist namelist_cfg nn_it000 21 
    498     set_namelist namelist_cfg nn_itend 40 
    499     set_namelist namelist_cfg nn_stock 20 
     497    set_namelist namelist_cfg nn_it000 181 
     498    set_namelist namelist_cfg nn_itend 360 
     499    set_namelist namelist_cfg nn_stock 180 
    500500    set_namelist namelist_cfg jpni 4 
    501501    set_namelist namelist_cfg jpnj 8 
     
    503503    set_namelist namelist_top_cfg ln_rsttr .true. 
    504504    set_namelist namelist_top_cfg nn_rsttr 2 
    505     set_namelist namelist_top_cfg cn_trcrst_in \"OFFP_LONG_00000020_restart_trc\" 
     505    set_namelist namelist_top_cfg cn_trcrst_in \"OFFP_LONG_000000180_restart_trc\" 
    506506    for (( i=1; i<=$NPROC; i++)) ; do 
    507507        L_NPROC=$(( $i - 1 )) 
    508508        L_NPROC=`printf "%04d\n" ${L_NPROC}` 
    509         ln -sf ../LONG/OFFP_LONG_00000020_restart_trc_${L_NPROC}.nc . 
     509        ln -sf ../LONG/OFFP_LONG_000000180_restart_trc_${L_NPROC}.nc . 
    510510    done 
    511511    # put ln_ironsed, ln_river, ln_ndepo, ln_dust 
     
    545545    set_namelist namelist_cfg cn_exp \"OFFP_48\" 
    546546    set_namelist namelist_cfg nn_it000 1 
    547     set_namelist namelist_cfg nn_itend 40 
     547    set_namelist namelist_cfg nn_itend 360 
    548548    set_namelist namelist_cfg jpni 4 
    549549    set_namelist namelist_cfg jpnj 8 
     
    582582    set_namelist namelist_cfg cn_exp \"OFFP_84\" 
    583583    set_namelist namelist_cfg nn_it000 1 
    584     set_namelist namelist_cfg nn_itend 40 
     584    set_namelist namelist_cfg nn_itend 360 
    585585    set_namelist namelist_cfg jpni 8 
    586586    set_namelist namelist_cfg jpnj 4 
Note: See TracChangeset for help on using the changeset viewer.