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

source: trunk/NEMO/TOP_SRC/trclec.F @ 247

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

CL : Add CVS Header and CeCILL licence information

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