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

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

CL + CE : NEMO TRC_SRC start

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 7.8 KB
Line 
1CCC $Header$
2CDIR$ LIST
3      SUBROUTINE trclec
4CCC---------------------------------------------------------------------
5CCC
6CCC                       ROUTINE trclec
7CCC                     ******************
8CCC
9CCC  PURPOSE :
10CCC  ---------
11CCC     READ and PRINT options for the passive tracer run (namelist)
12CCC
13CC   METHOD :                   : no
14CC   -------
15CC
16CC   INPUT :
17CC   -----
18CC      the namelist FILE ( UNIT numnat ) :
19CC            &nattrc           : general
20CC            &natnum           : numerical schemes
21CC            &natrtd           : dynamical trends 
22CC            &natadd           : additional arrays for diagnostics
23CC
24CC   OUTPUT :
25CC   ------
26CC      COMMON                  : (#ifdef "key_passivetrc")
27CC            /cittrc/          : tracer names
28CC            /cot3ad/          : options for smolarkiewicz scheme
29CC            /cit3ad/          : other options for smolarkiewicz scheme
30CC            /cottrd/          : passive tracer trends (#ifef
31CC                                 "key_trc_diatrd")
32CC
33CC   WORKSPACE :                : no
34CC   ---------
35CC
36CC   MODIFICATIONS:
37CC   --------------
38CC      original  : 96-11 (M.A. Foujols, M. Levy) passive tracer
39CC      modification : 98-04 (M.A Foujols, L. Bopp) ahtrb0 for isopycnal
40CC                                                  diffusion
41CC      modification : 99-10(M.A. Foujols, M. Levy) separation of sms
42CC      additions : 00-05(A. Estublier) TVD Limiter Scheme : Tests 
43CC                                      on ndttrc
44CC      additions : 00-06(A. Estublier) MUSCL Scheme : Tests 
45CC                                      on ndttrc
46CC      additions : 00-07(A. Estublier) PPM Scheme : Tests on ndttrc
47CC      modification : 00-11 (M.A Foujols, E Kestenare) trcrat, ahtrc0 and aeivtr0
48CC      modification : 01-01 (E Kestenare) suppress ndttrc=1 
49CC                                         for Arakawa and TVD schemes
50CC----------------------------------------------------------------------
51CC parameters and commons
52CC ======================
53CDIR$ NOLIST
54      USE oce_trc
55      USE trc
56      USE trctrp_lec
57      IMPLICIT NONE
58CDIR$ LIST
59CC----------------------------------------------------------------------
60CC local declarations
61CC ==================
62
63#if defined key_passivetrc
64      INTEGER ji
65      CHARACTER*32 clname
66CC----------------------------------------------------------------------
67CC statement functions
68CC ===================
69CDIR$ NOLIST
70#include "passivetrc_substitute.h90"
71CDIR$ LIST
72CC
73CCC---------------------------------------------------------------------
74CCC  OPA8, LODYC (15/11/96)
75CCC---------------------------------------------------------------------
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.