Changeset 8953
- Timestamp:
- 2017-12-08T12:05:11+01:00 (7 years ago)
- Location:
- branches/UKMO/dev_r8183_ICEMODEL_rstdate_test/NEMOGCM/NEMO
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r8183_ICEMODEL_rstdate_test/NEMOGCM/NEMO/LIM_SRC_3/icerst.F90
r8564 r8953 19 19 USE dom_oce ! ocean domain 20 20 USE sbc_oce , ONLY : nn_fsbc 21 USE ioipsl, ONLY : ju2ymds ! for calendar 21 22 USE icectl 22 23 ! … … 46 47 !! ** purpose : open restart file 47 48 !!---------------------------------------------------------------------- 49 INTEGER :: iyear, imonth, iday 50 REAL (wp) :: zsec 51 REAL (wp) :: zfjulday !! 48 52 INTEGER, INTENT(in) :: kt ! number of iteration 49 53 ! … … 62 66 IF( nitrst <= nitend .AND. nitrst > 0 ) THEN 63 67 ! beware of the format used to write kt (default is i8.8, that should be large enough...) 64 IF( nitrst > 99999999 ) THEN ; WRITE(clkt, * ) nitrst 65 ELSE ; WRITE(clkt, '(i8.8)') nitrst 68 69 IF ( ln_rstdate ) THEN 70 zfjulday = fjulday + rdt / rday 71 IF( ABS(zfjulday - REAL(NINT(zfjulday),wp)) < 0.1 / rday ) zfjulday = REAL(NINT(zfjulday),wp) ! avoid truncation error 72 CALL ju2ymds( zfjulday, iyear, imonth, iday, zsec ) 73 WRITE(clkt, '(i4.4,2i2.2)') iyear, imonth, iday 74 ELSE 75 IF( nitrst > 999999999 ) THEN 76 WRITE(clkt, * ) nitrst 77 ELSE 78 WRITE(clkt, '(i8.8)') nitrst 79 ENDIF 66 80 ENDIF 81 82 83 ! IF( nitrst > 99999999 ) THEN ; WRITE(clkt, * ) nitrst 84 ! ELSE ; WRITE(clkt, '(i8.8)') nitrst 85 ! ENDIF 67 86 ! create the file 68 87 clname = TRIM(cexper)//"_"//TRIM(ADJUSTL(clkt))//"_"//TRIM(cn_icerst_out) -
branches/UKMO/dev_r8183_ICEMODEL_rstdate_test/NEMOGCM/NEMO/OPA_SRC/DOM/daymod.F90
r7646 r8953 273 273 ENDIF 274 274 275 IF( .NOT. l_offline ) CALL rst_opn( kt )! Open the restart file if needed and control lrst_oce275 IF( .NOT. l_offline ) CALL rst_opn( kt, ndastp ) ! Open the restart file if needed and control lrst_oce 276 276 IF( lrst_oce ) CALL day_rst( kt, 'WRITE' ) ! write day restart information 277 277 ! -
branches/UKMO/dev_r8183_ICEMODEL_rstdate_test/NEMOGCM/NEMO/OPA_SRC/DOM/domain.F90
r7822 r8953 281 281 !!---------------------------------------------------------------------- 282 282 USE ioipsl 283 NAMELIST/namrun/ cn_ocerst_indir, cn_ocerst_outdir, nn_stocklist, ln_rst_list, 283 NAMELIST/namrun/ cn_ocerst_indir, cn_ocerst_outdir, nn_stocklist, ln_rst_list, ln_rstdate, & 284 284 & nn_no , cn_exp , cn_ocerst_in, cn_ocerst_out, ln_rstart , nn_rstctl , & 285 285 & nn_it000, nn_itend , nn_date0 , nn_time0 , nn_leapy , nn_istate , & … … 314 314 WRITE(numout,*) ' restart output directory cn_ocerst_outdir= ', cn_ocerst_outdir 315 315 WRITE(numout,*) ' restart logical ln_rstart = ', ln_rstart 316 WRITE(numout,*) ' use date in restart name ln_rstdate = ', ln_rstdate 316 317 WRITE(numout,*) ' start with forward time step nn_euler = ', nn_euler 317 318 WRITE(numout,*) ' control of time step nn_rstctl = ', nn_rstctl -
branches/UKMO/dev_r8183_ICEMODEL_rstdate_test/NEMOGCM/NEMO/OPA_SRC/ICB/icbrst.F90
r6623 r8953 20 20 !!---------------------------------------------------------------------- 21 21 USE par_oce ! NEMO parameters 22 USE phycst ! for rday 22 23 USE dom_oce ! NEMO domain 23 24 USE in_out_manager ! NEMO IO routines 25 USE ioipsl, ONLY : ju2ymds ! for calendar 24 26 USE lib_mpp ! NEMO MPI library, lk_mpp in particular 25 27 USE netcdf ! netcdf routines for IO … … 161 163 CHARACTER(len=256) :: cl_filename 162 164 TYPE(iceberg), POINTER :: this 165 INTEGER :: iyear, imonth, iday 166 REAL (wp) :: zsec 167 REAL (wp) :: zfjulday 168 CHARACTER(LEN=20) :: clkt ! ocean time-step deine as a character TYPE(iceberg), POINTER :: this 163 169 TYPE(point) , POINTER :: pt 164 170 !!---------------------------------------------------------------------- … … 167 173 cl_path = TRIM(cn_ocerst_outdir) 168 174 IF( cl_path(LEN_TRIM(cl_path):) /= '/' ) cl_path = TRIM(cl_path) // '/' 175 IF ( ln_rstdate ) THEN 176 zfjulday = fjulday + rdt / rday 177 IF( ABS(zfjulday - REAL(NINT(zfjulday),wp)) < 0.1 / rday ) zfjulday = REAL(NINT(zfjulday),wp) ! avoid truncation error 178 CALL ju2ymds( zfjulday, iyear, imonth, iday, zsec ) 179 WRITE(clkt, '(i4.4,2i2.2)') iyear, imonth, iday 180 ELSE 181 IF( kt > 999999999 ) THEN ; WRITE(clkt, * ) kt 182 ELSE ; WRITE(clkt, '(i8.8)') kt 183 ENDIF 184 ENDIF 185 169 186 IF( lk_mpp ) THEN 170 WRITE(cl_filename,'(A,"_icebergs_", I8.8,"_restart_",I4.4,".nc")') TRIM(cexper), kt, narea-1187 WRITE(cl_filename,'(A,"_icebergs_",A,"_restart_",I4.4,".nc")') TRIM(cexper), TRIM(ADJUSTL(clkt)), narea-1 171 188 ELSE 172 WRITE(cl_filename,'(A,"_icebergs_", I8.8,"_restart.nc")') TRIM(cexper), kt189 WRITE(cl_filename,'(A,"_icebergs_",A,"_restart.nc")') TRIM(cexper), TRIM(ADJUSTL(clkt)) 173 190 ENDIF 174 191 IF (nn_verbose_level >= 0) WRITE(numout,'(2a)') 'icebergs, write_restart: creating ',TRIM(cl_path)//TRIM(cl_filename) -
branches/UKMO/dev_r8183_ICEMODEL_rstdate_test/NEMOGCM/NEMO/OPA_SRC/IOM/in_out_manager.F90
r8518 r8953 77 77 INTEGER :: nitend !: index of the last time step 78 78 INTEGER :: ndate0 !: initial calendar date aammjj 79 LOGICAL :: ln_rstdate = .FALSE. !: Use calendar date rather than time-step in restart 79 80 INTEGER :: nleapy !: Leap year calendar flag (0/1 or 30) 80 81 INTEGER :: ninist !: initial state output flag (0/1) -
branches/UKMO/dev_r8183_ICEMODEL_rstdate_test/NEMOGCM/NEMO/OPA_SRC/IOM/restart.F90
r6140 r8953 27 27 USE in_out_manager ! I/O manager 28 28 USE iom ! I/O module 29 USE ioipsl, ONLY : ju2ymds ! for calendar 29 30 USE diurnal_bulk 31 USE sbc_oce ! for icesheet freshwater input variables 30 32 31 33 IMPLICIT NONE … … 46 48 CONTAINS 47 49 48 SUBROUTINE rst_opn( kt )50 SUBROUTINE rst_opn( kt , ndastp) 49 51 !!--------------------------------------------------------------------- 50 52 !! *** ROUTINE rst_opn *** … … 57 59 !!---------------------------------------------------------------------- 58 60 INTEGER, INTENT(in) :: kt ! ocean time-step 59 !! 61 INTEGER, INTENT(in) :: ndastp ! ocean date 62 INTEGER :: iyear, imonth, iday 63 REAL (wp) :: zsec 64 REAL (wp) :: zfjulday !! 65 60 66 CHARACTER(LEN=20) :: clkt ! ocean time-step deine as a character 61 67 CHARACTER(LEN=50) :: clname ! ocean output restart file name 62 CHARACTER(l c):: clpath ! full path to ocean output restart file68 CHARACTER(len=150) :: clpath ! full path to ocean output restart file 63 69 !!---------------------------------------------------------------------- 64 70 ! … … 85 91 IF( nitrst <= nitend .AND. nitrst > 0 ) THEN 86 92 ! beware of the format used to write kt (default is i8.8, that should be large enough...) 87 IF( nitrst > 999999999 ) THEN ; WRITE(clkt, * ) nitrst 88 ELSE ; WRITE(clkt, '(i8.8)') nitrst 93 IF ( ln_rstdate ) THEN 94 zfjulday = fjulday + rdt / rday 95 IF( ABS(zfjulday - REAL(NINT(zfjulday),wp)) < 0.1 / rday ) zfjulday = REAL(NINT(zfjulday),wp) ! avoid truncation error 96 CALL ju2ymds( zfjulday, iyear, imonth, iday, zsec ) 97 WRITE(clkt, '(i4.4,2i2.2)') iyear, imonth, iday 98 ELSE 99 IF( nitrst > 999999999 ) THEN 100 WRITE(clkt, * ) nitrst 101 ELSE 102 WRITE(clkt, '(i8.8)') nitrst 103 ENDIF 89 104 ENDIF 90 105 ! create the file
Note: See TracChangeset
for help on using the changeset viewer.