- Timestamp:
- 2015-07-16T13:55:15+02:00 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/trcrst.F90
r5105 r5602 54 54 CHARACTER(LEN=20) :: clkt ! ocean time-step define as a character 55 55 CHARACTER(LEN=50) :: clname ! trc output restart file name 56 CHARACTER(LEN=256) :: clpath ! full path to ocean output restart file 56 57 !!---------------------------------------------------------------------- 57 58 ! … … 59 60 IF( kt == nittrc000 ) THEN 60 61 lrst_trc = .FALSE. 61 nitrst = nitend 62 ENDIF 63 64 IF( MOD( kt - 1, nstock ) == 0 ) THEN 62 IF( ln_rst_list ) THEN 63 nrst_lst = 1 64 nitrst = nstocklist( nrst_lst ) 65 ELSE 66 nitrst = nitend 67 ENDIF 68 ENDIF 69 70 IF( .NOT. ln_rst_list .AND. MOD( kt - 1, nstock ) == 0 ) THEN 65 71 ! we use kt - 1 and not kt - nittrc000 to keep the same periodicity from the beginning of the experiment 66 72 nitrst = kt + nstock - 1 ! define the next value of nitrst for restart writing … … 82 88 IF(lwp) WRITE(numout,*) 83 89 clname = TRIM(cexper)//"_"//TRIM(ADJUSTL(clkt))//"_"//TRIM(cn_trcrst_out) 84 IF(lwp) WRITE(numout,*) ' open trc restart.output NetCDF file: '//clname 85 CALL iom_open( clname, numrtw, ldwrt = .TRUE., kiolib = jprstlib ) 90 clpath = TRIM(cn_trcrst_outdir) 91 IF( clpath(LEN_TRIM(clpath):) /= '/' ) clpath = TRIM(clpath) // '/' 92 IF(lwp) WRITE(numout,*) & 93 ' open trc restart.output NetCDF file: ',TRIM(clpath)//clname 94 CALL iom_open( TRIM(clpath)//TRIM(clname), numrtw, ldwrt = .TRUE., kiolib = jprstlib ) 86 95 lrst_trc = .TRUE. 87 96 ENDIF … … 143 152 lrst_trc = .FALSE. 144 153 #endif 154 IF( lk_offline .AND. ln_rst_list ) THEN 155 nrst_lst = nrst_lst + 1 156 nitrst = nstocklist( nrst_lst ) 157 ENDIF 145 158 ENDIF 146 159 ! … … 193 206 ! eventually read netcdf file (monobloc) for restarting on different number of processors 194 207 ! if {cn_trcrst_in}.nc exists, then set jlibalt to jpnf90 195 INQUIRE( FILE = TRIM(cn_trcrst_in )//'.nc', EXIST = llok )208 INQUIRE( FILE = TRIM(cn_trcrst_indir)//'/'//TRIM(cn_trcrst_in)//'.nc', EXIST = llok ) 196 209 IF ( llok ) THEN ; jlibalt = jpnf90 ; ELSE ; jlibalt = jprstlib ; ENDIF 197 210 ENDIF 198 211 199 CALL iom_open( cn_trcrst_in, numrtr, kiolib = jlibalt ) 200 201 CALL iom_get ( numrtr, 'kt', zkt ) ! last time-step of previous run 202 203 IF(lwp) THEN 204 WRITE(numout,*) ' *** Info read in restart : ' 205 WRITE(numout,*) ' previous time-step : ', NINT( zkt ) 206 WRITE(numout,*) ' *** restart option' 207 SELECT CASE ( nn_rsttr ) 208 CASE ( 0 ) ; WRITE(numout,*) ' nn_rsttr = 0 : no control of nittrc000' 209 CASE ( 1 ) ; WRITE(numout,*) ' nn_rsttr = 1 : no control the date at nittrc000 (use ndate0 read in the namelist)' 210 CASE ( 2 ) ; WRITE(numout,*) ' nn_rsttr = 2 : calendar parameters read in restart' 211 END SELECT 212 WRITE(numout,*) 213 ENDIF 214 ! Control of date 215 IF( nittrc000 - NINT( zkt ) /= nn_dttrc .AND. nn_rsttr /= 0 ) & 216 & CALL ctl_stop( ' ===>>>> : problem with nittrc000 for the restart', & 217 & ' verify the restart file or rerun with nn_rsttr = 0 (namelist)' ) 218 IF( lk_offline ) THEN ! set the date in offline mode 219 ! Check dynamics and tracer time-step consistency and force Euler restart if changed 220 IF( iom_varid( numrtr, 'rdttrc1', ldstop = .FALSE. ) > 0 ) THEN 221 CALL iom_get( numrtr, 'rdttrc1', zrdttrc1 ) 222 IF( zrdttrc1 /= rdt * nn_dttrc ) neuler = 0 223 ENDIF 224 ! ! define ndastp and adatrj 225 IF( nn_rsttr == 2 ) THEN 212 IF( ln_rsttr ) THEN 213 CALL iom_open( TRIM(cn_trcrst_indir)//'/'//cn_trcrst_in, numrtr, kiolib = jlibalt ) 214 CALL iom_get ( numrtr, 'kt', zkt ) ! last time-step of previous run 215 216 IF(lwp) THEN 217 WRITE(numout,*) ' *** Info read in restart : ' 218 WRITE(numout,*) ' previous time-step : ', NINT( zkt ) 219 WRITE(numout,*) ' *** restart option' 220 SELECT CASE ( nn_rsttr ) 221 CASE ( 0 ) ; WRITE(numout,*) ' nn_rsttr = 0 : no control of nittrc000' 222 CASE ( 1 ) ; WRITE(numout,*) ' nn_rsttr = 1 : no control the date at nittrc000 (use ndate0 read in the namelist)' 223 CASE ( 2 ) ; WRITE(numout,*) ' nn_rsttr = 2 : calendar parameters read in restart' 224 END SELECT 225 WRITE(numout,*) 226 ENDIF 227 ! Control of date 228 IF( nittrc000 - NINT( zkt ) /= nn_dttrc .AND. nn_rsttr /= 0 ) & 229 & CALL ctl_stop( ' ===>>>> : problem with nittrc000 for the restart', & 230 & ' verify the restart file or rerun with nn_rsttr = 0 (namelist)' ) 231 ENDIF 232 ! 233 IF( lk_offline ) THEN 234 ! ! set the date in offline mode 235 IF( ln_rsttr .AND. nn_rsttr == 2 ) THEN 226 236 CALL iom_get( numrtr, 'ndastp', zndastp ) 227 237 ndastp = NINT( zndastp ) 228 238 CALL iom_get( numrtr, 'adatrj', adatrj ) 229 ELSE239 ELSE 230 240 ndastp = ndate0 - 1 ! ndate0 read in the namelist in dom_nam 231 241 adatrj = ( REAL( nittrc000-1, wp ) * rdttra(1) ) / rday … … 238 248 WRITE(numout,*) ' number of elapsed days since the begining of run : ', adatrj 239 249 WRITE(numout,*) 250 ENDIF 251 ! 252 IF( ln_rsttr ) THEN ; neuler = 1 253 ELSE ; neuler = 0 240 254 ENDIF 241 255 ! … … 268 282 INTEGER :: jk, jn 269 283 REAL(wp) :: ztraf, zmin, zmax, zmean, zdrift 284 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zvol 270 285 !!---------------------------------------------------------------------- 271 286 … … 276 291 ENDIF 277 292 ! 278 DO jn = 1, jptra 279 ztraf = glob_sum( trn(:,:,:,jn) * cvol(:,:,:) ) 293 DO jk = 1, jpk 294 zvol(:,:,jk) = e1e2t(:,:) * fse3t_a(:,:,jk) * tmask(:,:,jk) 295 END DO 296 ! 297 DO jn = 1, jptra 298 ztraf = glob_sum( trn(:,:,:,jn) * zvol(:,:,:) ) 280 299 zmin = MINVAL( trn(:,:,:,jn), mask= ((tmask*SPREAD(tmask_i,DIM=3,NCOPIES=jpk).NE.0.)) ) 281 300 zmax = MAXVAL( trn(:,:,:,jn), mask= ((tmask*SPREAD(tmask_i,DIM=3,NCOPIES=jpk).NE.0.)) ) … … 309 328 !!---------------------------------------------------------------------- 310 329 !! NEMO/TOP 3.3 , NEMO Consortium (2010) 311 !! $Id$ 330 !! $Id$ 312 331 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 313 332 !!======================================================================
Note: See TracChangeset
for help on using the changeset viewer.