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.
trcrst.F90 in trunk/NEMO/TOP_SRC – NEMO

source: trunk/NEMO/TOP_SRC/trcrst.F90 @ 491

Last change on this file since 491 was 433, checked in by opalod, 18 years ago

nemo_v1_update_044 : CT : update the passive tracers TOP component and the standard GYRE configuration

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 19.9 KB
RevLine 
[268]1MODULE trcrst
[335]2   !!======================================================================
[268]3   !!
4   !!                       *** MODULE trcrst ***
5   !!
6   !!   Read the restart files for passive tracers
7   !!
[335]8   !!======================================================================
[340]9   !!  TOP 1.0,  LOCEAN-IPSL (2005)
10   !! $Header$
11   !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt
[274]12   !!----------------------------------------------------------------------
[335]13#if defined key_passivetrc   
14   !!----------------------------------------------------------------------
15   !! * Modules used
16   !! ==============
17   USE oce_trc
18   USE trc
19   USE sms
20   USE trctrp_lec   
[433]21   USE lib_mpp
[335]22   
23   IMPLICIT NONE
24   PRIVATE
25   
[268]26   !! * Accessibility
27   PUBLIC trc_rst
28   PUBLIC trc_wri
[335]29   
[268]30   !! * Module variables
31   CHARACTER (len=48) ::   &
32      trestart = 'initial.trc.nc'   ! restart file name
[350]33
34   !! * Substitutions
35#  include "passivetrc_substitute.h90"
[335]36   
[268]37CONTAINS
38
39#if defined key_fdir
40   !!----------------------------------------------------------------------
41   !!   'key_fdir'                                       direct access file
42   !!----------------------------------------------------------------------
43#include "trcrst_fdir.h90"
[335]44   
45#else
[268]46
[335]47   SUBROUTINE trc_rst 
48      !!===========================================================================================
49      !!
50      !!                       ROUTINE trc_rst
51      !!                     *******************
52      !!
53      !!  PURPOSE :
54      !!  ---------
55      !!     READ files for restart for passive tracer
56      !!
57      !!   METHOD :
58      !!   -------
59      !!      READ the previous fields on the FILE nutrst
60      !!      the first record indicates previous characterics
61      !!      after control with the present run, we READ :
62      !!      - prognostic variables on the second and more record
63      !!
64      !!   History:
65      !!   --------
66      !!  original  : 96-11
67      !!  00-05 (A. Estublier) TVD Limiter Scheme key_trc_tvd
68      !!  00-12 (O. Aumont, E. Kestenare) read restart file for sediments
69      !!  01-05 (O. Aumont, E. Kestenare) read restart file for calcite and silicate sediments
70      !!  05-03 (O. Aumont and A. El Moussaoui) F90           
71      !!------------------------------------------------------------------------
72      !! * Modules used
[268]73      USE ioipsl
74
75
[335]76      !! local declarations
77      !! ==================
78      LOGICAL ::  llog       !!!
79      CHARACTER (len=32) :: clname1,clname2
80      CHARACTER (len=32) :: clname = 'restart.trc'
81      CHARACTER (len=12) :: clvnames(80) 
[268]82
[335]83      INTEGER :: ino1,jn,iarak0,iarak1,          &
84         ji, jj, jk,                   &
85         itime, ibvar
86      REAL(wp) :: caralk,bicarb,zdt,        &     
87         zdate0
88      REAL(wp) ::   zdept(jpk), zlamt(jpi,jpj), zphit(jpi,jpj)
[268]89
[335]90      REAL(wp), DIMENSION(3) :: zinfo
[268]91
[433]92#if defined key_trc_pisces 
93#if ! defined key_cfg_1d && ( defined key_orca_r4 || defined key_orca_r2 || defined key_orca_r05 || defined key_orca_r025 )
[350]94      REAL(wp) ::   zareatot, zpo4tot
95#endif
[433]96#endif
[350]97
[335]98      !!---------------------------------------------------------------------
99      !!  OPA.9 03-2005 
100      !!---------------------------------------------------------------------
101      !! 0. initialisations
102      !!------------------
[268]103
104
105      IF( ln_trcadv_cen2 .OR. ln_trcadv_tvd ) THEN
[335]106         iarak0 = 1
[268]107      ELSE
[335]108         iarak0=0
[268]109      ENDIF
110
111
112      IF(lwp) WRITE(numout,*) ' '
113      IF(lwp) WRITE(numout,*) ' *** trc_rst beginning of restart for'
114      IF(lwp) WRITE(numout,*) ' passive tracer'
115      IF(lwp) WRITE(numout,*) ' the present run :'
116      IF(lwp) WRITE(numout,*) '   number job is  : ',no
117      IF(lwp) WRITE(numout,*) '   with the time nit000 : ',nit000
118      IF(lwp) THEN
[335]119         IF(iarak0.eq.1) then
120            WRITE(numout,*) '   and before fields for Arakawa sheme '
121         ENDIF
122         WRITE(numout,*) ' '
[268]123      ENDIF
124
125      ! Time domain : restart
126      ! -------------------------
127
128      IF(lwp) WRITE(numout,*)
129      IF(lwp) WRITE(numout,*)
130      IF(lwp) WRITE(numout,*) ' *** passive tracer restart option'
131      SELECT CASE ( nrsttr )
132      CASE ( 0 )
133         IF(lwp) WRITE(numout,*) ' nrsttr = 0 no control of nit000'
134      CASE ( 1 )
135         IF(lwp) WRITE(numout,*) ' nrsttr = 1 we control the date of nit000'
136      CASE ( 2 )
137         IF(lwp) WRITE(numout,*) ' nrsttr = 2 the date adatrj is read in restart file'
138      CASE DEFAULT
139         IF(lwp) WRITE(numout,*) '  ===>>>> nrsttr not equal 0, 1 or 2 : no control of the date'
140         IF(lwp) WRITE(numout,*) ' =======                   ========='
141      END SELECT
142
143
[335]144      !! 1. READ nutrst
145      !! --------------
146      !! ... first information
147      !! ---------------------
[268]148      itime=0
149      llog=.false.           !!!
150      zlamt(:,:) = 0.e0
151      zphit(:,:) = 0.e0
152      zdept(:)   = 0.e0
153      CALL restini(clname,jpi,jpj,zlamt,zphit,jpk,zdept,clname         & 
[352]154         &           ,itime,zdate0,zdt,nutrst,domain_id=nidom)
[268]155
156      CALL ioget_vname(nutrst, ibvar, clvnames)
157      CALL restget(nutrst,'info',1,1,3,0,llog,zinfo)
158      ino1  = nint(zinfo(1))
159      iarak1 = nint(zinfo(3))
160
161      IF(lwp) WRITE(numout,*) ' '
162      IF(lwp) WRITE(numout,*) ' READ nutrst with '
163      IF(lwp) WRITE(numout,*) '   number job is  : ',ino1
164      IF(lwp) WRITE(numout,*) '   with the time it : ',nint(zinfo(2))
165      IF(lwp) THEN
[335]166         IF(iarak1.eq.1) then
167            WRITE(numout,*) '   and before fields for Arakawa sheme '
168         ENDIF
[268]169      ENDIF
170      IF(lwp) WRITE(numout,*) '   number of variables   : ', ibvar
171      IF(lwp) WRITE(numout,*) '   NetCDF variables      : '
172      IF(lwp) WRITE(numout,*) ' ',clvnames (:ibvar)
173      IF(lwp) WRITE(numout,*) ' '
174
[335]175      !! 1.2 control of date
176      !! -------------------
[268]177
178      IF( nit000- NINT( zinfo(2) ) /= 1 .AND. nrsttr /= 0 ) THEN
[335]179         IF(lwp) THEN
180            WRITE(numout,*) ' ===>>>> : problem with nit000 for the',    & 
181               ' passive tracer restart'
182            WRITE(numout,*) ' =======                              ',    &   
183               ' ======================'
184            WRITE(numout,*) ' we stop. verify the FILE'
185            WRITE(numout,*) ' or rerun with the value  0 for the'
186            WRITE(numout,*) ' control of time PARAMETER   nrstdt'
187            WRITE(numout,*) ' '
188         ENDIF
189         STOP 'trc_rst'       !!
[268]190      ENDIF
191
[335]192      !! 1.3 Control of the sheme
193      !! ------------------------
[268]194
195      IF(iarak0.ne.iarak1) THEN
[335]196         IF(lwp) THEN
197            WRITE(numout,*) ' ===>>>> : problem with the',       &   
198               ' passive tracer restart file'
199            WRITE(numout,*) ' =======                              ',        & 
200               ' ==========================='
201            WRITE(numout,*) ' we stop. verify the FILE'
202            WRITE(numout,*) ' before field required IF 1=',iarak0
203            WRITE(numout,*) ' before field present in file IF 1=',           & 
204               iarak1
205            WRITE(numout,*) ' '
206         ENDIF
207         STOP 'trc_rst'       !!!!!    AVERIFIER AU NIV F90'
[268]208      ENDIF
209
210
[335]211      !! ... READ prognostic variables and computes diagnostic variable
212      !! ---------------------------------------------------------------
[268]213
[335]214      DO jn=1,jptra
[268]215         clname='TRN'//ctrcnm(jn)
216         CALL restget(nutrst,clname,jpi,jpj,jpk,0,llog,trn(:,:,:,jn))
[335]217      END DO
[268]218
[335]219      DO jn=1,jptra
[268]220         clname='TRB'//ctrcnm(jn)
221         CALL restget(nutrst,clname,jpi,jpj,jpk,0,llog,trb(:,:,:,jn))
[335]222      END DO
[268]223
[335]224
225#if defined key_trc_lobster1
226      clname='SEDB'//ctrcnm(jpdet)
227      clname1='SEDN'//ctrcnm(jpdet)
228      CALL restget(nutrst,clname,jpi,jpj,1,0,llog,sedpocb(:,:))
229      CALL restget(nutrst,clname1,jpi,jpj,1,0,llog,sedpocn(:,:))
[268]230#elif defined key_trc_pisces
[335]231      clname='Silicalim'
232      CALL restget(nutrst,clname,jpi,jpj,1,0,llog,xksi)
233      xksimax=xksi
[268]234
[335]235      clname='SED'//ctrcnm(jppoc)
236      clname1='SED'//ctrcnm(jpcal)
237      clname2='SED'//ctrcnm(jpsil)
238      CALL restget(nutrst,clname1,jpi,jpj,1,0,llog,sedcal(:,:))
239      CALL restget(nutrst,clname2,jpi,jpj,1,0,llog,sedsil(:,:))
240      CALL restget(nutrst,clname,jpi,jpj,1,0,llog,sedpoc(:,:))
[268]241
[335]242#elif defined key_cfc
243      clname='qint'
244      CALL restget(nutrst,clname,jpi,jpj,jptra,0,llog,qint(:,:,:))
245      clname1='qtr'
246      CALL restget(nutrst,clname1,jpi,jpj,jptra,0,llog,qtr(:,:,:))         
[268]247#endif
248
[335]249#if defined key_trc_pisces 
[350]250
[433]251#if ! defined key_cfg_1d && ( defined key_orca_r4 || defined key_orca_r2 || defined key_orca_r05 || defined key_orca_r025 )
[350]252
[433]253      zareatot = 0.
254      DO jk = 1, jpk
255         DO jj = 1, jpj
256            DO ji = 1, jpi
257               zareatot = zareatot + tmask(ji,jj,jk) * tmask_i(ji,jj) * &
258                  &                 e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) 
259            END DO
260         END DO
261      END DO
[350]262
[433]263      IF( lk_mpp ) THEN
264         CALL mpp_sum( zareatot )     ! sum over the global domain 
265      END IF
[350]266
267      zpo4tot = 0.
[433]268      DO jk = 1, jpk
269         DO jj = 1, jpj
270            DO ji = 1, jpi
271               zpo4tot = zpo4tot + trn(ji,jj,jk,jptal) * tmask(ji,jj,jk) * tmask_i(ji,jj) *   &
272                  &                e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk)
[350]273            END DO
274         END DO
275      END DO
276
[433]277      IF( lk_mpp ) THEN
278         CALL mpp_sum( zpo4tot )     ! sum over the global domain 
279      END IF
280
[350]281      WRITE(0,*) 'TALK moyen ', zpo4tot/zareatot*1E6
282      zpo4tot = zpo4tot/zareatot*1E6
283      trn(:,:,:,jptal) = trn(:,:,:,jptal)*2391./zpo4tot
284
285      zpo4tot = 0.
[433]286      DO jk = 1, jpk
287         DO jj = 1, jpj
288            DO ji = 1, jpi
289               zpo4tot = zpo4tot + trn(ji,jj,jk,jppo4) * tmask(ji,jj,jk) * tmask_i(ji,jj) *   &
290                  &                e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk)
[350]291            END DO
292         END DO
293      END DO
294
[433]295      IF( lk_mpp ) THEN
296         CALL mpp_sum( zpo4tot )     ! sum over the global domain 
297      END IF
298
299
[350]300      WRITE(0,*) 'PO4 moyen ', zpo4tot/zareatot*1E6/122.
301      zpo4tot = zpo4tot/zareatot*1E6/122.
302      trn(:,:,:,jppo4) = trn(:,:,:,jppo4)*2.165/zpo4tot
303
304      zpo4tot = 0.
[433]305      DO jk = 1, jpk
306         DO jj = 1, jpj
307            DO ji = 1, jpi
308               zpo4tot = zpo4tot + trn(ji,jj,jk,jpno3) * tmask(ji,jj,jk) * tmask_i(ji,jj) *   &
309                  &                e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk)
[350]310            END DO
311         END DO
312      END DO
313
[433]314      IF( lk_mpp ) THEN
315         CALL mpp_sum( zpo4tot )     ! sum over the global domain 
316      END IF
317
318
[350]319      WRITE(0,*) 'NO3 moyen ', zpo4tot/zareatot*1E6/7.6
320      zpo4tot = zpo4tot/zareatot*1E6/7.6
321      trn(:,:,:,jpno3) = trn(:,:,:,jpno3)*30.9/zpo4tot
322
323      zpo4tot = 0.
[433]324      DO jk = 1, jpk
325         DO jj = 1, jpj
326            DO ji = 1, jpi
327               zpo4tot = zpo4tot + trn(ji,jj,jk,jpsil) * tmask(ji,jj,jk) * tmask_i(ji,jj) *   &
328                  &                e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk)
[350]329            END DO
330         END DO
331      END DO
332
[433]333      IF( lk_mpp ) THEN
334         CALL mpp_sum( zpo4tot )     ! sum over the global domain 
335      END IF
336
[350]337      WRITE(0,*) 'SiO3 moyen ', zpo4tot/zareatot*1E6
338      zpo4tot = zpo4tot/zareatot*1E6
339      trn(:,:,:,jpsil) = MIN( 400E-6,trn(:,:,:,jpsil)*91.51/zpo4tot) 
340
341#endif
[335]342      !!  Initialization of chemical variables of the carbon cycle
343      !!  --------------------------------------------------------
344      DO jk = 1,jpk
345         DO jj = 1,jpj
[268]346            DO ji = 1,jpi
[335]347               caralk = trn(ji,jj,jk,jptal)-       &
348                  &        borat(ji,jj,jk)/(1.+1.E-8/(rtrn+akb3(ji,jj,jk)))
349               co3(ji,jj,jk)=(caralk-trn(ji,jj,jk,jpdic))*tmask(ji,jj,jk)   &
350                  &        +(1.-tmask(ji,jj,jk))*.5e-3
351               bicarb = (2.*trn(ji,jj,jk,jpdic)-caralk)
352               hi(ji,jj,jk) = (ak23(ji,jj,jk)*bicarb/co3(ji,jj,jk))     &
353                  &  *tmask(ji,jj,jk)+(1.-tmask(ji,jj,jk))*1.e-9
354               h2co3(ji,jj) = 1.e-5
[268]355            ENDDO
[335]356         ENDDO
357      ENDDO
[268]358#endif
359
[335]360   END SUBROUTINE trc_rst
[268]361
[335]362   SUBROUTINE trc_wri(kt)
363      !! ==================================================================================
364      !!
365      !!                       ROUTINE trc_wri
366      !!                     ******************
367      !!
368      !!  PURPOSE :
369      !!  ---------
370      !!     WRITE restart fields in nutwrs
371      !!   METHOD :
372      !!   -------
373      !!
374      !!   nutwrs FILE:
375      !!   each nstock time step , SAVE fields which are necessary for
376      !!   passive tracer restart
377      !!
378      !!
379      !!   INPUT :
380      !!   -----
381      !!      argument
382      !!              kt              : time step
383      !!      COMMON
384      !!            /cottrc/          : passive tracers fields (before,now
385      !!                                  ,after)
386      !!
387      !!   OUTPUT :
388      !!   ------
389      !!      FILE
390      !!           nutwrs          : standard restart fields OUTPUT
391      !!
392      !!   WORKSPACE :
393      !!   ---------
394      !!      ji,jj,jk,jl,ino0,it0,iarak0
395      !!
396      !!   History:
397      !!   --------
398      !!      original : 96-12
399      !!      addition : 99-12 (M.-A. Foujols) NetCDF FORMAT with ioipsl
400      !!      additions : 00-05 (A. Estublier)
401      !!                  TVD Limiter Scheme : key_trc_tvd
402      !!      additions : 01-01 (M.A Foujols, E. Kestenare) bug fix: restclo
403      !!      additions : 01-01 (O. Aumont, E. Kestenare)
404      !!                  write restart file for sediments
405      !!      additions : 01-05 (O. Aumont, E. Kestenare)
406      !!                  write restart file for calcite and silicate sediments
407      !!   05-03 (O. Aumont and A. El Moussaoui) F90
408      !!========================================================================================!
[268]409      !! * Modules used
410      USE ioipsl
411
[335]412      !! * Arguments
[268]413      !! -----------
414      INTEGER, INTENT( in ) :: kt
415
416      !! * local declarations
417      !! ====================
418
419      LOGICAL :: clbon         !!!
420      CHARACTER (len=50) :: clname,clname1,clname2,cln
421
422      INTEGER :: jn,   &
[335]423         ino0,it0,iarak0,     &
424         ic,jc,ji,jj,jk,      &
425         itime
[268]426
427      REAL(wp) :: zdate0, zinfo(3),zdiag_var,    &
[433]428         zdiag_varmin, zdiag_varmax, zdiag_tot, zder
[268]429
430
[335]431      !! 1. OUTPUT of restart fields (nutwrs)
432      !! ---------------------------
[268]433
434      IF( kt == nit000 ) THEN
435         IF(lwp) WRITE(numout,*)
436         IF(lwp) WRITE(numout,*) 'trc_wri : write passive tracers restart.output NetCDF file'
437         IF(lwp) WRITE(numout,*) '~~~~~~~'
[433]438       
439
440         areatot = 0.
441         DO jk = 1, jpk
442            DO jj = 1, jpj
443               DO ji = 1, jpi
444                  areatot = areatot + tmask(ji,jj,jk)*tmask_i(ji,jj)*e1t(ji,jj)*e2t(ji,jj)*fse3t(ji,jj,jk) 
445               END DO
446            END DO
447         END DO
448
449         IF( lk_mpp ) THEN
450             CALL mpp_sum(areatot)     ! sum over the global domain 
451         END IF
452
453         trai = 0.
454         DO jn = 1, jptra
455            DO jk = 1,jpk
456               DO jj = 1, jpj
457                  DO ji = 1, jpi
458                     trai=trai+tmask(ji,jj,jk)*trn(ji,jj,jk,jn)*     &
459                        &    tmask_i(ji,jj)* e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) 
460                  END DO
461               END DO
462            END DO
463         END DO
464
465         IF( lk_mpp ) THEN
466             CALL mpp_sum(trai)         ! sum over the global domain 
467         END IF
468
469         IF (lwp) WRITE(numout,*) 'Integral of all tracers over the full domain at NIT000 =',trai
470
[268]471      ENDIF
472
473
474      IF( MOD(kt,nstock) == 0 .OR. kt == nitend ) THEN
475
[335]476         !! 0. initialisations
477         !! ------------------
[268]478
479         IF(lwp) WRITE(numout,*) ' '
480         IF(lwp) WRITE(numout,*) 'trc_wri : write the passive tracer restart file in NetCDF format ',   &
[335]481            'at it= ',kt,' date= ',ndastp
[268]482         IF(lwp) WRITE(numout,*) '~~~~~~~~~'
483
484
[335]485         ino0 =no
486         it0  =kt
487         IF( ln_trcadv_cen2 .OR. ln_trcadv_tvd ) THEN
488            iarak0 = 1
489         ELSE
490            iarak0=0
491         ENDIF
[268]492
[335]493         zinfo(1)=FLOAT(ino0)
494         zinfo(2)=FLOAT(it0)
495         zinfo(3)=FLOAT(iarak0)
[268]496
[335]497         !! 1. WRITE in nutwrs
498         !! ------------------
499         !!... first information
[268]500
[335]501         INQUIRE (FILE=trestart,EXIST=clbon)
502         IF(clbon) THEN
503            OPEN(UNIT=nutwrs,FILE=trestart,STATUS='old')
504            CLOSE(nutwrs,STATUS='delete')
505         ENDIF
[268]506
[335]507         ic=1
508         DO jc=1,16
[268]509            IF(cexper(jc:jc) /= ' ') ic = jc
[335]510         END DO
[433]511         WRITE(cln,'("_",i4.4,i2.2,i2.2,"_restart.trc")') nyear, nmonth, nday
[335]512         clname=cexper(1:ic)//cln
513         ic=1
514         DO jc=1,48
[268]515            IF(clname(jc:jc) /= ' ') ic=jc
[335]516         END DO
517         trestart=clname(1:ic)//".nc"
518         itime=0
519         CALL ymds2ju(nyear,nmonth,nday,0.0,zdate0)
520         CALL restini('NONE',jpi,jpj,glamt,gphit,jpk,gdept,clname           &
[352]521            &        ,itime,zdate0,rdt*nstock,nutwrs,domain_id=nidom)
[268]522
[335]523         CALL restput(nutwrs,'info',1,1,3,0,zinfo)
[268]524
[335]525         ! prognostic variables
526         ! --------------------
[268]527
[433]528         IF (lwp) WRITE(numout,*) '----TRACER STAT----'
529         zdiag_tot=0.
[268]530         DO jn=1,jptra
531            clname='TRN'//ctrcnm(jn)
532            CALL restput(nutwrs,clname,jpi,jpj,jpk,0,trn(:,:,:,jn))
533
[335]534            zdiag_var=0.
535            zdiag_varmin=0.
536            zdiag_varmax=0.
[268]537
[433]538            DO ji=1, jpi
539               DO jj=1, jpj
[335]540                  DO jk=1,jpk
[433]541                    zdiag_var=zdiag_var+tmask(ji,jj,jk)*trn(ji,jj,jk,jn)*     &
542                               tmask_i(ji,jj)* e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) 
[268]543
[335]544                  END DO
545               END DO
[268]546            END DO
547
[433]548            zdiag_varmin=MINVAL(trn(:,:,:,jn), mask= ((tmask*SPREAD(tmask_i,DIM=3,NCOPIES=jpk).NE.0.)))
549            zdiag_varmax=MAXVAL(trn(:,:,:,jn), mask= ((tmask*SPREAD(tmask_i,DIM=3,NCOPIES=jpk).NE.0.)))
[268]550
[433]551            IF( lk_mpp ) THEN
552               CALL mpp_min(zdiag_varmin)      ! min over the global domain 
553               CALL mpp_max(zdiag_varmax)      ! max over the global domain 
554               CALL mpp_sum(zdiag_var)         ! sum over the global domain 
555            END IF
[268]556
[433]557            zdiag_tot=zdiag_tot+zdiag_var
558            zdiag_var=zdiag_var/areatot
559
560            IF (lwp) WRITE(numout,*) 'MEAN NO ',jn,ctrcnm(jn),' =',zdiag_var,'MIN= '  &
[335]561               ,zdiag_varmin,'MAX= ',zdiag_varmax
[268]562
563         END DO
564
[433]565         zdiag_tot=zdiag_tot
566         zder=((zdiag_tot-trai)/trai)*100._wp
567         IF (lwp) WRITE(numout,*) 'Integral of all tracers over the full domain  =',zdiag_tot 
568         IF (lwp) WRITE(numout,*) 'Drift of the sum of all tracers =',zder, '%' 
569
[335]570         DO jn=1,jptra
[268]571            clname='TRB'//ctrcnm(jn)
572            CALL restput(nutwrs,clname,jpi,jpj,jpk,0,trb(:,:,:,jn))
[335]573         END DO
[268]574
[335]575#if defined key_trc_lobster1
576         clname='SEDB'//ctrcnm(jpdet)
577         clname1='SEDN'//ctrcnm(jpdet)
578         CALL restput(nutwrs,clname,jpi,jpj,1,0,sedpocb(:,:))
579         CALL restput(nutwrs,clname1,jpi,jpj,1,0,sedpocn(:,:))
[268]580#elif defined key_trc_pisces
[335]581         clname='SED'//ctrcnm(jppoc)
582         clname1='SED'//ctrcnm(jpcal)
583         clname2='SED'//ctrcnm(jpsil)
584         CALL restput(nutwrs,clname1,jpi,jpj,1,0,sedcal(:,:))
585         CALL restput(nutwrs,clname2,jpi,jpj,1,0,sedsil(:,:))
586         CALL restput(nutwrs,clname,jpi,jpj,1,0,sedpoc(:,:))
[268]587
[335]588         clname='Silicalim'
589         CALL restput(nutwrs,clname,jpi,jpj,1,0,xksi(:,:))
590#elif defined key_cfc
591         clname='qint'
592         CALL restput(nutwrs,clname,jpi,jpj,jptra,0,qint(:,:,:))
593         clname1='qtr'
594         CALL restput(nutwrs,clname1,jpi,jpj,jptra,0,qtr(:,:,:))
[268]595#endif
596
597
[335]598         CALL restclo(nutwrs)
599
[268]600      ENDIF
601
[335]602   END SUBROUTINE trc_wri
[268]603
[335]604#endif
605
[268]606#else
[335]607   !!======================================================================
608   !!  Empty module : No passive tracer
609   !!======================================================================
610CONTAINS
[268]611
[335]612   SUBROUTINE trc_rst
613      !! no passive tracers
614   END SUBROUTINE trc_rst
[268]615
[335]616   SUBROUTINE trc_wri(kt)
617      !! no passive tracers
618      INTEGER, INTENT ( in ) :: kt
[268]619      WRITE(*,*) 'trc_wri: You should not have seen this print! error?', kt
[335]620   END SUBROUTINE trc_wri
621   
[268]622#endif
[335]623   
624END MODULE trcrst
Note: See TracBrowser for help on using the repository browser.