- Timestamp:
- 2019-11-22T15:29:17+01:00 (5 years ago)
- Location:
- NEMO/branches/2019/dev_r11943_MERGE_2019/src
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11943_MERGE_2019/src
- Property svn:mergeinfo deleted
-
NEMO/branches/2019/dev_r11943_MERGE_2019/src/TOP/trcrst.F90
r11536 r11949 76 76 77 77 ! to get better performances with NetCDF format: 78 ! we open and define the tracer restart file one tracer time step before writing the data (-> at nitrst - 2*nn_dttrc +1)79 ! except if we write tracer restart files every tracer time step or if a tracer restart file was writen at nitend - 2*nn_dttrc +180 IF( kt == nitrst - 2*nn_dttrc .OR. nn_stock == nn_dttrc .OR. ( kt == nitend - nn_dttrc.AND. .NOT. lrst_trc ) ) THEN78 ! we open and define the tracer restart file one tracer time step before writing the data (-> at nitrst - 1) 79 ! except if we write tracer restart files every tracer time step or if a tracer restart file was writen at nitend - 1 80 IF( kt == nitrst - 1 .OR. nn_stock == 1 .OR. ( kt == nitend - 1 .AND. .NOT. lrst_trc ) ) THEN 81 81 ! beware of the format used to write kt (default is i8.8, that should be large enough) 82 82 IF( nitrst > 1.0e9 ) THEN ; WRITE(clkt,* ) nitrst … … 96 96 END SUBROUTINE trc_rst_opn 97 97 98 SUBROUTINE trc_rst_read 98 SUBROUTINE trc_rst_read( Kbb, Kmm ) 99 99 !!---------------------------------------------------------------------- 100 100 !! *** trc_rst_opn *** … … 102 102 !! ** purpose : read passive tracer fields in restart files 103 103 !!---------------------------------------------------------------------- 104 INTEGER, INTENT( in ) :: Kbb, Kmm ! time level indices 104 105 INTEGER :: jn 105 106 … … 112 113 ! READ prognostic variables and computes diagnostic variable 113 114 DO jn = 1, jptra 114 CALL iom_get( numrtr, jpdom_autoglo, 'TRN'//ctrcnm(jn), tr n(:,:,:,jn) )115 END DO 116 117 DO jn = 1, jptra 118 CALL iom_get( numrtr, jpdom_autoglo, 'TRB'//ctrcnm(jn), tr b(:,:,:,jn) )115 CALL iom_get( numrtr, jpdom_autoglo, 'TRN'//ctrcnm(jn), tr(:,:,:,jn,Kmm) ) 116 END DO 117 118 DO jn = 1, jptra 119 CALL iom_get( numrtr, jpdom_autoglo, 'TRB'//ctrcnm(jn), tr(:,:,:,jn,Kbb) ) 119 120 END DO 120 121 ! … … 123 124 END SUBROUTINE trc_rst_read 124 125 125 SUBROUTINE trc_rst_wri( kt )126 SUBROUTINE trc_rst_wri( kt, Kbb, Kmm, Krhs ) 126 127 !!---------------------------------------------------------------------- 127 128 !! *** trc_rst_wri *** … … 129 130 !! ** purpose : write passive tracer fields in restart files 130 131 !!---------------------------------------------------------------------- 131 INTEGER, INTENT( in ) :: kt ! ocean time-step index 132 INTEGER, INTENT( in ) :: kt ! ocean time-step index 133 INTEGER, INTENT( in ) :: Kbb, Kmm, Krhs ! time level indices 132 134 !! 133 135 INTEGER :: jn … … 138 140 ! -------------------- 139 141 DO jn = 1, jptra 140 CALL iom_rstput( kt, nitrst, numrtw, 'TRN'//ctrcnm(jn), tr n(:,:,:,jn) )141 END DO 142 143 DO jn = 1, jptra 144 CALL iom_rstput( kt, nitrst, numrtw, 'TRB'//ctrcnm(jn), tr b(:,:,:,jn) )142 CALL iom_rstput( kt, nitrst, numrtw, 'TRN'//ctrcnm(jn), tr(:,:,:,jn,Kmm) ) 143 END DO 144 145 DO jn = 1, jptra 146 CALL iom_rstput( kt, nitrst, numrtw, 'TRB'//ctrcnm(jn), tr(:,:,:,jn,Kbb) ) 145 147 END DO 146 148 ! … … 148 150 149 151 IF( kt == nitrst ) THEN 150 CALL trc_rst_stat ! statistics152 CALL trc_rst_stat( Kmm, Krhs ) ! statistics 151 153 CALL iom_close( numrtw ) ! close the restart file (only at last time step) 152 154 #if ! defined key_trdmxl_trc … … 219 221 ENDIF 220 222 ! Control of date 221 IF( nittrc000 - NINT( zkt ) /= nn_dttrc.AND. nn_rsttr /= 0 ) &223 IF( nittrc000 - NINT( zkt ) /= 1 .AND. nn_rsttr /= 0 ) & 222 224 & CALL ctl_stop( ' ===>>>> : problem with nittrc000 for the restart', & 223 225 & ' verify the restart file or rerun with nn_rsttr = 0 (namelist)' ) … … 299 301 300 302 301 SUBROUTINE trc_rst_stat 303 SUBROUTINE trc_rst_stat( Kmm, Krhs ) 302 304 !!---------------------------------------------------------------------- 303 305 !! *** trc_rst_stat *** … … 305 307 !! ** purpose : Compute tracers statistics 306 308 !!---------------------------------------------------------------------- 309 INTEGER, INTENT( in ) :: Kmm, Krhs ! time level indices 307 310 INTEGER :: jk, jn 308 311 REAL(wp) :: ztraf, zmin, zmax, zmean, zdrift … … 317 320 ! 318 321 DO jk = 1, jpk 319 zvol(:,:,jk) = e1e2t(:,:) * e3t _a(:,:,jk) * tmask(:,:,jk)320 END DO 321 ! 322 DO jn = 1, jptra 323 ztraf = glob_sum( 'trcrst', tr n(:,:,:,jn) * zvol(:,:,:) )324 zmin = MINVAL( tr n(:,:,:,jn), mask= ((tmask*SPREAD(tmask_i,DIM=3,NCOPIES=jpk).NE.0.)) )325 zmax = MAXVAL( tr n(:,:,:,jn), mask= ((tmask*SPREAD(tmask_i,DIM=3,NCOPIES=jpk).NE.0.)) )322 zvol(:,:,jk) = e1e2t(:,:) * e3t(:,:,jk,Krhs) * tmask(:,:,jk) 323 END DO 324 ! 325 DO jn = 1, jptra 326 ztraf = glob_sum( 'trcrst', tr(:,:,:,jn,Kmm) * zvol(:,:,:) ) 327 zmin = MINVAL( tr(:,:,:,jn,Kmm), mask= ((tmask*SPREAD(tmask_i,DIM=3,NCOPIES=jpk).NE.0.)) ) 328 zmax = MAXVAL( tr(:,:,:,jn,Kmm), mask= ((tmask*SPREAD(tmask_i,DIM=3,NCOPIES=jpk).NE.0.)) ) 326 329 IF( lk_mpp ) THEN 327 330 CALL mpp_min( 'trcrst', zmin ) ! min over the global domain … … 343 346 !!---------------------------------------------------------------------- 344 347 CONTAINS 345 SUBROUTINE trc_rst_read ! Empty routines 348 SUBROUTINE trc_rst_read( Kbb, Kmm) ! Empty routines 349 INTEGER, INTENT( in ) :: Kbb, Kmm ! time level indices 346 350 END SUBROUTINE trc_rst_read 347 SUBROUTINE trc_rst_wri( kt ) 348 INTEGER, INTENT ( in ) :: kt 351 SUBROUTINE trc_rst_wri( kt, Kbb, Kmm, Krhs ) 352 INTEGER, INTENT( in ) :: kt 353 INTEGER, INTENT( in ) :: Kbb, Kmm, Krhs ! time level indices 349 354 WRITE(*,*) 'trc_rst_wri: You should not have seen this print! error?', kt 350 355 END SUBROUTINE trc_rst_wri
Note: See TracChangeset
for help on using the changeset viewer.