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

Last change on this file since 935 was 719, checked in by ctlod, 17 years ago

get back to the nemo_v2_3 version for trunk

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 8.7 KB
RevLine 
[268]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   !!=========================================================================
[340]8   !!  TOP 1.0,  LOCEAN-IPSL (2005)
[719]9   !! $Header$
[340]10   !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt
[274]11   !!----------------------------------------------------------------------
[335]12#if defined key_passivetrc
13   !! * Modules used
14   !! ==============
15   USE oce_trc
16   USE trc
17   USE trctrp_lec
18   USE trclsm
[268]19
[335]20   IMPLICIT NONE
21   PRIVATE 
[268]22
[335]23   !! * Accessibility
24   PUBLIC trc_lec
[268]25
[335]26#include "passivetrc_substitute.h90"
[268]27
28CONTAINS
29
[335]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      !!----------------------------------------------------------------------
[268]54
[335]55      !! local declarations
56      !! ==================
[268]57
58      INTEGER ::  ji
59      CHARACTER (len=32) :: clname
60
[335]61      !!---------------------------------------------------------------------
62      !!  OPA.90   03/2005
63      !!---------------------------------------------------------------------
[268]64
[335]65      !! 0. initializations
66      !! ------------------
[268]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,     &
[335]78         nwriteadd                             !additional diagnostics
[268]79#endif
80
81      IF(lwp) THEN
[335]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,*) ' '
[268]89      ENDIF
90
91      clname='namelist.passivetrc'
[625]92      CALL ctlopn( numnat, clname, 'OLD', 'FORMATTED', 'SEQUENTIAL',   &
93         &         1, numout, .FALSE., 1 )
[268]94
[625]95
[335]96      !! 1., 2. & 3. initialization with namelist files
97      !! ----------------------------------------------
98      !! 1.0 namelist nattrc :
[268]99
100      nwritetrc = 10
101      lrsttr=.FALSE.
102      nrsttr = 0
103
104      DO ji=1,jptra
[335]105         WRITE (ctrcnm(ji),'("TR_",I1)') ji
106         WRITE (ctrcnl(ji),'("TRACER NUMBER ",I1)') ji
107         ctrcun(ji)='mmole/m3'
108         lutini(ji)=.FALSE. 
[268]109      END DO
110
111
112      REWIND(numnat)
113      READ(numnat,nattrc)
114
115      IF(lwp) THEN
[335]116         WRITE(numout,*) ' '
117         WRITE(numout,*) 'nattrc'
118         WRITE(numout,*) ' '
119         WRITE(numout,*)          &
120            ' frequency of outputs for passive tracers nwritetrc = '    &
121            ,nwritetrc 
122         WRITE(numout,*) ' restart LOGICAL for passive tr. lrsttr = ',   &
123            &         lrsttr
124         WRITE(numout,*) ' control of time step for p. tr. nrsttr = ',   & 
125            &         nrsttr
126         DO ji=1,jptra
[268]127            WRITE(numout,*) ' tracer nb: ',ji,' name = ',ctrcnm(ji)       & 
[335]128               &           ,ctrcnl(ji) 
[268]129            WRITE(numout,*) ' in unit = ',ctrcun(ji)
130            WRITE(numout,*) ' initial value in FILE : ',lutini(ji) 
131            WRITE(numout,*) ' '
[335]132         END DO
133         WRITE(numout,*) ' '
[268]134      ENDIF
135
136#if defined key_trc_diatrd
137
[335]138      !! 1.2 namelist nattrd : passive tracers dynamical trends
[268]139
140      nwritetrd=10
141
[335]142      !! default : no dynamical trend recording
143      !! --------------------------------------
[268]144      DO ji=1,jptra
[335]145         luttrd(ji) = .FALSE.
146      END DO
[268]147
148      REWIND(numnat)
149      READ(numnat,natrtd)
150
[433]151      nkeep=0
152      ikeep(:)=0
153      DO ji=1,jptra
154         IF (luttrd(ji)) THEN
155             nkeep=nkeep+1
156             ikeep(ji)=nkeep
157         END IF
158      END DO
159      IF (nkeep.GT.0) THEN 
160        IF (.NOT. ALLOCATED(trtrd)) ALLOCATE(trtrd(jpi,jpj,jpk,nkeep,jpdiatrc)) 
161        trtrd(:,:,:,:,:)=0.0
162      ENDIF
[268]163      IF(lwp) THEN
[335]164         WRITE(numout,*) 'natrtd'
165         WRITE(numout,*) ' '
166         WRITE(numout,*)                        &
167            ' frequency of outputs for dynamical trends nwritetrd = '   &
168            ,nwritetrd
169         DO ji=1,jptra
[268]170            WRITE(numout,*)                      &
171               ' keep dynamical trends for tracer number :',ji          &
[433]172               ,luttrd(ji), ikeep(ji)
[335]173         END DO
[433]174         WRITE(numout,*) 'total = ',nkeep,' tracers dyn trends saved'
175         WRITE(numout,*) 'size of trtrd = ',jpi*jpj*jpk*nkeep*jpdiatrc
[268]176      ENDIF
177#endif
178
[335]179      !!1.3 namelist natadd : passive tracers diagnostics
180      !!-------------------------------------------------
[268]181
182#if defined key_trc_diaadd
183
184      nwriteadd = 10
185
[335]186      !! default value for 3D output arrays : short and long name, units
[268]187
188      DO ji=1,jpdia3d
[335]189         WRITE (ctrc3d(ji),'("3D_",I1)') ji
190         WRITE (ctrc3l(ji),'("3D DIAGNOSTIC NUMBER ",I2)') ji
191         ctrc3u(ji)=' '
192      END DO
[268]193
194
[335]195      !! default value for 2D output arrays : short and long name, units
196      !! ---------------------------------------------------------------
[268]197      DO ji=1,jpdia2d
[335]198         WRITE (ctrc2d(ji),'("2D_",I1)') ji
199         WRITE (ctrc2l(ji),'("2D DIAGNOSTIC NUMBER ",I2)') ji
200         ctrc2u(ji)=' '
201      END DO
[268]202
203      REWIND(numnat)
204      READ(numnat,natadd)
205
206      IF(lwp) THEN
[335]207         WRITE(numout,*) ' natadd'
208         WRITE(numout,*) ' '
209         WRITE(numout,*)                          &
210            ' frequency of outputs for additional arrays nwriteadd = '   &
211            ,nwriteadd
212         DO ji=1,jpdia3d
[268]213            WRITE(numout,*)                     &
214               'name of 3d output field number :',ji,' : ',ctrc3d(ji) 
215            WRITE(numout,*) ctrc3l(ji) 
216            WRITE(numout,*) ' in unit = ',ctrc3u(ji)
[335]217         END DO
218         WRITE(numout,*) ' '
219         DO ji=1,jpdia2d
[268]220            WRITE(numout,*)                    &
221               'name of 2d output field number :',ji,' : ',ctrc2d(ji) 
222            WRITE(numout,*) ctrc2l(ji) 
223            WRITE(numout,*) ' in unit = ',ctrc2u(ji)
[335]224         END DO
225         WRITE(numout,*) ' '
[268]226      ENDIF
227#endif
228
[335]229      !! 1.1 namelist natnum :
230      !! ---------------------
[268]231      rsc=1.
232      rtrn=1.e-15
233      ncortrc=1
234      ndttrc=4
235      crosster=.FALSE.
236
237      REWIND(numnat)
238      READ(numnat,natnum)
239
240!!Chris  computes the first time step of tracer model
241      nittrc000 = nit000 + ndttrc - 1
242
243      IF(lwp) THEN
[335]244         WRITE(numout,*) ' '
245         WRITE(numout,*) 'natnum'
246         WRITE(numout,*) ' '
247         WRITE(numout,*) ' tuning coefficient              rsc     = ',    &
248            rsc
249         WRITE(numout,*) ' truncation value                rtrn    = ',    &
250            rtrn
251         WRITE(numout,*) ' number of corrective phase      ncortrc = ',    &
252            ncortrc
253         WRITE(numout,*) ' time step freq. for pass. trac. ndttrc  = ',    &
254            ndttrc
255         WRITE(numout,*) ' 1st time step for pass. trac. nittrc000 = ',    &
256            nittrc000
257         WRITE(numout,*) ' computes or not crossterms    crosster  = ',    &
258            crosster
[268]259      ENDIF
260
261
[335]262      !! namelist of transport
263      !! ---------------------
[268]264      CALL trc_trp_lec
265
[335]266      !! namelist of SMS
267      !! ---------------     
[268]268      CALL trc_lsm
269
[335]270   END SUBROUTINE trc_lec
[268]271
272#else
[335]273   !!======================================================================
274   !!  Empty module : No passive tracer
275   !!======================================================================
276CONTAINS
[268]277
[335]278   SUBROUTINE trc_lec
[268]279
[335]280   END SUBROUTINE trc_lec
281
[268]282#endif
283
284END MODULE  trclec
Note: See TracBrowser for help on using the repository browser.