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 @ 1287

Last change on this file since 1287 was 1287, checked in by cetlod, 15 years ago

Initialization of PH in a better way in PISCEs model, see ticket:316

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 20.5 KB
Line 
1MODULE trcrst
2   !!======================================================================
3   !!                       ***  MODULE trcrst  ***
4   !! TOP :   create, write, read the restart files for passive tracers
5   !!======================================================================
6   !! History :   1.0  !  2007-02 (C. Ethe) adaptation from the ocean
7   !!----------------------------------------------------------------------
8#if defined key_top
9   !!----------------------------------------------------------------------
10   !!   'key_top'                                                TOP models
11   !!----------------------------------------------------------------------
12   !!   trc_rst_opn    : open  restart file
13   !!   trc_rst_read   : read  restart file
14   !!   trc_rst_wri    : write restart file
15   !!----------------------------------------------------------------------
16   USE oce_trc
17   USE trc
18   USE sms_lobster         ! LOBSTER variables
19   USE sms_pisces          ! PISCES variables
20   USE trcsms_cfc          ! CFC variables
21   USE trcsms_c14b         ! C14 variables
22   USE trcsms_my_trc       ! MY_TRC variables
23   USE trctrp_lec   
24   USE lib_mpp
25   USE iom
26   USE daymod
27   
28   IMPLICIT NONE
29   PRIVATE
30   
31   PUBLIC   trc_rst_opn       ! called by ???
32   PUBLIC   trc_rst_read      ! called by ???
33   PUBLIC   trc_rst_wri       ! called by ???
34   
35   INTEGER, PUBLIC ::   numrtr, numrtw   !: logical unit for trc restart (read and write)
36
37
38   !! * Substitutions
39#  include "top_substitute.h90"
40   !!----------------------------------------------------------------------
41   !! NEMO/TOP 1.0 , LOCEAN-IPSL (2005)
42   !! $Id$
43   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt)
44   !!----------------------------------------------------------------------
45   
46CONTAINS
47   
48   SUBROUTINE trc_rst_opn( kt )
49      !!----------------------------------------------------------------------
50      !!                    ***  trc_rst_opn  ***
51      !!
52      !! ** purpose  :   output of sea-trc variable in a netcdf file
53      !!----------------------------------------------------------------------
54      INTEGER, INTENT(in) ::   kt       ! number of iteration
55      !
56      CHARACTER(LEN=20)   ::   clkt     ! ocean time-step define as a character
57      CHARACTER(LEN=50)   ::   clname   ! trc output restart file name
58      !!----------------------------------------------------------------------
59      !
60      IF( kt == nit000 ) lrst_trc = .FALSE. 
61# if defined key_off_tra
62      IF( MOD( kt - 1, nstock ) == 0 ) THEN
63         ! we use kt - 1 and not kt - nit000 to keep the same periodicity from the beginning of the experiment
64         nitrst = kt + nstock - 1                  ! define the next value of nitrst for restart writing
65         IF( nitrst > nitend )   nitrst = nitend   ! make sure we write a restart at the end of the run
66      ENDIF
67#endif
68     
69      IF( kt == nitrst - ndttrc .OR. nitend - nit000 + 1 < 2 * ndttrc ) THEN
70         ! beware if model runs less than 2*ndttrc time step
71         ! beware of the format used to write kt (default is i8.8, that should be large enough)
72         IF( nitrst > 1.0e9 ) THEN   ;   WRITE(clkt,*       ) nitrst
73         ELSE                        ;   WRITE(clkt,'(i8.8)') nitrst
74         ENDIF
75         ! create the file
76         IF(lwp) WRITE(numout,*)
77         clname = TRIM(cexper)//"_"//TRIM(ADJUSTL(clkt))//"_"//TRIM(cn_trcrst_out)
78         IF(lwp) WRITE(numout,*) '             open trc restart.output NetCDF file: '//clname
79         CALL iom_open( clname, numrtw, ldwrt = .TRUE., kiolib = jprstlib )
80         lrst_trc = .TRUE.
81      ENDIF
82      !
83   END SUBROUTINE trc_rst_opn
84
85
86   SUBROUTINE trc_rst_read 
87      !!----------------------------------------------------------------------
88      !!                    ***  trc_rst_opn  ***
89      !!
90      !! ** purpose  :   read passive tracer fields in restart files
91      !!----------------------------------------------------------------------
92      INTEGER  ::  jn 
93      INTEGER  ::  iarak0
94      REAL(wp) ::  zarak0
95#if defined key_pisces 
96      INTEGER  ::  ji, jj, jk
97      REAL(wp) ::  zcaralk, zbicarb, zco3
98      REAL(wp) ::  ztmas, ztmas1
99#endif
100
101      !!----------------------------------------------------------------------
102
103      IF(lwp) WRITE(numout,*)
104      IF(lwp) WRITE(numout,*) 'trc_rst_read : read the TOP restart file'
105      IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~'
106
107      CALL iom_open( cn_trcrst_in, numrtr, kiolib = jprstlib )
108
109      ! Time domain : restart
110      ! ---------------------
111      CALL trc_rst_cal( nittrc000, 'READ' )   ! calendar
112
113      IF( ln_trcadv_cen2 .OR. ln_trcadv_tvd ) THEN   ;   iarak0 = 1
114      ELSE                                           ;   iarak0 = 0
115      ENDIF
116      CALL iom_get( numrtr, 'arak0', zarak0 )
117
118      IF( iarak0 /= NINT( zarak0 ) )   &                           ! Control of the scheme
119         & CALL ctl_stop( ' ===>>>> : problem with advection scheme', &
120         & ' it must be the same type for both restart and previous run', &
121         & ' centered or euler '  )
122      IF(lwp) WRITE(numout,*)
123
124      IF(lwp) WRITE(numout,*) '    arakawa option      : ', NINT( zarak0 )
125
126
127      ! READ prognostic variables and computes diagnostic variable
128      DO jn = 1, jptra
129         CALL iom_get( numrtr, jpdom_autoglo, 'TRN'//ctrcnm(jn), trn(:,:,:,jn) ) 
130      END DO
131
132      DO jn = 1, jptra
133         CALL iom_get( numrtr, jpdom_autoglo, 'TRB'//ctrcnm(jn), trb(:,:,:,jn) ) 
134      END DO
135
136#if defined key_lobster
137      CALL iom_get( numrtr, jpdom_autoglo, 'SEDB'//ctrcnm(jpdet), sedpocb(:,:) ) 
138      CALL iom_get( numrtr, jpdom_autoglo, 'SEDN'//ctrcnm(jpdet), sedpocn(:,:) ) 
139#endif
140#if defined key_pisces
141      !
142      IF( ln_pisdmp ) CALL pis_dmp_ini  ! relaxation of some tracers
143      !
144      IF( iom_varid( numrtr, 'PH', ldstop = .FALSE. ) > 0 ) THEN
145         CALL iom_get( numrtr, jpdom_autoglo, 'PH' , hi(:,:,:)  )
146      ELSE
147         ! Set PH from  total alkalinity, borat (???), akb3 (???) and ak23 (???)
148         ! --------------------------------------------------------
149         DO jk = 1, jpk
150            DO jj = 1, jpj
151               DO ji = 1, jpi
152                  ztmas   = tmask(ji,jj,jk)
153                  ztmas1  = 1. - tmask(ji,jj,jk)
154                  zcaralk = trn(ji,jj,jk,jptal) - borat(ji,jj,jk) / (  1. + 1.E-8 / ( rtrn + akb3(ji,jj,jk) )  )
155                  zco3    = ( zcaralk - trn(ji,jj,jk,jpdic) ) * ztmas + 0.5e-3 * ztmas1
156                  zbicarb = ( 2. * trn(ji,jj,jk,jpdic) - zcaralk )
157!!                  write(numout,*) 'plante :',ji,jj,jk,ztmas,ztmas1,ak23(ji,jj,jk),zbicarb ,zco3
158                  hi(ji,jj,jk) = ( ak23(ji,jj,jk) * zbicarb / zco3 ) * ztmas + 1.e-9 * ztmas1
159               END DO
160            END DO
161         END DO
162      ENDIF
163      CALL iom_get( numrtr, jpdom_autoglo, 'Silicalim', xksi(:,:) ) 
164      IF( iom_varid( numrtr, 'Silicamax', ldstop = .FALSE. ) > 0 ) THEN
165         CALL iom_get( numrtr, jpdom_autoglo, 'Silicamax' , xksimax(:,:)  )
166      ELSE
167         xksimax(:,:) = xksi(:,:)
168      ENDIF
169#endif
170#if defined key_cfc
171      DO jn = jp_cfc0, jp_cfc1
172         CALL iom_get( numrtr, jpdom_autoglo, 'qint_'//ctrcnm(jn), qint_cfc(:,:,jn) ) 
173      END DO
174#endif
175#if defined key_c14b
176      CALL iom_get( numrtr, jpdom_autoglo, 'qint_'//ctrcnm(jn) , qint_c14(:,:) ) 
177#endif
178#if defined key_my_trc
179#endif
180     
181      CALL iom_close( numrtr )
182      !
183   END SUBROUTINE trc_rst_read
184
185
186   SUBROUTINE trc_rst_wri( kt )
187      !!----------------------------------------------------------------------
188      !!                    ***  trc_rst_wri  ***
189      !!
190      !! ** purpose  :   write passive tracer fields in restart files
191      !!----------------------------------------------------------------------
192      INTEGER, INTENT( in ) ::   kt    ! ocean time-step index
193      !!
194      INTEGER  :: jn
195      REAL(wp) :: zarak0
196      !!----------------------------------------------------------------------
197
198
199      CALL trc_rst_cal( kt, 'WRITE' )   ! calendar
200
201      IF( ln_trcadv_cen2 .OR. ln_trcadv_tvd ) THEN   ;   zarak0 = 1.
202      ELSE                                           ;   zarak0 = 0.
203      ENDIF
204      CALL iom_rstput( kt, nitrst, numrtw, 'arak0', zarak0 )
205
206      ! prognostic variables
207      ! --------------------
208      DO jn = 1, jptra
209         CALL iom_rstput( kt, nitrst, numrtw, 'TRN'//ctrcnm(jn), trn(:,:,:,jn) )
210      END DO
211
212      DO jn = 1, jptra
213         CALL iom_rstput( kt, nitrst, numrtw, 'TRB'//ctrcnm(jn), trb(:,:,:,jn) )
214      END DO
215
216#if defined key_lobster
217         CALL iom_rstput( kt, nitrst, numrtw, 'SEDB'//ctrcnm(jpdet), sedpocb(:,:) )
218         CALL iom_rstput( kt, nitrst, numrtw, 'SEDN'//ctrcnm(jpdet), sedpocn(:,:) )
219#endif
220#if defined key_pisces 
221         CALL iom_rstput( kt, nitrst, numrtw, 'PH', hi(:,:,:) )
222         CALL iom_rstput( kt, nitrst, numrtw, 'Silicalim', xksi(:,:) )
223         CALL iom_rstput( kt, nitrst, numrtw, 'Silicamax', xksimax(:,:) )
224#endif
225#if defined key_cfc
226         DO jn = jp_cfc0, jp_cfc1
227            CALL iom_rstput( kt, nitrst, numrtw, 'qint_'//ctrcnm(jn), qint_cfc(:,:,jn) )
228         END DO
229#endif
230#if defined key_c14b
231         CALL iom_rstput( kt, nitrst, numrtw, 'qint_'//ctrcnm(jn), qint_c14(:,:) )
232#endif
233#if defined key_my_trc
234#endif
235     
236      IF( kt == nitrst ) THEN
237          CALL trc_rst_stat            ! statistics
238          CALL iom_close( numrtw )     ! close the restart file (only at last time step)
239#if ! defined key_trdmld_trc
240          lrst_trc = .FALSE.
241#endif
242      ENDIF
243      !
244   END SUBROUTINE trc_rst_wri
245
246   SUBROUTINE trc_rst_cal( kt, cdrw )
247      !!---------------------------------------------------------------------
248      !!                   ***  ROUTINE trc_rst_cal  ***
249      !!
250      !!  ** Purpose : Read or write calendar in restart file:
251      !!
252      !!  WRITE(READ) mode:
253      !!       kt        : number of time step since the begining of the experiment at the
254      !!                   end of the current(previous) run
255      !!       adatrj(0) : number of elapsed days since the begining of the experiment at the
256      !!                   end of the current(previous) run (REAL -> keep fractions of day)
257      !!       ndastp    : date at the end of the current(previous) run (coded as yyyymmdd integer)
258      !!
259      !!   According to namelist parameter nrstdt,
260      !!       nrsttr = 0  no control on the date (nittrc000 is  arbitrary).
261      !!       nrsttr = 1  we verify that nit000 is equal to the last
262      !!                   time step of previous run + 1.
263      !!       In both those options, the  exact duration of the experiment
264      !!       since the beginning (cumulated duration of all previous restart runs)
265      !!       is not stored in the restart and is assumed to be (nit000-1)*rdt.
266      !!       This is valid is the time step has remained constant.
267      !!
268      !!       nrsttr = 2  the duration of the experiment in days (adatrj)
269      !!                    has been stored in the restart file.
270      !!----------------------------------------------------------------------
271      INTEGER         , INTENT(in) ::   kt         ! ocean time-step
272      CHARACTER(len=*), INTENT(in) ::   cdrw       ! "READ"/"WRITE" flag
273      !
274      REAL(wp) ::  zkt
275#if defined key_off_tra
276      REAL(wp) ::  zndastp
277#endif
278
279      ! Time domain : restart
280      ! ---------------------
281
282      IF( TRIM(cdrw) == 'READ' ) THEN
283         CALL iom_get ( numrtr, 'kt', zkt )   ! last time-step of previous run
284         IF(lwp) THEN
285            WRITE(numout,*) ' *** Info read in restart : '
286            WRITE(numout,*) '   previous time-step                               : ', NINT( zkt )
287            WRITE(numout,*) ' *** restart option'
288            SELECT CASE ( nrsttr )
289            CASE ( 0 )   ;   WRITE(numout,*) ' nrsttr = 0 : no control of nittrc000'
290            CASE ( 1 )   ;   WRITE(numout,*) ' nrsttr = 1 : no control the date at nit000 (use ndate0 read in the namelist)'
291            CASE ( 2 )   ;   WRITE(numout,*) ' nrsttr = 2 : calendar parameters read in restart'
292            END SELECT
293            WRITE(numout,*)
294         ENDIF
295         ! Control of date
296         IF( nittrc000  - NINT( zkt ) /= 1 .AND.  nrsttr /= 0 )                                  &
297            &   CALL ctl_stop( ' ===>>>> : problem with nit000 for the restart',                 &
298            &                  ' verify the restart file or rerun with nrsttr = 0 (namelist)' )
299#if defined key_off_tra
300         ! define ndastp and adatrj
301         IF ( nrsttr == 2 ) THEN
302            CALL iom_get( numrtr, 'ndastp', zndastp ) 
303            ndastp = NINT( zndastp )
304            CALL iom_get( numrtr, 'adatrj', adatrj  )
305         ELSE
306            ndastp = ndate0 - 1     ! ndate0 read in the namelist in dom_nam
307            adatrj = ( REAL( nittrc000-1, wp ) * rdttra(1) ) / rday
308            ! note this is wrong if time step has changed during run
309         ENDIF
310         !
311         IF(lwp) THEN
312           WRITE(numout,*) ' *** Info used values : '
313           WRITE(numout,*) '   date ndastp                                      : ', ndastp
314           WRITE(numout,*) '   number of elapsed days since the begining of run : ', adatrj
315           WRITE(numout,*)
316         ENDIF
317#endif
318
319      ELSEIF( TRIM(cdrw) == 'WRITE' ) THEN
320         !
321         IF(  kt == nitrst ) THEN
322            IF(lwp) WRITE(numout,*)
323            IF(lwp) WRITE(numout,*) 'trc_wri : write the TOP restart file (NetCDF) at it= ', kt, ' date= ', ndastp
324            IF(lwp) WRITE(numout,*) '~~~~~~~'
325         ENDIF
326         ! calendar control
327         CALL iom_rstput( kt, nitrst, numrtw, 'kt'     , REAL( kt    , wp) )   ! time-step
328         CALL iom_rstput( kt, nitrst, numrtw, 'ndastp' , REAL( ndastp, wp) )   ! date
329         CALL iom_rstput( kt, nitrst, numrtw, 'adatrj' , adatrj            )   ! number of elapsed days since
330         !                                                                     ! the begining of the run [s]
331      ENDIF
332
333   END SUBROUTINE trc_rst_cal
334
335# if defined key_pisces 
336
337   SUBROUTINE pis_dmp_ini 
338      !!----------------------------------------------------------------------
339      !!                    ***  pis_dmp_ini  ***
340      !!
341      !! ** purpose  : Relaxation of some tracers
342      !!----------------------------------------------------------------------
343      INTEGER  :: ji, jj, jk 
344      REAL(wp) ::  &
345         alkmean = 2426. ,  & ! mean value of alkalinity ( Glodap ; for Goyet 2391. )
346         po4mean = 2.165 ,  & ! mean value of phosphates
347         no3mean = 30.90 ,  & ! mean value of nitrate
348         siomean = 91.51      ! mean value of silicate
349     
350      REAL(wp) ::   zvol, ztrasum
351
352
353      IF(lwp)  WRITE(numout,*)
354
355      IF( cp_cfg == "orca" .AND. .NOT. lk_trc_c1d ) THEN      ! ORCA condiguration (not 1D) !
356         !                                                    ! --------------------------- !
357         ! set total alkalinity, phosphate, NO3 & silicate
358
359         ! total alkalinity
360         ztrasum = 0.e0             
361         DO jk = 1, jpk
362            DO jj = 1, jpj
363               DO ji = 1, jpi
364                  zvol = cvol(ji,jj,jk)
365#  if defined key_off_degrad
366                  zvol = zvol * facvol(ji,jj,jk)
367#  endif
368                  ztrasum = ztrasum + trn(ji,jj,jk,jptal) * zvol
369               END DO
370            END DO
371         END DO
372         IF( lk_mpp )   CALL mpp_sum( ztrasum )     ! sum over the global domain 
373         
374         ztrasum = ztrasum / areatot * 1.e6
375         IF(lwp) WRITE(numout,*) '       TALK mean : ', ztrasum
376         trn(:,:,:,jptal) = trn(:,:,:,jptal) * alkmean / ztrasum
377           
378         ! phosphate
379         ztrasum = 0.e0
380         DO jk = 1, jpk
381            DO jj = 1, jpj
382               DO ji = 1, jpi
383                  zvol = cvol(ji,jj,jk)
384#  if defined key_off_degrad
385                  zvol = zvol * facvol(ji,jj,jk)
386#  endif
387                  ztrasum = ztrasum + trn(ji,jj,jk,jppo4) * zvol
388               END DO
389            END DO
390         END DO
391         IF( lk_mpp )   CALL mpp_sum( ztrasum )     ! sum over the global domain 
392         
393         ztrasum = ztrasum / areatot * 1.e6 / 122.
394         IF(lwp) WRITE(numout,*) '       PO4  mean : ', ztrasum
395         trn(:,:,:,jppo4) = trn(:,:,:,jppo4) * po4mean / ztrasum
396       
397         ! Nitrates         
398         ztrasum = 0.e0
399         DO jk = 1, jpk
400            DO jj = 1, jpj
401               DO ji = 1, jpi
402                  zvol = cvol(ji,jj,jk)
403#  if defined key_off_degrad
404                  zvol = zvol * facvol(ji,jj,jk)
405#  endif
406                  ztrasum = ztrasum + trn(ji,jj,jk,jpno3) * zvol
407               END DO
408            END DO
409         END DO
410         IF( lk_mpp )   CALL mpp_sum( ztrasum )     ! sum over the global domain 
411         
412         ztrasum = ztrasum / areatot * 1.e6 / 7.6
413         IF(lwp) WRITE(numout,*) '       NO3  mean : ', ztrasum
414         trn(:,:,:,jpno3) = trn(:,:,:,jpno3) * no3mean / ztrasum
415         
416         ! Silicate
417         ztrasum = 0.e0
418         DO jk = 1, jpk
419            DO jj = 1, jpj
420               DO ji = 1, jpi
421                  zvol = cvol(ji,jj,jk)
422#  if defined key_off_degrad
423                  zvol = zvol * facvol(ji,jj,jk)
424#  endif
425                  ztrasum = ztrasum + trn(ji,jj,jk,jpsil) * zvol
426               END DO
427            END DO
428         END DO
429         IF( lk_mpp )   CALL mpp_sum( ztrasum )     ! sum over the global domain 
430         ztrasum = ztrasum / areatot * 1.e6
431         IF(lwp) WRITE(numout,*) '       SiO3 mean : ', ztrasum
432         trn(:,:,:,jpsil) = MIN( 400.e-6,trn(:,:,:,jpsil) * siomean / ztrasum ) 
433         !
434      ENDIF
435
436!#if defined key_kriest
437!     !! Initialize number of particles from a standart restart file
438!     !! The name of big organic particles jpgoc has been only change
439!     !! and replace by jpnum but the values here are concentration
440!     trn(:,:,:,jppoc) = trn(:,:,:,jppoc) + trn(:,:,:,jpnum)
441!     trn(:,:,:,jpnum) = trn(:,:,:,jppoc) / ( 6. * xkr_massp )
442!#endif
443
444   END SUBROUTINE pis_dmp_ini
445
446#endif
447      !!----------------------------------------------------------------------
448
449   SUBROUTINE trc_rst_stat
450      !!----------------------------------------------------------------------
451      !!                    ***  trc_rst_stat  ***
452      !!
453      !! ** purpose  :   Compute tracers statistics
454      !!----------------------------------------------------------------------
455
456      INTEGER  :: ji, jj, jk, jn
457      REAL(wp) :: zdiag_var, zdiag_varmin, zdiag_varmax, zdiag_tot
458      REAL(wp) :: zder, zvol
459      !!----------------------------------------------------------------------
460
461
462      IF( lwp ) THEN
463         WRITE(numout,*) 
464         WRITE(numout,*) '           ----TRACER STAT----             '
465         WRITE(numout,*) 
466      ENDIF
467     
468      zdiag_tot = 0.e0
469      DO jn = 1, jptra
470         zdiag_var    = 0.e0
471         zdiag_varmin = 0.e0
472         zdiag_varmax = 0.e0
473         DO jk = 1, jpk
474            DO jj = 1, jpj
475               DO ji = 1, jpi
476                  zvol = cvol(ji,jj,jk)
477#  if defined key_off_degrad
478                  zvol = zvol * facvol(ji,jj,jk)
479#  endif
480                  zdiag_var = zdiag_var + trn(ji,jj,jk,jn) * zvol
481               END DO
482            END DO
483         END DO
484         
485         zdiag_varmin = MINVAL( trn(:,:,:,jn), mask= ((tmask*SPREAD(tmask_i,DIM=3,NCOPIES=jpk).NE.0.)) )
486         zdiag_varmax = MAXVAL( trn(:,:,:,jn), mask= ((tmask*SPREAD(tmask_i,DIM=3,NCOPIES=jpk).NE.0.)) )
487         IF( lk_mpp ) THEN
488            CALL mpp_min( zdiag_varmin )      ! min over the global domain
489            CALL mpp_max( zdiag_varmax )      ! max over the global domain
490            CALL mpp_sum( zdiag_var    )      ! sum over the global domain
491         END IF
492         zdiag_tot = zdiag_tot + zdiag_var
493         zdiag_var = zdiag_var / areatot
494         IF(lwp) WRITE(numout,*) '   MEAN NO ', jn, ctrcnm(jn), ' = ', zdiag_var,   &
495            &                    ' MIN = ', zdiag_varmin, ' MAX = ', zdiag_varmax
496      END DO
497     
498      zder = ( ( zdiag_tot - trai ) / ( trai + 1.e-12 )  ) * 100._wp
499      IF(lwp) WRITE(numout,*) '   Integral of all tracers over the full domain  = ', zdiag_tot
500      IF(lwp) WRITE(numout,*) '   Drift of the sum of all tracers =', zder, ' %'
501     
502   END SUBROUTINE trc_rst_stat
503
504#else
505   !!----------------------------------------------------------------------
506   !!  Dummy module :                                     No passive tracer
507   !!----------------------------------------------------------------------
508CONTAINS
509   SUBROUTINE trc_rst_read                      ! Empty routines
510   END SUBROUTINE trc_rst_read
511   SUBROUTINE trc_rst_wri( kt )
512      INTEGER, INTENT ( in ) :: kt
513      WRITE(*,*) 'trc_rst_wri: You should not have seen this print! error?', kt
514   END SUBROUTINE trc_rst_wri   
515#endif
516
517   !!======================================================================
518END MODULE trcrst
Note: See TracBrowser for help on using the repository browser.