New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 12377 for NEMO/trunk/src/TOP/trcrst.F90 – NEMO

Ignore:
Timestamp:
2020-02-12T15:39:06+01:00 (4 years ago)
Author:
acc
Message:

The big one. Merging all 2019 developments from the option 1 branch back onto the trunk.

This changeset reproduces 2019/dev_r11943_MERGE_2019 on the trunk using a 2-URL merge
onto a working copy of the trunk. I.e.:

svn merge --ignore-ancestry \

svn+ssh://acc@forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/NEMO/trunk \
svn+ssh://acc@forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/NEMO/branches/2019/dev_r11943_MERGE_2019 ./

The --ignore-ancestry flag avoids problems that may otherwise arise from the fact that
the merge history been trunk and branch may have been applied in a different order but
care has been taken before this step to ensure that all applicable fixes and updates
are present in the merge branch.

The trunk state just before this step has been branched to releases/release-4.0-HEAD
and that branch has been immediately tagged as releases/release-4.0.2. Any fixes
or additions in response to tickets on 4.0, 4.0.1 or 4.0.2 should be done on
releases/release-4.0-HEAD. From now on future 'point' releases (e.g. 4.0.2) will
remain unchanged with periodic releases as needs demand. Note release-4.0-HEAD is a
transitional naming convention. Future full releases, say 4.2, will have a release-4.2
branch which fulfills this role and the first point release (e.g. 4.2.0) will be made
immediately following the release branch creation.

2020 developments can be started from any trunk revision later than this one.

Location:
NEMO/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk

    • Property svn:externals
      •  

        old new  
        33^/utils/build/mk@HEAD         mk 
        44^/utils/tools@HEAD            tools 
        5 ^/vendors/AGRIF/dev@HEAD      ext/AGRIF 
         5^/vendors/AGRIF/dev_r11615_ENHANCE-04_namelists_as_internalfiles_agrif@HEAD      ext/AGRIF 
        66^/vendors/FCM@HEAD            ext/FCM 
        77^/vendors/IOIPSL@HEAD         ext/IOIPSL 
  • NEMO/trunk/src/TOP/trcrst.F90

    r11536 r12377  
    7676 
    7777      ! 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 + 1 
    80       IF( kt == nitrst - 2*nn_dttrc .OR. nn_stock == nn_dttrc .OR. ( kt == nitend - nn_dttrc .AND. .NOT. lrst_trc ) ) THEN 
     78      ! 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 
    8181         ! beware of the format used to write kt (default is i8.8, that should be large enough) 
    8282         IF( nitrst > 1.0e9 ) THEN   ;   WRITE(clkt,*       ) nitrst 
     
    9696   END SUBROUTINE trc_rst_opn 
    9797 
    98    SUBROUTINE trc_rst_read 
     98   SUBROUTINE trc_rst_read( Kbb, Kmm ) 
    9999      !!---------------------------------------------------------------------- 
    100100      !!                    ***  trc_rst_opn  *** 
     
    102102      !! ** purpose  :   read passive tracer fields in restart files 
    103103      !!---------------------------------------------------------------------- 
     104      INTEGER, INTENT( in ) ::   Kbb, Kmm  ! time level indices 
    104105      INTEGER  ::  jn      
    105106 
     
    112113      ! READ prognostic variables and computes diagnostic variable 
    113114      DO jn = 1, jptra 
    114          CALL iom_get( numrtr, jpdom_autoglo, 'TRN'//ctrcnm(jn), trn(:,:,:,jn) ) 
    115       END DO 
    116  
    117       DO jn = 1, jptra 
    118          CALL iom_get( numrtr, jpdom_autoglo, 'TRB'//ctrcnm(jn), trb(:,:,:,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) ) 
    119120      END DO 
    120121      ! 
     
    123124   END SUBROUTINE trc_rst_read 
    124125 
    125    SUBROUTINE trc_rst_wri( kt ) 
     126   SUBROUTINE trc_rst_wri( kt, Kbb, Kmm, Krhs ) 
    126127      !!---------------------------------------------------------------------- 
    127128      !!                    ***  trc_rst_wri  *** 
     
    129130      !! ** purpose  :   write passive tracer fields in restart files 
    130131      !!---------------------------------------------------------------------- 
    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 
    132134      !! 
    133135      INTEGER  :: jn 
     
    138140      ! --------------------  
    139141      DO jn = 1, jptra 
    140          CALL iom_rstput( kt, nitrst, numrtw, 'TRN'//ctrcnm(jn), trn(:,:,:,jn) ) 
    141       END DO 
    142  
    143       DO jn = 1, jptra 
    144          CALL iom_rstput( kt, nitrst, numrtw, 'TRB'//ctrcnm(jn), trb(:,:,:,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) ) 
    145147      END DO 
    146148      ! 
     
    148150     
    149151      IF( kt == nitrst ) THEN 
    150           CALL trc_rst_stat            ! statistics 
     152          CALL trc_rst_stat( Kmm, Krhs )             ! statistics 
    151153          CALL iom_close( numrtw )     ! close the restart file (only at last time step) 
    152154#if ! defined key_trdmxl_trc 
     
    219221            ENDIF 
    220222            ! Control of date  
    221             IF( nittrc000  - NINT( zkt ) /= nn_dttrc .AND.  nn_rsttr /= 0 )                                  & 
     223            IF( nittrc000  - NINT( zkt ) /= 1 .AND.  nn_rsttr /= 0 )                                  & 
    222224               &   CALL ctl_stop( ' ===>>>> : problem with nittrc000 for the restart',                 & 
    223225               &                  ' verify the restart file or rerun with nn_rsttr = 0 (namelist)' ) 
     
    299301 
    300302 
    301    SUBROUTINE trc_rst_stat 
     303   SUBROUTINE trc_rst_stat( Kmm, Krhs ) 
    302304      !!---------------------------------------------------------------------- 
    303305      !!                    ***  trc_rst_stat  *** 
     
    305307      !! ** purpose  :   Compute tracers statistics 
    306308      !!---------------------------------------------------------------------- 
     309      INTEGER, INTENT( in ) ::   Kmm, Krhs  ! time level indices 
    307310      INTEGER  :: jk, jn 
    308311      REAL(wp) :: ztraf, zmin, zmax, zmean, zdrift 
     
    317320      ! 
    318321      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', trn(:,:,:,jn) * zvol(:,:,:) ) 
    324          zmin  = MINVAL( trn(:,:,:,jn), mask= ((tmask*SPREAD(tmask_i,DIM=3,NCOPIES=jpk).NE.0.)) ) 
    325          zmax  = MAXVAL( trn(:,:,:,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.)) ) 
    326329         IF( lk_mpp ) THEN 
    327330            CALL mpp_min( 'trcrst', zmin )      ! min over the global domain 
     
    343346   !!---------------------------------------------------------------------- 
    344347CONTAINS 
    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 
    346350   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 
    349354      WRITE(*,*) 'trc_rst_wri: You should not have seen this print! error?', kt 
    350355   END SUBROUTINE trc_rst_wri    
Note: See TracChangeset for help on using the changeset viewer.