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

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

nemo_v1_update_023 : CE + RB + CT : new evolution of modules

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