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

source: trunk/NEMO/TOP_SRC/trclec.F90 @ 331

Last change on this file since 331 was 274, checked in by opalod, 19 years ago

nemo_v1_update_005:RB: update headers for the TOP component.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 8.0 KB
Line 
1MODULE trclec
2   !!==========================================================================
3   !!
4   !!                       *** MODULE trclec ***
5   !! Read and print options for the passive tracer run (namelist)
6   !! O.Aumont and A.El Moussaoui 03/05 F90
7   !!=========================================================================
8   !!  TOP 1.0,  LOCEAN-IPSL (2005)
9   !! $Header$
10   !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt
11   !!----------------------------------------------------------------------
12
13      !! * Modules used
14      !! ==============
15      USE oce_trc
16      USE trc
17      USE trctrp_lec
18      USE trclsm
19
20     IMPLICIT NONE
21     PRIVATE 
22
23    !! * Accessibility
24    PUBLIC trc_lec
25
26CONTAINS
27
28#if defined key_passivetrc
29
30SUBROUTINE trc_lec
31!!---------------------------------------------------------------------
32!!                       ROUTINE trclec
33!!                     ******************
34!!  PURPOSE :
35!!  ---------
36!!     READ and PRINT options for the passive tracer run (namelist)
37!!
38!!   History:
39!!   --------
40!!      original  : 96-11 (M.A. Foujols, M. Levy) passive tracer
41!!      modification : 98-04 (M.A Foujols, L. Bopp) ahtrb0 for isopycnal
42!!                                                  diffusion
43!!      modification : 99-10(M.A. Foujols, M. Levy) separation of sms
44!!      additions : 00-05(A. Estublier) TVD Limiter Scheme : Tests
45!!                                      on ndttrc
46!!      additions : 00-06(A. Estublier) MUSCL Scheme : Tests
47!!                                      on ndttrc
48!!      additions : 00-07(A. Estublier) PPM Scheme : Tests on ndttrc
49!!      modification : 00-11 (M.A Foujols, E Kestenare) trcrat, ahtrc0 and aeivtr0
50!!      modification : 01-01 (E Kestenare) suppress ndttrc=1
51!!                                         for Arakawa and TVD schemes
52!!     O.Aumont and A.El Moussaoui 03/05 F90
53!!----------------------------------------------------------------------
54
55!! local declarations
56!! ==================
57
58      INTEGER ::  ji
59      CHARACTER (len=32) :: clname
60
61!!----------------------------------------------------------------------
62!! statement functions
63!! ===================
64
65#include "passivetrc_substitute.h90"
66
67!!
68!!---------------------------------------------------------------------
69!!  OPA.90   03/2005
70!!---------------------------------------------------------------------
71
72!! 0. initializations
73!! ------------------
74
75      namelist/nattrc/nwritetrc,lrsttr,nrsttr, ctrcnm,ctrcnl,ctrcun,lutini     !general   
76
77      namelist/natnum/rsc,rtrn,ncortrc,ndttrc,crosster
78
79#if defined key_trc_diatrd
80      namelist/natrtd/luttrd,nwritetrd                      ! dynamical trends
81#endif
82
83#if defined key_trc_diaadd
84      namelist/natadd/ctrc3d,ctrc3l,ctrc2d,ctrc2l, ctrc3u, ctrc2u,     &
85                      nwriteadd                             !additional diagnostics
86#endif
87
88      IF(lwp) THEN
89          WRITE(numout,*) ' '
90          WRITE(numout,*) ' ROUTINE trclec'
91          WRITE(numout,*) ' **************'
92          WRITE(numout,*) ' '
93          WRITE(numout,*) ' namelist for passive tracer'
94          WRITE(numout,*) ' ***************************'
95          WRITE(numout,*) ' '
96      ENDIF
97
98      numnat=80
99      REWIND (numnat)
100
101      clname='namelist.passivetrc'
102      OPEN( numnat, FILE= clname, FORM='formatted', STATUS = 'old')
103
104!! 1., 2. & 3. initialization with namelist files
105!! ----------------------------------------------
106!! 1.0 namelist nattrc :
107
108      nwritetrc = 10
109      lrsttr=.FALSE.
110      nrsttr = 0
111
112      DO ji=1,jptra
113        WRITE (ctrcnm(ji),'("TR_",I1)') ji
114        WRITE (ctrcnl(ji),'("TRACER NUMBER ",I1)') ji
115        ctrcun(ji)='mmole/m3'
116        lutini(ji)=.FALSE. 
117      END DO
118
119
120      REWIND(numnat)
121      READ(numnat,nattrc)
122
123      IF(lwp) THEN
124          WRITE(numout,*) ' '
125          WRITE(numout,*) 'nattrc'
126          WRITE(numout,*) ' '
127          WRITE(numout,*)          &
128              ' frequency of outputs for passive tracers nwritetrc = '    &
129              ,nwritetrc 
130          WRITE(numout,*) ' restart LOGICAL for passive tr. lrsttr = ',   &
131     &         lrsttr
132          WRITE(numout,*) ' control of time step for p. tr. nrsttr = ',   & 
133     &         nrsttr
134          DO ji=1,jptra
135            WRITE(numout,*) ' tracer nb: ',ji,' name = ',ctrcnm(ji)       & 
136     &           ,ctrcnl(ji) 
137            WRITE(numout,*) ' in unit = ',ctrcun(ji)
138            WRITE(numout,*) ' initial value in FILE : ',lutini(ji) 
139            WRITE(numout,*) ' '
140          END DO
141          WRITE(numout,*) ' '
142      ENDIF
143
144#if defined key_trc_diatrd
145
146!! 1.2 namelist nattrd : passive tracers dynamical trends
147
148      nwritetrd=10
149
150!! default : no dynamical trend recording
151!! --------------------------------------
152      DO ji=1,jptra
153        luttrd(ji) = .FALSE.
154      END DO
155
156      REWIND(numnat)
157      READ(numnat,natrtd)
158
159      IF(lwp) THEN
160          WRITE(numout,*) 'natrtd'
161          WRITE(numout,*) ' '
162          WRITE(numout,*)                        &
163             ' frequency of outputs for dynamical trends nwritetrd = '   &
164             ,nwritetrd
165          DO ji=1,jptra
166            WRITE(numout,*)                      &
167               ' keep dynamical trends for tracer number :',ji          &
168               ,luttrd(ji)   
169          END DO
170      ENDIF
171#endif
172
173!!1.3 namelist natadd : passive tracers diagnostics
174!!-------------------------------------------------
175
176#if defined key_trc_diaadd
177
178      nwriteadd = 10
179
180!! default value for 3D output arrays : short and long name, units
181
182      DO ji=1,jpdia3d
183        WRITE (ctrc3d(ji),'("3D_",I1)') ji
184        WRITE (ctrc3l(ji),'("3D DIAGNOSTIC NUMBER ",I2)') ji
185        ctrc3u(ji)=' '
186      END DO 
187
188
189!! default value for 2D output arrays : short and long name, units
190!! ---------------------------------------------------------------
191      DO ji=1,jpdia2d
192        WRITE (ctrc2d(ji),'("2D_",I1)') ji
193        WRITE (ctrc2l(ji),'("2D DIAGNOSTIC NUMBER ",I2)') ji
194        ctrc2u(ji)=' '
195      END DO
196
197      REWIND(numnat)
198      READ(numnat,natadd)
199
200      IF(lwp) THEN
201          WRITE(numout,*) ' natadd'
202          WRITE(numout,*) ' '
203          WRITE(numout,*)                          &
204             ' frequency of outputs for additional arrays nwriteadd = '   &
205             ,nwriteadd
206          DO ji=1,jpdia3d
207            WRITE(numout,*)                     &
208               'name of 3d output field number :',ji,' : ',ctrc3d(ji) 
209            WRITE(numout,*) ctrc3l(ji) 
210            WRITE(numout,*) ' in unit = ',ctrc3u(ji)
211          END DO
212          WRITE(numout,*) ' '
213          DO ji=1,jpdia2d
214            WRITE(numout,*)                    &
215               'name of 2d output field number :',ji,' : ',ctrc2d(ji) 
216            WRITE(numout,*) ctrc2l(ji) 
217            WRITE(numout,*) ' in unit = ',ctrc2u(ji)
218          END DO
219          WRITE(numout,*) ' '
220      ENDIF
221#endif
222
223!! 1.1 namelist natnum :
224!! ---------------------
225      rsc=1.
226      rtrn=1.e-15
227      ncortrc=1
228      ndttrc=4
229      crosster=.FALSE.
230
231      REWIND(numnat)
232      READ(numnat,natnum)
233
234!!Chris  computes the first time step of tracer model
235      nittrc000 = nit000 + ndttrc - 1
236
237      IF(lwp) THEN
238          WRITE(numout,*) ' '
239          WRITE(numout,*) 'natnum'
240          WRITE(numout,*) ' '
241          WRITE(numout,*) ' tuning coefficient              rsc     = ',    &
242             rsc
243          WRITE(numout,*) ' truncation value                rtrn    = ',    &
244             rtrn
245          WRITE(numout,*) ' number of corrective phase      ncortrc = ',    &
246             ncortrc
247          WRITE(numout,*) ' time step freq. for pass. trac. ndttrc  = ',    &
248             ndttrc
249          WRITE(numout,*) ' 1st time step for pass. trac. nittrc000 = ',    &
250             nittrc000
251          WRITE(numout,*) ' computes or not crossterms    crosster  = ',    &
252             crosster
253      ENDIF
254
255
256!! namelist of transport
257!! ---------------------
258      CALL trc_trp_lec
259
260!! namelist of SMS
261!! ---------------     
262      CALL trc_lsm
263
264END SUBROUTINE trc_lec 
265
266#else
267
268SUBROUTINE trc_lec
269  !!==============
270     !! no passive tracers
271  !!==============
272END SUBROUTINE trc_lec
273
274#endif
275
276END MODULE  trclec
Note: See TracBrowser for help on using the repository browser.