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 branches/dev_001_GM/NEMO/TOP_SRC – NEMO

source: branches/dev_001_GM/NEMO/TOP_SRC/trclec.F90 @ 772

Last change on this file since 772 was 772, checked in by gm, 16 years ago

dev_001_GM - change the name of cpp key to key_top, key_lobster, key_pisces, key_kriest and the corresponding lk_

  • 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   !!                       ***  MODULE trclec  ***
4   !! TOP :   Read and print options for the passive tracer run (namelist)
5   !!======================================================================
6   !! History :    -   !  1996-11  (M.A. Foujols, M. Levy)  original code
7   !!              -   !  1998-04  (M.A Foujols, L. Bopp) ahtrb0 for isopycnal mixing
8   !!              -   !  1999-10  (M.A. Foujols, M. Levy) separation of sms
9   !!              -   !  2000-07  (A. Estublier) add TVD and MUSCL : Tests on ndttrc
10   !!              -   !  2000-11  (M.A Foujols, E Kestenare) trcrat, ahtrc0 and aeivtr0
11   !!              -   !  2001-01 (E Kestenare) suppress ndttrc=1 for CEN2 and TVD schemes
12   !!             1.0  !  2005-03 (O. Aumont, A. El Moussaoui) F90
13   !!----------------------------------------------------------------------
14#if defined key_top
15   !!----------------------------------------------------------------------
16   !!   'key_top'                                                TOP models
17   !!----------------------------------------------------------------------
18   !!   trc_lec    :  Read and print options for the passive tracer run (namelist)
19   !!----------------------------------------------------------------------
20   USE oce_trc
21   USE trc
22   USE trctrp_lec
23   USE trclsm
24
25   IMPLICIT NONE
26   PRIVATE
27
28   PUBLIC trc_lec      ! called in ???
29
30   !! * Substitutions
31#  include "passivetrc_substitute.h90"
32   !!----------------------------------------------------------------------
33   !! NEMO/TOP 1.0 , LOCEAN-IPSL (2005)
34   !! $Header:$
35   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt)
36   !!----------------------------------------------------------------------
37
38CONTAINS
39
40   SUBROUTINE trc_lec
41      !!---------------------------------------------------------------------
42      !!                     ***  ROUTINE trc_lec  ***
43      !!
44      !! ** Purpose :   READ and PRINT options for the passive tracer run (namelist)
45      !!
46      !! ** Method  : - read namelist
47      !!---------------------------------------------------------------------
48      INTEGER ::  ji
49      CHARACTER (len=32) ::   clname
50      !!
51      NAMELIST/nattrc/ nwritetrc, lrsttr, nrsttr, ctrcnm, ctrcnl, ctrcun, lutini     ! general   
52      NAMELIST/natnum/ rsc, rtrn, ncortrc, ndttrc, crosster
53#if defined key_trc_diatrd
54      NAMELIST/natrtd/ luttrd, nwritetrd                                             ! dynamical trends
55#endif
56#if defined key_trc_diaadd
57      NAMELIST/natadd/ ctrc3d, ctrc3l, ctrc2d, ctrc2l, ctrc3u, ctrc2u, nwriteadd     ! additional diagnostics
58#endif
59      !!---------------------------------------------------------------------
60
61      IF(lwp) WRITE(numout,*)
62      IF(lwp) WRITE(numout,*) 'trc_lec : read the passive tracer namelists'
63      IF(lwp) WRITE(numout,*) '~~~~~~~'
64
65      clname = 'namelist.passivetrc'
66      CALL ctlopn( numnat, clname, 'OLD', 'FORMATTED', 'SEQUENTIAL',   &
67         &         1, numout, .FALSE., 1 )
68
69
70      ! Namelist nattrc (files)
71      ! ----------------------------------------------
72      nwritetrc = 10                 ! default values
73      lrsttr    = .FALSE.
74      nrsttr    =  0
75      DO ji = 1, jptra
76         WRITE(ctrcnm(ji),'("TR_",I1)'           ) ji
77         WRITE(ctrcnl(ji),'("TRACER NUMBER ",I1)') ji
78         ctrcun(ji) = 'mmole/m3'
79         lutini(ji) = .FALSE. 
80      END DO
81
82      REWIND( numnat )               ! read nattrc
83      READ  ( numnat, nattrc )
84
85      IF(lwp) THEN                   ! control print
86         WRITE(numout,*)
87         WRITE(numout,*) ' Namelist : nattrc'
88         WRITE(numout,*) '    frequency of outputs for passive tracers nwritetrc = ', nwritetrc 
89         WRITE(numout,*) '    restart LOGICAL for passive tr. lrsttr = ', lrsttr
90         WRITE(numout,*) '    control of time step for p. tr. nrsttr = ', nrsttr
91         DO ji = 1, jptra
92            WRITE(numout,*) '    tracer nb: ', ji, ' name = ', ctrcnm(ji), ctrcnl(ji), ' in unit = ',ctrcun(ji)
93            WRITE(numout,*) '    initial value in FILE : ',lutini(ji) 
94         END DO
95      ENDIF
96
97#if defined key_trc_diatrd
98
99      ! Namelist natrtd (transport trends)
100      ! ----------------------------------------------
101      nwritetrd = 10                 ! default values (no dynamical trend recording)
102      DO ji = 1, jptra
103         luttrd(ji) = .FALSE.
104      END DO
105
106      REWIND( numnat )               ! read natrtd
107      READ  ( numnat, natrtd )
108
109      nkeep=0
110      ikeep(:)=0
111      DO ji = 1, jptra
112         IF( luttrd(ji) ) THEN
113             nkeep    = nkeep + 1
114             ikeep(ji)=nkeep
115         END IF
116      END DO
117      IF( nkeep > 0 ) THEN 
118        IF(.NOT. ALLOCATED( trtrd ) )   ALLOCATE( trtrd(jpi,jpj,jpk,nkeep,jpdiatrc) ) 
119        trtrd(:,:,:,:,:) = 0.e0
120      ENDIF
121
122      IF(lwp) THEN                   ! control print
123         WRITE(numout,*)
124         WRITE(numout,*) ' Namelist : natrtd'
125         WRITE(numout,*) '    frequency of outputs for dynamical trends nwritetrd = ', nwritetrd
126         DO ji = 1, jptra
127            WRITE(numout,*) '    keep dynamical trends for tracer number :', ji, luttrd(ji), ikeep(ji)
128         END DO
129         WRITE(numout,*) '    total = ', nkeep, ' tracers dyn trends saved'
130         WRITE(numout,*) '    size of trtrd = ', jpi*jpj*jpk*nkeep*jpdiatrc
131      ENDIF
132#endif
133
134#if defined key_trc_diaadd
135
136      ! Namelist natrtd (transport trends)
137      ! ----------------------------------------------
138      nwriteadd = 10                 ! default values
139      !                                 ! 3D output arrays
140      DO ji = 1, jpdia3d
141         WRITE(ctrc3d(ji),'("3D_",I1)') ji                      ! short name
142         WRITE(ctrc3l(ji),'("3D DIAGNOSTIC NUMBER ",I2)') ji    ! long name
143         ctrc3u(ji) = ' '                                       ! units
144      END DO
145      !                                 ! 2D output arrays
146      DO ji = 1, jpdia2d
147         WRITE(ctrc2d(ji),'("2D_",I1)') ji                      ! short name
148         WRITE(ctrc2l(ji),'("2D DIAGNOSTIC NUMBER ",I2)') ji    ! long name
149         ctrc2u(ji) = ' '                                       ! units
150      END DO
151
152      REWIND( numnat )               ! read natrtd
153      READ  ( numnat, natadd )
154
155      IF(lwp) THEN                   ! control print
156         WRITE(numout,*)
157         WRITE(numout,*) ' Namelist : natadd'
158         WRITE(numout,*) '    frequency of outputs for additional arrays nwriteadd = ', nwriteadd
159         DO ji = 1, jpdia3d
160            WRITE(numout,*) '    3d output field No :',ji,' names ',ctrc3d(ji), ctrc3l(ji), ' in ', ctrc3u(ji)
161         END DO
162         DO ji = 1, jpdia2d
163            WRITE(numout,*) '    2d output field No :',ji,' names ',ctrc2d(ji), ctrc2l(ji), ' in ', ctrc2u(ji)
164         END DO
165      ENDIF
166#endif
167
168      !! Namelist natnum :
169      !! -----------------
170      rsc      = 1.                 ! default values
171      rtrn     = 1.e-15
172      ncortrc  = 1
173      ndttrc   = 4
174      crosster = .FALSE.
175
176      REWIND( numnat )              ! read natnum
177      READ  ( numnat, natnum )
178
179      !!Chris  computes the first time step of tracer model
180      nittrc000 = nit000 + ndttrc - 1
181
182      IF(lwp) THEN                  ! control print
183         WRITE(numout,*)
184         WRITE(numout,*) ' Namelist : natnum'
185         WRITE(numout,*)
186         WRITE(numout,*) ' tuning coefficient              rsc     = ', rsc
187         WRITE(numout,*) ' truncation value                rtrn    = ', rtrn
188         WRITE(numout,*) ' number of corrective phase      ncortrc = ', ncortrc
189         WRITE(numout,*) ' time step freq. for pass. trac. ndttrc  = ', ndttrc
190         WRITE(numout,*) ' 1st time step for pass. trac. nittrc000 = ', nittrc000
191         WRITE(numout,*) ' computes or not crossterms    crosster  = ', crosster
192      ENDIF
193
194      ! namelist of transport
195      ! ---------------------
196      CALL trc_trp_lec
197
198      ! namelist of SMS
199      ! ---------------     
200      CALL trc_lsm
201      !
202   END SUBROUTINE trc_lec
203
204#else
205   !!----------------------------------------------------------------------
206   !!  Dummy module :                                     No passive tracer
207   !!----------------------------------------------------------------------
208CONTAINS
209   SUBROUTINE trc_lec                      ! Empty routine   
210   END SUBROUTINE trc_lec
211#endif
212
213   !!======================================================================
214END MODULE  trclec
Note: See TracBrowser for help on using the repository browser.