- Timestamp:
- 2020-09-14T17:40:34+02:00 (4 years ago)
- Location:
- NEMO/branches/2019/dev_r11351_fldread_with_XIOS
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11351_fldread_with_XIOS
- Property svn:externals
-
old new 3 3 ^/utils/build/mk@HEAD mk 4 4 ^/utils/tools@HEAD tools 5 ^/vendors/AGRIF/dev @HEADext/AGRIF5 ^/vendors/AGRIF/dev_r12970_AGRIF_CMEMS ext/AGRIF 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL 8 9 # SETTE 10 ^/utils/CI/sette@13382 sette
-
- Property svn:externals
-
NEMO/branches/2019/dev_r11351_fldread_with_XIOS/src/TOP/trcrst.F90
r10425 r13463 33 33 PUBLIC trc_rst_cal 34 34 35 # include "domzgr_substitute.h90" 35 36 !!---------------------------------------------------------------------- 36 37 !! NEMO/TOP 4.0 , NEMO Consortium (2018) … … 58 59 IF( ln_rst_list ) THEN 59 60 nrst_lst = 1 60 nitrst = n stocklist( nrst_lst )61 nitrst = nn_stocklist( nrst_lst ) 61 62 ELSE 62 63 nitrst = nitend … … 64 65 ENDIF 65 66 66 IF( .NOT. ln_rst_list .AND. MOD( kt - 1, n stock ) == 0 ) THEN67 IF( .NOT. ln_rst_list .AND. MOD( kt - 1, nn_stock ) == 0 ) THEN 67 68 ! we use kt - 1 and not kt - nittrc000 to keep the same periodicity from the beginning of the experiment 68 nitrst = kt + n stock - 1 ! define the next value of nitrst for restart writing69 nitrst = kt + nn_stock - 1 ! define the next value of nitrst for restart writing 69 70 IF( nitrst > nitend ) nitrst = nitend ! make sure we write a restart at the end of the run 70 71 ENDIF … … 73 74 ENDIF 74 75 76 IF( .NOT. ln_rst_list .AND. nn_stock == -1 ) RETURN ! we will never do any restart 77 75 78 ! to get better performances with NetCDF format: 76 ! we open and define the tracer restart file one tracer time step before writing the data (-> at nitrst - 2*nn_dttrc +1)77 ! except if we write tracer restart files every tracer time step or if a tracer restart file was writen at nitend - 2*nn_dttrc +178 IF( kt == nitrst - 2*nn_dttrc .OR. nstock == nn_dttrc .OR. ( kt == nitend - nn_dttrc.AND. .NOT. lrst_trc ) ) THEN79 ! we open and define the tracer restart file one tracer time step before writing the data (-> at nitrst - 1) 80 ! except if we write tracer restart files every tracer time step or if a tracer restart file was writen at nitend - 1 81 IF( kt == nitrst - 1 .OR. nn_stock == 1 .OR. ( kt == nitend - 1 .AND. .NOT. lrst_trc ) ) THEN 79 82 ! beware of the format used to write kt (default is i8.8, that should be large enough) 80 83 IF( nitrst > 1.0e9 ) THEN ; WRITE(clkt,* ) nitrst … … 94 97 END SUBROUTINE trc_rst_opn 95 98 96 SUBROUTINE trc_rst_read 99 SUBROUTINE trc_rst_read( Kbb, Kmm ) 97 100 !!---------------------------------------------------------------------- 98 101 !! *** trc_rst_opn *** … … 100 103 !! ** purpose : read passive tracer fields in restart files 101 104 !!---------------------------------------------------------------------- 105 INTEGER, INTENT( in ) :: Kbb, Kmm ! time level indices 102 106 INTEGER :: jn 103 107 … … 110 114 ! READ prognostic variables and computes diagnostic variable 111 115 DO jn = 1, jptra 112 CALL iom_get( numrtr, jpdom_auto glo, 'TRN'//ctrcnm(jn), trn(:,:,:,jn) )113 END DO 114 115 DO jn = 1, jptra 116 CALL iom_get( numrtr, jpdom_auto glo, 'TRB'//ctrcnm(jn), trb(:,:,:,jn) )116 CALL iom_get( numrtr, jpdom_auto, 'TRN'//ctrcnm(jn), tr(:,:,:,jn,Kmm) ) 117 END DO 118 119 DO jn = 1, jptra 120 CALL iom_get( numrtr, jpdom_auto, 'TRB'//ctrcnm(jn), tr(:,:,:,jn,Kbb) ) 117 121 END DO 118 122 ! … … 121 125 END SUBROUTINE trc_rst_read 122 126 123 SUBROUTINE trc_rst_wri( kt )127 SUBROUTINE trc_rst_wri( kt, Kbb, Kmm, Krhs ) 124 128 !!---------------------------------------------------------------------- 125 129 !! *** trc_rst_wri *** … … 127 131 !! ** purpose : write passive tracer fields in restart files 128 132 !!---------------------------------------------------------------------- 129 INTEGER, INTENT( in ) :: kt ! ocean time-step index 133 INTEGER, INTENT( in ) :: kt ! ocean time-step index 134 INTEGER, INTENT( in ) :: Kbb, Kmm, Krhs ! time level indices 130 135 !! 131 136 INTEGER :: jn 132 137 !!---------------------------------------------------------------------- 133 138 ! 134 CALL iom_rstput( kt, nitrst, numrtw, 'rdttrc1', r dttrc ) ! passive tracer time step139 CALL iom_rstput( kt, nitrst, numrtw, 'rdttrc1', rn_Dt ) ! passive tracer time step (= ocean time step) 135 140 ! prognostic variables 136 141 ! -------------------- 137 142 DO jn = 1, jptra 138 CALL iom_rstput( kt, nitrst, numrtw, 'TRN'//ctrcnm(jn), tr n(:,:,:,jn) )139 END DO 140 141 DO jn = 1, jptra 142 CALL iom_rstput( kt, nitrst, numrtw, 'TRB'//ctrcnm(jn), tr b(:,:,:,jn) )143 CALL iom_rstput( kt, nitrst, numrtw, 'TRN'//ctrcnm(jn), tr(:,:,:,jn,Kmm) ) 144 END DO 145 146 DO jn = 1, jptra 147 CALL iom_rstput( kt, nitrst, numrtw, 'TRB'//ctrcnm(jn), tr(:,:,:,jn,Kbb) ) 143 148 END DO 144 149 ! … … 146 151 147 152 IF( kt == nitrst ) THEN 148 CALL trc_rst_stat ! statistics153 CALL trc_rst_stat( Kmm, Krhs ) ! statistics 149 154 CALL iom_close( numrtw ) ! close the restart file (only at last time step) 150 155 #if ! defined key_trdmxl_trc … … 153 158 IF( l_offline .AND. ln_rst_list ) THEN 154 159 nrst_lst = nrst_lst + 1 155 nitrst = n stocklist( nrst_lst )160 nitrst = nn_stocklist( nrst_lst ) 156 161 ENDIF 157 162 ENDIF … … 179 184 !! In both those options, the exact duration of the experiment 180 185 !! since the beginning (cumulated duration of all previous restart runs) 181 !! is not stored in the restart and is assumed to be (nittrc000-1)*r dt.186 !! is not stored in the restart and is assumed to be (nittrc000-1)*rn_Dt. 182 187 !! This is valid is the time step has remained constant. 183 188 !! … … 217 222 ENDIF 218 223 ! Control of date 219 IF( nittrc000 - NINT( zkt ) /= nn_dttrc.AND. nn_rsttr /= 0 ) &224 IF( nittrc000 - NINT( zkt ) /= 1 .AND. nn_rsttr /= 0 ) & 220 225 & CALL ctl_stop( ' ===>>>> : problem with nittrc000 for the restart', & 221 226 & ' verify the restart file or rerun with nn_rsttr = 0 (namelist)' ) … … 259 264 nminute = ( nn_time0 - nhour * 100 ) 260 265 IF( nhour*3600+nminute*60-ndt05 .lt. 0 ) ndastp=ndastp-1 ! Start hour is specified in the namelist (default 0) 261 adatrj = ( REAL( nit000-1, wp ) * r dt ) / rday266 adatrj = ( REAL( nit000-1, wp ) * rn_Dt ) / rday 262 267 ! note this is wrong if time step has changed during run 263 268 ENDIF … … 272 277 ENDIF 273 278 ! 274 IF( ln_rsttr ) THEN ; neuler = 1275 ELSE ; neuler = 0279 IF( ln_rsttr ) THEN ; l_1st_euler = .false. 280 ELSE ; l_1st_euler = .true. 276 281 ENDIF 277 282 ! … … 297 302 298 303 299 SUBROUTINE trc_rst_stat 304 SUBROUTINE trc_rst_stat( Kmm, Krhs ) 300 305 !!---------------------------------------------------------------------- 301 306 !! *** trc_rst_stat *** … … 303 308 !! ** purpose : Compute tracers statistics 304 309 !!---------------------------------------------------------------------- 310 INTEGER, INTENT( in ) :: Kmm, Krhs ! time level indices 305 311 INTEGER :: jk, jn 306 312 REAL(wp) :: ztraf, zmin, zmax, zmean, zdrift … … 315 321 ! 316 322 DO jk = 1, jpk 317 zvol(:,:,jk) = e1e2t(:,:) * e3t _a(:,:,jk) * tmask(:,:,jk)318 END DO 319 ! 320 DO jn = 1, jptra 321 ztraf = glob_sum( 'trcrst', tr n(:,:,:,jn) * zvol(:,:,:) )322 zmin = MINVAL( tr n(:,:,:,jn), mask= ((tmask*SPREAD(tmask_i,DIM=3,NCOPIES=jpk).NE.0.)) )323 zmax = MAXVAL( tr n(:,:,:,jn), mask= ((tmask*SPREAD(tmask_i,DIM=3,NCOPIES=jpk).NE.0.)) )323 zvol(:,:,jk) = e1e2t(:,:) * e3t(:,:,jk,Krhs) * tmask(:,:,jk) 324 END DO 325 ! 326 DO jn = 1, jptra 327 ztraf = glob_sum( 'trcrst', tr(:,:,:,jn,Kmm) * zvol(:,:,:) ) 328 zmin = MINVAL( tr(:,:,:,jn,Kmm), mask= ((tmask*SPREAD(tmask_i,DIM=3,NCOPIES=jpk).NE.0.)) ) 329 zmax = MAXVAL( tr(:,:,:,jn,Kmm), mask= ((tmask*SPREAD(tmask_i,DIM=3,NCOPIES=jpk).NE.0.)) ) 324 330 IF( lk_mpp ) THEN 325 331 CALL mpp_min( 'trcrst', zmin ) ! min over the global domain … … 341 347 !!---------------------------------------------------------------------- 342 348 CONTAINS 343 SUBROUTINE trc_rst_read ! Empty routines 349 SUBROUTINE trc_rst_read( Kbb, Kmm) ! Empty routines 350 INTEGER, INTENT( in ) :: Kbb, Kmm ! time level indices 344 351 END SUBROUTINE trc_rst_read 345 SUBROUTINE trc_rst_wri( kt ) 346 INTEGER, INTENT ( in ) :: kt 352 SUBROUTINE trc_rst_wri( kt, Kbb, Kmm, Krhs ) 353 INTEGER, INTENT( in ) :: kt 354 INTEGER, INTENT( in ) :: Kbb, Kmm, Krhs ! time level indices 347 355 WRITE(*,*) 'trc_rst_wri: You should not have seen this print! error?', kt 348 356 END SUBROUTINE trc_rst_wri
Note: See TracChangeset
for help on using the changeset viewer.