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

Last change on this file since 376 was 340, checked in by opalod, 18 years ago

nemo_v1_update_028 : CT : add missing headers

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 8.3 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#if defined key_passivetrc
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
26#include "passivetrc_substitute.h90"
27
28CONTAINS
29
30   SUBROUTINE 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      !!  OPA.90   03/2005
63      !!---------------------------------------------------------------------
64
65      !! 0. initializations
66      !! ------------------
67
68      namelist/nattrc/nwritetrc,lrsttr,nrsttr, ctrcnm,ctrcnl,ctrcun,lutini     !general   
69
70      namelist/natnum/rsc,rtrn,ncortrc,ndttrc,crosster
71
72#if defined key_trc_diatrd
73      namelist/natrtd/luttrd,nwritetrd                      ! dynamical trends
74#endif
75
76#if defined key_trc_diaadd
77      namelist/natadd/ctrc3d,ctrc3l,ctrc2d,ctrc2l, ctrc3u, ctrc2u,     &
78         nwriteadd                             !additional diagnostics
79#endif
80
81      IF(lwp) THEN
82         WRITE(numout,*) ' '
83         WRITE(numout,*) ' ROUTINE trclec'
84         WRITE(numout,*) ' **************'
85         WRITE(numout,*) ' '
86         WRITE(numout,*) ' namelist for passive tracer'
87         WRITE(numout,*) ' ***************************'
88         WRITE(numout,*) ' '
89      ENDIF
90
91      numnat=80
92      REWIND (numnat)
93
94      clname='namelist.passivetrc'
95      OPEN( numnat, FILE= clname, FORM='formatted', STATUS = 'old')
96
97      !! 1., 2. & 3. initialization with namelist files
98      !! ----------------------------------------------
99      !! 1.0 namelist nattrc :
100
101      nwritetrc = 10
102      lrsttr=.FALSE.
103      nrsttr = 0
104
105      DO ji=1,jptra
106         WRITE (ctrcnm(ji),'("TR_",I1)') ji
107         WRITE (ctrcnl(ji),'("TRACER NUMBER ",I1)') ji
108         ctrcun(ji)='mmole/m3'
109         lutini(ji)=.FALSE. 
110      END DO
111
112
113      REWIND(numnat)
114      READ(numnat,nattrc)
115
116      IF(lwp) THEN
117         WRITE(numout,*) ' '
118         WRITE(numout,*) 'nattrc'
119         WRITE(numout,*) ' '
120         WRITE(numout,*)          &
121            ' frequency of outputs for passive tracers nwritetrc = '    &
122            ,nwritetrc 
123         WRITE(numout,*) ' restart LOGICAL for passive tr. lrsttr = ',   &
124            &         lrsttr
125         WRITE(numout,*) ' control of time step for p. tr. nrsttr = ',   & 
126            &         nrsttr
127         DO ji=1,jptra
128            WRITE(numout,*) ' tracer nb: ',ji,' name = ',ctrcnm(ji)       & 
129               &           ,ctrcnl(ji) 
130            WRITE(numout,*) ' in unit = ',ctrcun(ji)
131            WRITE(numout,*) ' initial value in FILE : ',lutini(ji) 
132            WRITE(numout,*) ' '
133         END DO
134         WRITE(numout,*) ' '
135      ENDIF
136
137#if defined key_trc_diatrd
138
139      !! 1.2 namelist nattrd : passive tracers dynamical trends
140
141      nwritetrd=10
142
143      !! default : no dynamical trend recording
144      !! --------------------------------------
145      DO ji=1,jptra
146         luttrd(ji) = .FALSE.
147      END DO
148
149      REWIND(numnat)
150      READ(numnat,natrtd)
151
152      IF(lwp) THEN
153         WRITE(numout,*) 'natrtd'
154         WRITE(numout,*) ' '
155         WRITE(numout,*)                        &
156            ' frequency of outputs for dynamical trends nwritetrd = '   &
157            ,nwritetrd
158         DO ji=1,jptra
159            WRITE(numout,*)                      &
160               ' keep dynamical trends for tracer number :',ji          &
161               ,luttrd(ji)   
162         END DO
163      ENDIF
164#endif
165
166      !!1.3 namelist natadd : passive tracers diagnostics
167      !!-------------------------------------------------
168
169#if defined key_trc_diaadd
170
171      nwriteadd = 10
172
173      !! default value for 3D output arrays : short and long name, units
174
175      DO ji=1,jpdia3d
176         WRITE (ctrc3d(ji),'("3D_",I1)') ji
177         WRITE (ctrc3l(ji),'("3D DIAGNOSTIC NUMBER ",I2)') ji
178         ctrc3u(ji)=' '
179      END DO
180
181
182      !! default value for 2D output arrays : short and long name, units
183      !! ---------------------------------------------------------------
184      DO ji=1,jpdia2d
185         WRITE (ctrc2d(ji),'("2D_",I1)') ji
186         WRITE (ctrc2l(ji),'("2D DIAGNOSTIC NUMBER ",I2)') ji
187         ctrc2u(ji)=' '
188      END DO
189
190      REWIND(numnat)
191      READ(numnat,natadd)
192
193      IF(lwp) THEN
194         WRITE(numout,*) ' natadd'
195         WRITE(numout,*) ' '
196         WRITE(numout,*)                          &
197            ' frequency of outputs for additional arrays nwriteadd = '   &
198            ,nwriteadd
199         DO ji=1,jpdia3d
200            WRITE(numout,*)                     &
201               'name of 3d output field number :',ji,' : ',ctrc3d(ji) 
202            WRITE(numout,*) ctrc3l(ji) 
203            WRITE(numout,*) ' in unit = ',ctrc3u(ji)
204         END DO
205         WRITE(numout,*) ' '
206         DO ji=1,jpdia2d
207            WRITE(numout,*)                    &
208               'name of 2d output field number :',ji,' : ',ctrc2d(ji) 
209            WRITE(numout,*) ctrc2l(ji) 
210            WRITE(numout,*) ' in unit = ',ctrc2u(ji)
211         END DO
212         WRITE(numout,*) ' '
213      ENDIF
214#endif
215
216      !! 1.1 namelist natnum :
217      !! ---------------------
218      rsc=1.
219      rtrn=1.e-15
220      ncortrc=1
221      ndttrc=4
222      crosster=.FALSE.
223
224      REWIND(numnat)
225      READ(numnat,natnum)
226
227!!Chris  computes the first time step of tracer model
228      nittrc000 = nit000 + ndttrc - 1
229
230      IF(lwp) THEN
231         WRITE(numout,*) ' '
232         WRITE(numout,*) 'natnum'
233         WRITE(numout,*) ' '
234         WRITE(numout,*) ' tuning coefficient              rsc     = ',    &
235            rsc
236         WRITE(numout,*) ' truncation value                rtrn    = ',    &
237            rtrn
238         WRITE(numout,*) ' number of corrective phase      ncortrc = ',    &
239            ncortrc
240         WRITE(numout,*) ' time step freq. for pass. trac. ndttrc  = ',    &
241            ndttrc
242         WRITE(numout,*) ' 1st time step for pass. trac. nittrc000 = ',    &
243            nittrc000
244         WRITE(numout,*) ' computes or not crossterms    crosster  = ',    &
245            crosster
246      ENDIF
247
248
249      !! namelist of transport
250      !! ---------------------
251      CALL trc_trp_lec
252
253      !! namelist of SMS
254      !! ---------------     
255      CALL trc_lsm
256
257   END SUBROUTINE trc_lec
258
259#else
260   !!======================================================================
261   !!  Empty module : No passive tracer
262   !!======================================================================
263CONTAINS
264
265   SUBROUTINE trc_lec
266
267   END SUBROUTINE trc_lec
268
269#endif
270
271END MODULE  trclec
Note: See TracBrowser for help on using the repository browser.