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

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

update modules to take into account the mask land points in NetCDF outputs, see ticket:322

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