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 616 for trunk/NEMO/TOP_SRC – NEMO

Changeset 616 for trunk/NEMO/TOP_SRC


Ignore:
Timestamp:
2007-02-21T13:59:08+01:00 (17 years ago)
Author:
opalod
Message:

nemo_v2_update_003:CE:use of IOM module for restart file

Location:
trunk/NEMO/TOP_SRC
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/TOP_SRC/TRP/trcstp.F90

    r439 r616  
    5252      IF( MOD( kt , ndttrc ) /= 0 ) RETURN 
    5353 
    54       ! tracers: sink and source  
     54      CALL trc_rst_opn( kt )      ! Open tracer restart file  
     55 
     56       ! tracers: sink and source  
    5557      IF(ln_ctl) THEN 
    5658         WRITE(charout,FMT="('kt =', I4,'  d/m/y =',I2,I2,I4)") kt, nday, nmonth, nyear 
    5759         CALL prt_ctl_trc_info(charout) 
    5860      ENDIF 
    59  
    6061 
    6162      CALL trc_sms( kt ) 
     
    7677      ENDIF 
    7778 
    78       CALL trc_wri( kt )            ! outputs 
     79      IF( lrst_trc ) CALL trc_rst_wri( kt )  ! write tracer restart file 
    7980 
    8081      CALL trc_dia( kt, kindic )     ! diagnostics 
  • trunk/NEMO/TOP_SRC/trcrst.F90

    r561 r616  
    2020   USE trctrp_lec    
    2121   USE lib_mpp 
     22   USE iom 
    2223    
    2324   IMPLICIT NONE 
     
    2526    
    2627   !! * Accessibility 
    27    PUBLIC trc_rst 
    28    PUBLIC trc_wri 
     28   PUBLIC trc_rst_opn 
     29   PUBLIC trc_rst_read 
     30   PUBLIC trc_rst_wri 
    2931    
    3032   !! * Module variables 
    31    CHARACTER (len=48) ::   & 
    32       trestart = 'initial.trc.nc'   ! restart file name 
     33   LOGICAL, PUBLIC ::   lrst_trc         !: logical to control the trc restart write  
     34   INTEGER, PUBLIC ::   numrtr, numrtw   !: logical unit for trc restart (read and write) 
     35 
    3336 
    3437   !! * Substitutions 
     
    3639    
    3740CONTAINS 
    38  
    39 #if defined key_fdir 
    40    !!---------------------------------------------------------------------- 
    41    !!   'key_fdir'                                       direct access file 
    42    !!---------------------------------------------------------------------- 
    43 #include "trcrst_fdir.h90" 
    44     
    45 #else  
    46  
    47    SUBROUTINE trc_rst  
     41    
     42   SUBROUTINE trc_rst_opn( kt ) 
     43      !!---------------------------------------------------------------------- 
     44      !!                    ***  trc_rst_opn  *** 
     45      !! 
     46      !! ** purpose  :   output of sea-trc variable in a netcdf file 
     47      !!---------------------------------------------------------------------- 
     48      INTEGER, INTENT(in) ::   kt       ! number of iteration 
     49      ! 
     50      CHARACTER(LEN=20)   ::   clkt     ! ocean time-step define as a character 
     51      CHARACTER(LEN=50)   ::   clname   ! trc output restart file name 
     52      !!---------------------------------------------------------------------- 
     53      ! 
     54 
     55      IF( kt == nit000 )  THEN 
     56         lrst_trc = .FALSE. 
     57#if defined key_off_tra 
     58         nitrst = nitend  ! in online version, already done in rst_opn routine defined in restart.F90 module 
     59#endif 
     60      ENDIF 
     61       
     62      IF( kt == nitrst - ndttrc .OR. nitend - nit000 + 1 < 2 * ndttrc ) THEN 
     63         ! beware if model runs less than 2*ndttrc time step 
     64         ! beware of the format used to write kt (default is i8.8, that should be large enough) 
     65         IF( nitrst > 1.0e9 ) THEN    
     66            WRITE(clkt,*) nitrst 
     67         ELSE 
     68            WRITE(clkt,'(i8.8)') nitrst 
     69         ENDIF 
     70         ! create the file 
     71         IF(lwp) WRITE(numout,*) 
     72         clname = TRIM(cexper)//"_"//TRIM(ADJUSTL(clkt))//"_restart_trc" 
     73         IF(lwp) WRITE(numout,*) '             open trc restart.output NetCDF file: '//clname 
     74         CALL iom_open( clname, numrtw, ldwrt = .TRUE., kiolib = jprstlib ) 
     75         lrst_trc = .TRUE. 
     76      ENDIF 
     77      ! 
     78   END SUBROUTINE trc_rst_opn 
     79 
     80 
     81   SUBROUTINE trc_rst_read  
    4882      !!=========================================================================================== 
    4983      !! 
    50       !!                       ROUTINE trc_rst 
    51       !!                     ******************* 
     84      !!                       ROUTINE trc_rst_read 
     85      !!                       ******************* 
    5286      !! 
    5387      !!  PURPOSE : 
     
    70104      !!  05-03 (O. Aumont and A. El Moussaoui) F90            
    71105      !!------------------------------------------------------------------------ 
    72       !! * Modules used 
    73       USE iom 
    74  
    75  
    76       !! local declarations 
    77       !! ================== 
    78  
    79       INTEGER :: & 
    80          ji, jj, jk, jn   
    81       INTEGER  ::   & 
    82          inum, iarak0                 ! temporary logical unit 
    83       REAL(wp), DIMENSION(1, 1, 3)  ::   zinfo 
    84  
    85       CHARACTER (len=32) :: clname1,clname2,clname 
    86       REAL(wp) :: caralk,bicarb 
     106      INTEGER ::  ji, jj, jk, jn   
     107      INTEGER ::  iarak0     
     108      REAL(wp) :: zkt, zarak0 
     109      REAL(wp) :: caralk, bicarb, co3 
    87110 
    88111#if defined key_trc_pisces  
    89112#   if ! defined key_cfg_1d && ( defined key_orca_r4 || defined key_orca_r2 || defined key_orca_r05 || defined key_orca_r025 ) 
    90       REAL(wp) ::   zareatot, ztrasum 
     113      REAL(wp) ::  ztrasum 
    91114#   endif 
    92115#endif 
     
    110133      IF(lwp) WRITE(numout,*) ' passive tracer' 
    111134      IF(lwp) WRITE(numout,*) ' the present run :' 
    112       IF(lwp) WRITE(numout,*) '   number job is  : ',no 
    113135      IF(lwp) WRITE(numout,*) '   with the time nit000 : ',nit000 
    114136      IF(lwp) THEN 
     
    137159      END SELECT 
    138160 
    139  
    140  
    141       CALL iom_open ( 'restart.trc', inum ) 
    142  
    143       CALL iom_get ( inum, jpdom_unknown, 'info', zinfo ) 
     161      CALL iom_open ( 'restart.trc', numrtr, kiolib = jprstlib ) 
     162 
     163      CALL iom_get( numrtr, 'kt'   , zkt    ) 
     164      CALL iom_get( numrtr, 'arak0', zarak0 ) 
    144165 
    145166      IF(lwp) WRITE(numout,*) 
    146167      IF(lwp) WRITE(numout,*) ' Info on the restart file read : ' 
    147       IF(lwp) WRITE(numout,*) '   job number          : ', NINT( zinfo(1, 1, 1) ) 
    148       IF(lwp) WRITE(numout,*) '   time-step           : ', NINT( zinfo(1, 1, 2) ) 
    149       IF(lwp) WRITE(numout,*) '   arakawa option      : ', NINT( zinfo(1, 1, 3) ) 
     168      IF(lwp) WRITE(numout,*) '   time-step           : ', NINT( zkt    ) 
     169      IF(lwp) WRITE(numout,*) '   arakawa option      : ', NINT( zarak0 ) 
    150170      IF(lwp) WRITE(numout,*) 
    151171 
     
    154174      !! ------------------- 
    155175 
    156       IF( nittrc000 - NINT( zinfo( 1, 1, 2 ) ) /= 1 .AND. nrsttr /= 0 )  & 
     176      IF( nittrc000 - NINT( zkt ) /= 1 .AND. nrsttr /= 0 )  & 
    157177           & CALL ctl_stop( ' ===>>>> : problem with nit000 for the restart', & 
    158178           & ' verify the restart file or rerun with nrstdt = 0 (namelist)' ) 
     
    161181      !! ------------------------ 
    162182 
    163       IF( iarak0 /= NINT( zinfo(1, 1, 3 ) ) ) & 
     183      IF( iarak0 /= NINT( zarak0 ) ) & 
    164184           & CALL ctl_stop( ' ===>>>> : problem with advection scheme', & 
    165185           & ' it must be the same type for both restart and previous run', & 
     
    171191 
    172192      DO jn = 1, jptra 
    173          clname = 'TRN'//ctrcnm(jn) 
    174          CALL iom_get( inum, jpdom_local, clname, trn(:,:,:,jn)   )  
     193         CALL iom_get( numrtr, jpdom_local, 'TRN'//ctrcnm(jn), trn(:,:,:,jn)   )  
    175194      END DO 
    176195 
    177196      DO jn = 1, jptra 
    178          clname = 'TRB'//ctrcnm(jn) 
    179          CALL iom_get( inum, jpdom_local, clname, trb(:,:,:,jn)   )  
     197         CALL iom_get( numrtr, jpdom_local, 'TRB'//ctrcnm(jn), trb(:,:,:,jn)   )  
    180198      END DO 
    181199 
    182200#if defined key_trc_lobster1 
    183       clname  = 'SEDB'//ctrcnm(jpdet) 
    184       clname1 = 'SEDN'//ctrcnm(jpdet) 
    185       CALL iom_get( inum, jpdom_local, clname , sedpocb(:,:) )  
    186       CALL iom_get( inum, jpdom_local, clname1, sedpocn(:,:) )  
     201      CALL iom_get( numrtr, jpdom_local, 'SEDB'//ctrcnm(jpdet), sedpocb(:,:) )  
     202      CALL iom_get( numrtr, jpdom_local, 'SEDN'//ctrcnm(jpdet), sedpocn(:,:) )  
    187203 
    188204#elif defined key_trc_pisces 
    189       clname = 'Silicalim' 
    190       CALL iom_get( inum, jpdom_local, clname, xksi(:,:) )  
     205      CALL iom_get( numrtr, jpdom_local, 'Silicalim', xksi(:,:) )  
    191206      xksimax = xksi 
    192207 
    193       clname  = 'SED'//ctrcnm(jppoc) 
    194       clname1 = 'SED'//ctrcnm(jpcal) 
    195       clname2 = 'SED'//ctrcnm(jpsil) 
    196  
    197       CALL iom_get( inum, jpdom_local, clname , sedpoc(:,:) )  
    198       CALL iom_get( inum, jpdom_local, clname1, sedcal(:,:) )  
    199       CALL iom_get( inum, jpdom_local, clname2, sedsil(:,:) )  
     208      CALL iom_get( numrtr, jpdom_local, 'SED'//ctrcnm(jppoc), sedpoc(:,:) )  
     209      CALL iom_get( numrtr, jpdom_local, 'SED'//ctrcnm(jpcal), sedcal(:,:) )  
     210      CALL iom_get( numrtr, jpdom_local, 'SED'//ctrcnm(jpsil), sedsil(:,:) )  
    200211 
    201212#elif defined key_cfc 
    202       clname  = 'qint' 
    203       clname1 = 'qtr' 
    204213      DO jn = 1, jptra 
    205          CALL iom_get( inum, jpdom_unknown, clname,  qint(:,:,jn), jn ) 
    206          CALL iom_get( inum, jpdom_unknown, clname1, qtr (:,:,jn), jn ) 
    207       ENDDO 
    208 #endif 
     214         CALL iom_get( numrtr, jpdom_local, 'qint'//ctrcnm(jn),qint(:,:,jn))  
     215      END DO 
     216      DO jn = 1, jptra 
     217         CALL iom_get( numrtr, jpdom_local, 'qtr'//ctrcnm(jn) ,qtr( :,:,jn))  
     218      END DO 
     219#endif 
     220 
    209221 
    210222#if defined key_trc_pisces  
    211223 
    212224#if ! defined key_cfg_1d && ( defined key_orca_r4 || defined key_orca_r2 || defined key_orca_r05 || defined key_orca_r025 )  
    213  
    214       zareatot = 0. 
    215       DO jk = 1, jpk 
    216          DO jj = 1, jpj 
    217             DO ji = 1, jpi 
    218                zareatot = zareatot + tmask(ji,jj,jk) * tmask_i(ji,jj)  & 
    219 #if defined key_off_degrad 
    220                   &                * facvol(ji,jj,jk)    & 
    221 #endif 
    222  
    223                   &                * e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk)  
    224             END DO 
    225          END DO 
    226       END DO 
    227  
    228       IF( lk_mpp ) THEN  
    229          CALL mpp_sum( zareatot )     ! sum over the global domain   
    230       END IF 
    231225 
    232226      ztrasum = 0. 
     
    234228         DO jj = 1, jpj 
    235229            DO ji = 1, jpi 
    236                ztrasum = ztrasum + trn(ji,jj,jk,jptal) * tmask(ji,jj,jk) * tmask_i(ji,jj)    & 
     230               ztrasum = ztrasum + trn(ji,jj,jk,jptal) * tmask(ji,jj,jk) * tmask_i(ji,jj)  & 
    237231#if defined key_off_degrad 
    238232                  &              * facvol(ji,jj,jk)   & 
     
    248242      END IF 
    249243 
    250       WRITE(0,*) 'TALK moyen ', ztrasum/zareatot*1E6 
    251       ztrasum = ztrasum/zareatot*1E6 
     244      WRITE(0,*) 'TALK moyen ', ztrasum/areatot*1E6 
     245      ztrasum = ztrasum/areatot*1E6 
    252246      trn(:,:,:,jptal) = trn(:,:,:,jptal)*2391./ztrasum 
    253247 
     
    271265 
    272266 
    273       WRITE(0,*) 'PO4 moyen ', ztrasum/zareatot*1E6/122. 
    274       ztrasum = ztrasum/zareatot*1E6/122. 
     267      WRITE(0,*) 'PO4 moyen ', ztrasum/areatot*1E6/122. 
     268      ztrasum = ztrasum/areatot*1E6/122. 
    275269      trn(:,:,:,jppo4) = trn(:,:,:,jppo4)*2.165/ztrasum 
    276270 
     
    294288 
    295289 
    296       WRITE(0,*) 'NO3 moyen ', ztrasum/zareatot*1E6/7.6 
    297       ztrasum = ztrasum/zareatot*1E6/7.6 
     290      WRITE(0,*) 'NO3 moyen ', ztrasum/areatot*1E6/7.6 
     291      ztrasum = ztrasum/areatot*1E6/7.6 
    298292      trn(:,:,:,jpno3) = trn(:,:,:,jpno3)*30.9/ztrasum 
    299293 
     
    316310      END IF 
    317311 
    318       WRITE(0,*) 'SiO3 moyen ', ztrasum/zareatot*1E6 
    319       ztrasum = ztrasum/zareatot*1E6 
     312      WRITE(0,*) 'SiO3 moyen ', ztrasum/areatot*1E6 
     313      ztrasum = ztrasum/areatot*1E6 
    320314      trn(:,:,:,jpsil) = MIN( 400E-6,trn(:,:,:,jpsil)*91.51/ztrasum)  
    321315 
    322316#endif 
     317 
     318!#if defined key_trc_kriest 
     319!      !! Initialize number of particles from a standart restart file 
     320!      !! The name of big organic particles jpgoc has been only change 
     321!      !! and replace by jpnum but the values here are concentration 
     322!      trn(:,:,:,jppoc) = trn(:,:,:,jppoc) + trn(:,:,:,jpnum) 
     323!      trn(:,:,:,jpnum) = trn(:,:,:,jppoc) / ( 6. * xkr_massp ) 
     324!#endif 
    323325      !!  Initialization of chemical variables of the carbon cycle 
    324326      !!  -------------------------------------------------------- 
     
    328330               caralk = trn(ji,jj,jk,jptal)-       & 
    329331                  &        borat(ji,jj,jk)/(1.+1.E-8/(rtrn+akb3(ji,jj,jk))) 
    330                co3(ji,jj,jk)=(caralk-trn(ji,jj,jk,jpdic))*tmask(ji,jj,jk)   & 
     332               co3 = (caralk-trn(ji,jj,jk,jpdic))*tmask(ji,jj,jk)   & 
    331333                  &        +(1.-tmask(ji,jj,jk))*.5e-3 
    332334               bicarb = (2.*trn(ji,jj,jk,jpdic)-caralk) 
    333                hi(ji,jj,jk) = (ak23(ji,jj,jk)*bicarb/co3(ji,jj,jk))     & 
     335               hi(ji,jj,jk) = (ak23(ji,jj,jk)*bicarb/co3)     & 
    334336                  &  *tmask(ji,jj,jk)+(1.-tmask(ji,jj,jk))*1.e-9 
    335                h2co3(ji,jj) = 1.e-5 
    336337            ENDDO 
    337338         ENDDO 
     
    340341      trb(:,:,:,:) = trn(:,:,:,:) 
    341342 
    342       CALL iom_close( inum ) 
    343  
    344  
    345    END SUBROUTINE trc_rst 
    346  
    347    SUBROUTINE trc_wri(kt) 
     343      CALL iom_close( numrtr ) 
     344 
     345 
     346   END SUBROUTINE trc_rst_read 
     347 
     348   SUBROUTINE trc_rst_wri(kt) 
    348349      !! ================================================================================== 
    349350      !! 
    350       !!                       ROUTINE trc_wri 
    351       !!                     ****************** 
     351      !!                       ROUTINE trc_rst_wri 
     352      !!                       ****************** 
    352353      !! 
    353354      !!  PURPOSE : 
     
    377378      !!   WORKSPACE : 
    378379      !!   --------- 
    379       !!      ji,jj,jk,jl,ino0,it0,iarak0 
     380      !!      ji,jj,jk,jn 
    380381      !! 
    381382      !!   History: 
     
    392393      !!   05-03 (O. Aumont and A. El Moussaoui) F90 
    393394      !!========================================================================================! 
    394       !! * Modules used 
    395       USE ioipsl 
    396395 
    397396      !! * Arguments 
     
    402401      !! ==================== 
    403402 
    404       LOGICAL :: clbon         !!! 
    405       CHARACTER (len=50) :: clname,clname1,clname2,cln 
    406  
    407       INTEGER :: jn,   & 
    408          ino0,it0,iarak0,     & 
    409          ic,jc,ji,jj,jk,      & 
    410          itime 
    411  
    412       REAL(wp) :: zdate0, zinfo(3),zdiag_var,    & 
    413          zdiag_varmin, zdiag_varmax, zdiag_tot, zder 
     403      INTEGER  :: ji,jj,jk,jn 
     404      REAL(wp) :: zdiag_var, zdiag_varmin, zdiag_varmax, zdiag_tot 
     405      REAL(wp) :: zder 
    414406 
    415407 
    416408      !! 1. OUTPUT of restart fields (nutwrs) 
    417409      !! --------------------------- 
    418  
    419       IF( kt == nittrc000 ) THEN 
    420          IF(lwp) WRITE(numout,*) 
    421          IF(lwp) WRITE(numout,*) 'trc_wri : write passive tracers restart.output NetCDF file' 
    422          IF(lwp) WRITE(numout,*) '~~~~~~~' 
    423         
    424  
    425          areatot = 0. 
    426          DO jk = 1, jpk 
    427             DO jj = 1, jpj 
    428                DO ji = 1, jpi 
    429                   areatot = areatot + tmask(ji,jj,jk)*tmask_i(ji,jj)*e1t(ji,jj)*e2t(ji,jj)*fse3t(ji,jj,jk)  
    430                END DO 
    431             END DO 
    432          END DO 
    433  
    434          IF( lk_mpp ) THEN  
    435              CALL mpp_sum(areatot)     ! sum over the global domain   
    436          END IF 
    437  
    438          trai = 0. 
    439          DO jn = 1, jptra 
    440             DO jk = 1,jpk 
    441                DO jj = 1, jpj 
    442                   DO ji = 1, jpi 
    443                      trai=trai+tmask(ji,jj,jk)*trn(ji,jj,jk,jn)*     & 
    444                         &    tmask_i(ji,jj)* e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk)  
    445                   END DO 
    446                END DO 
    447             END DO 
    448          END DO 
    449  
    450          IF( lk_mpp ) THEN  
    451              CALL mpp_sum(trai)         ! sum over the global domain   
    452          END IF 
    453  
    454          IF (lwp) WRITE(numout,*) 'Integral of all tracers over the full domain at NIT000 =',trai 
    455  
    456       ENDIF 
    457  
    458410 
    459411      IF( MOD(kt,nstock) == 0 .OR. kt == nitend ) THEN 
     
    468420 
    469421 
    470          ino0 =no 
    471          it0  =kt 
     422         CALL iom_rstput( kt, nitrst, numrtw, 'kt'   ,  REAL( kt, wp )  ) 
     423 
    472424         IF( ln_trcadv_cen2 .OR. ln_trcadv_tvd ) THEN 
    473             iarak0 = 1 
     425            CALL iom_rstput( kt, nitrst, numrtw, 'arak0', 1. ) 
    474426         ELSE 
    475             iarak0=0 
     427            CALL iom_rstput( kt, nitrst, numrtw, 'arak0', 0. ) 
    476428         ENDIF 
    477429 
    478          zinfo(1)=FLOAT(ino0) 
    479          zinfo(2)=FLOAT(it0) 
    480          zinfo(3)=FLOAT(iarak0) 
    481  
    482          !! 1. WRITE in nutwrs 
    483          !! ------------------ 
    484          !!... first information 
    485  
    486          INQUIRE (FILE=trestart,EXIST=clbon) 
    487          IF(clbon) THEN 
    488             OPEN(UNIT=nutwrs,FILE=trestart,STATUS='old') 
    489             CLOSE(nutwrs,STATUS='delete') 
    490          ENDIF 
    491  
    492          ic=1 
    493          DO jc=1,16 
    494             IF(cexper(jc:jc) /= ' ') ic = jc 
    495          END DO 
    496          WRITE(cln,'("_",i4.4,i2.2,i2.2,"_restart.trc")') nyear, nmonth, nday 
    497          clname=cexper(1:ic)//cln 
    498          ic=1 
    499          DO jc=1,48 
    500             IF(clname(jc:jc) /= ' ') ic=jc 
    501          END DO 
    502          trestart=clname(1:ic)//".nc" 
    503          itime=0 
    504          CALL ymds2ju(nyear,nmonth,nday,0.0,zdate0) 
    505          CALL restini('NONE',jpi,jpj,glamt,gphit,jpk,gdept_0,clname           & 
    506             &        ,itime,zdate0,rdt*nstock,nutwrs,domain_id=nidom) 
    507  
    508          CALL restput(nutwrs,'info',1,1,3,0,zinfo) 
    509430 
    510431         ! prognostic variables 
    511432         ! -------------------- 
    512433 
     434         DO jn=1,jptra 
     435            CALL iom_rstput( kt, nitrst, numrtw, 'TRN'//ctrcnm(jn), trn(:,:,:,jn) ) 
     436         ENDDO 
     437 
     438         DO jn=1,jptra 
     439            CALL iom_rstput( kt, nitrst, numrtw, 'TRB'//ctrcnm(jn), trb(:,:,:,jn) ) 
     440         END DO 
     441 
     442#if defined key_trc_lobster1 
     443         CALL iom_rstput( kt, nitrst, numrtw, 'SEDB'//ctrcnm(jpdet), sedpocb(:,:) ) 
     444         CALL iom_rstput( kt, nitrst, numrtw, 'SEDN'//ctrcnm(jpdet), sedpocn(:,:) ) 
     445#elif defined key_trc_pisces 
     446         CALL iom_rstput( kt, nitrst, numrtw, 'Silicalim', xksi(:,:) ) 
     447 
     448         CALL iom_rstput( kt, nitrst, numrtw, 'SED'//ctrcnm(jppoc), sedpoc(:,:) ) 
     449         CALL iom_rstput( kt, nitrst, numrtw, 'SED'//ctrcnm(jpcal), sedcal(:,:) ) 
     450         CALL iom_rstput( kt, nitrst, numrtw, 'SED'//ctrcnm(jpsil), sedsil(:,:) ) 
     451          
     452#elif defined key_cfc 
     453         DO jn=1,jptra 
     454            CALL iom_rstput( kt, nitrst, numrtw, 'qint'//ctrcnm(jn), qint(:,:,jn) ) 
     455         END DO 
     456         DO jn=1,jptra 
     457            CALL iom_rstput( kt, nitrst, numrtw, 'qtr'//ctrcnm(jn) , qtr( :,:,jn) ) 
     458         END DO 
     459#endif 
     460 
    513461         IF (lwp) WRITE(numout,*) '----TRACER STAT----' 
     462 
    514463         zdiag_tot=0. 
    515464         DO jn=1,jptra 
    516             clname='TRN'//ctrcnm(jn) 
    517             CALL restput(nutwrs,clname,jpi,jpj,jpk,0,trn(:,:,:,jn)) 
    518  
    519465            zdiag_var=0. 
    520466            zdiag_varmin=0. 
     
    524470               DO jj=1, jpj 
    525471                  DO jk=1,jpk 
    526                     zdiag_var=zdiag_var+tmask(ji,jj,jk)*trn(ji,jj,jk,jn)*     & 
    527                                tmask_i(ji,jj)* e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk)  
     472                     zdiag_var=zdiag_var+trn(ji,jj,jk,jn)*tmask(ji,jj,jk)*tmask_i(ji,jj)  & 
     473#if defined key_off_degrad 
     474                        &   * facvol(ji,jj,jk)   & 
     475#endif 
     476                        &   * e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) 
    528477 
    529478                  END DO 
     
    534483            zdiag_varmax=MAXVAL(trn(:,:,:,jn), mask= ((tmask*SPREAD(tmask_i,DIM=3,NCOPIES=jpk).NE.0.))) 
    535484 
    536             IF( lk_mpp ) THEN  
    537                CALL mpp_min(zdiag_varmin)      ! min over the global domain   
    538                CALL mpp_max(zdiag_varmax)      ! max over the global domain   
    539                CALL mpp_sum(zdiag_var)         ! sum over the global domain   
     485            IF( lk_mpp ) THEN 
     486               CALL mpp_min(zdiag_varmin)      ! min over the global domain 
     487               CALL mpp_max(zdiag_varmax)      ! max over the global domain 
     488               CALL mpp_sum(zdiag_var)         ! sum over the global domain 
    540489            END IF 
    541490 
     
    550499         zdiag_tot=zdiag_tot 
    551500         zder=((zdiag_tot-trai)/trai)*100._wp 
    552          IF (lwp) WRITE(numout,*) 'Integral of all tracers over the full domain  =',zdiag_tot   
    553          IF (lwp) WRITE(numout,*) 'Drift of the sum of all tracers =',zder, '%'   
    554  
    555          DO jn=1,jptra 
    556             clname='TRB'//ctrcnm(jn) 
    557             CALL restput(nutwrs,clname,jpi,jpj,jpk,0,trb(:,:,:,jn)) 
    558          END DO 
    559  
    560 #if defined key_trc_lobster1 
    561          clname='SEDB'//ctrcnm(jpdet) 
    562          clname1='SEDN'//ctrcnm(jpdet) 
    563          CALL restput(nutwrs,clname,jpi,jpj,1,0,sedpocb(:,:)) 
    564          CALL restput(nutwrs,clname1,jpi,jpj,1,0,sedpocn(:,:)) 
    565 #elif defined key_trc_pisces 
    566          clname='SED'//ctrcnm(jppoc) 
    567          clname1='SED'//ctrcnm(jpcal) 
    568          clname2='SED'//ctrcnm(jpsil) 
    569          CALL restput(nutwrs,clname1,jpi,jpj,1,0,sedcal(:,:)) 
    570          CALL restput(nutwrs,clname2,jpi,jpj,1,0,sedsil(:,:)) 
    571          CALL restput(nutwrs,clname,jpi,jpj,1,0,sedpoc(:,:)) 
    572  
    573          clname='Silicalim' 
    574          CALL restput(nutwrs,clname,jpi,jpj,1,0,xksi(:,:)) 
    575 #elif defined key_cfc 
    576          clname='qint' 
    577          CALL restput(nutwrs,clname,jpi,jpj,jptra,0,qint(:,:,:)) 
    578          clname1='qtr' 
    579          CALL restput(nutwrs,clname1,jpi,jpj,jptra,0,qtr(:,:,:)) 
    580 #endif 
    581  
    582  
    583          CALL restclo(nutwrs) 
     501         IF (lwp) WRITE(numout,*) 'Integral of all tracers over the full domain  =',zdiag_tot 
     502         IF (lwp) WRITE(numout,*) 'Drift of the sum of all tracers =',zder, '%' 
     503 
     504         CALL iom_close(numrtw) 
    584505 
    585506      ENDIF 
    586507 
    587    END SUBROUTINE trc_wri 
    588  
    589 #endif 
     508   END SUBROUTINE trc_rst_wri 
     509 
    590510 
    591511#else 
     
    595515CONTAINS 
    596516 
    597    SUBROUTINE trc_rst 
     517   SUBROUTINE trc_rst_read 
    598518      !! no passive tracers 
    599    END SUBROUTINE trc_rst 
    600  
    601    SUBROUTINE trc_wri(kt) 
     519   END SUBROUTINE trc_rst_read 
     520 
     521   SUBROUTINE trc_rst_wri(kt) 
    602522      !! no passive tracers 
    603523      INTEGER, INTENT ( in ) :: kt 
    604       WRITE(*,*) 'trc_wri: You should not have seen this print! error?', kt 
    605    END SUBROUTINE trc_wri 
     524      WRITE(*,*) 'trc_rst_wri: You should not have seen this print! error?', kt 
     525   END SUBROUTINE trc_rst_wri 
    606526    
    607527#endif 
Note: See TracChangeset for help on using the changeset viewer.