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

Last change on this file since 1152 was 1152, checked in by rblod, 16 years ago

Convert cvs header to svn Id, step II

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 8.0 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 trp_trc
23   USE trctrp_lec
24   USE trclsm_lobster    ! LOBSTER namelist
25   USE trclsm_pisces     ! PISCES namelist
26   USE trclsm_cfc        ! CFC SMS namelist
27   USE trclsm_my_trc     ! MY_TRC SMS namelist
28   USE in_out_manager    ! I/O manager
29
30   IMPLICIT NONE
31   PRIVATE
32
33   PUBLIC trc_lec      ! called in ???
34
35   !! * Substitutions
36#  include "top_substitute.h90"
37   !!----------------------------------------------------------------------
38   !! NEMO/TOP 1.0 , LOCEAN-IPSL (2005)
39   !! $Id$
40   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt)
41   !!----------------------------------------------------------------------
42
43CONTAINS
44
45   SUBROUTINE trc_lec
46      !!---------------------------------------------------------------------
47      !!                     ***  ROUTINE trc_lec  ***
48      !!
49      !! ** Purpose :   READ and PRINT options for the passive tracer run (namelist)
50      !!
51      !! ** Method  : - read passive tracer namelist
52      !!              - read namelist of each defined SMS model
53      !!                ( (LOBSTER, PISCES, CFC, MY_TRC )
54      !!---------------------------------------------------------------------
55      INTEGER ::  jn
56      CHARACTER (len=32) ::   clname
57
58      ! Definition of a tracer as a structure
59      TYPE PTRACER
60         CHARACTER(len = 20)  :: sname  !: short name
61         CHARACTER(len = 80 ) :: lname  !: long name
62         CHARACTER(len = 20 ) :: unit   !: unit
63         LOGICAL              :: lini   !: read in a file or not
64         LOGICAL              :: lsav   !: ouput the tracer or not
65      END TYPE PTRACER
66
67      TYPE(PTRACER) , DIMENSION(jptra) :: tracer
68
69      !!
70      NAMELIST/namtoptrc/ ndttrc, nwritetrc, lrsttr, nrsttr, tracer
71#if defined key_trc_diatrd
72      NAMELIST/namtoptrd/ luttrd, nwritetrd                                             ! dynamical trends
73#endif
74
75      !!---------------------------------------------------------------------
76
77      IF(lwp) WRITE(numout,*) 'trc_lec : read the passive tracer namelists'
78      IF(lwp) WRITE(numout,*) '~~~~~~~'
79
80      clname = 'namelist_top'
81      CALL ctlopn( numnat, clname, 'OLD', 'FORMATTED', 'SEQUENTIAL',   &
82         &         1, numout, .FALSE., 1 )
83
84
85      ! Namelist nattrc (files)
86      ! ----------------------------------------------
87      ndttrc    = 1                 ! default values
88      nwritetrc = 10     
89      lrsttr    = .FALSE.
90      nrsttr    =  0
91      DO jn = 1, jptra
92         WRITE(ctrcnm(jn),'("TR_",I1)'           ) jn
93         WRITE(ctrcnl(jn),'("TRACER NUMBER ",I1)') jn
94         ctrcun(jn) = 'mmole/m3'
95         lutini(jn) = .FALSE. 
96         lutsav(jn) = .TRUE.
97      END DO
98
99      REWIND( numnat )               ! read nattrc
100      READ  ( numnat, namtoptrc )
101
102      !!Chris  computes the first time step of tracer model
103      nittrc000 = nit000 + ndttrc - 1
104
105      DO jn = 1, jptra
106         ctrcnm(jn) = tracer(jn)%sname
107         ctrcnl(jn) = tracer(jn)%lname
108         ctrcun(jn) = tracer(jn)%unit
109         lutini(jn) = tracer(jn)%lini
110         lutsav(jn) = tracer(jn)%lsav
111      END DO
112
113
114      IF(lwp) THEN                   ! control print
115         WRITE(numout,*)
116         WRITE(numout,*) ' Namelist : namtoptrc'
117         WRITE(numout,*) '    time step freq. for pass. trac. ndttrc             = ', ndttrc
118         WRITE(numout,*) '    1st time step for pass. trac. nittrc000            = ', nittrc000
119         WRITE(numout,*) '    frequency of outputs for passive tracers nwritetrc = ', nwritetrc 
120         WRITE(numout,*) '    restart LOGICAL for passive tr. lrsttr             = ', lrsttr
121         WRITE(numout,*) '    control of time step for p. tr. nrsttr             = ', nrsttr
122         DO jn = 1, jptra
123            WRITE(numout,*) '   tracer nb             : ', jn 
124            WRITE(numout,*) '   short name            : ', TRIM(ctrcnm(jn))
125            WRITE(numout,*) '   long name             : ', TRIM(ctrcnl(jn))
126            WRITE(numout,*) '   unit                  : ', TRIM(ctrcun(jn))
127            WRITE(numout,*) '   initial value in FILE : ', lutini(jn) 
128            WRITE(numout,*) '   output of tracer      : ', lutsav(jn)
129            WRITE(numout,*) ' '
130         END DO
131      ENDIF
132
133#if defined key_trc_diatrd
134
135      ! Namelist natrtd (transport trends)
136      ! ----------------------------------------------
137      nwritetrd = 10                 ! default values (no dynamical trend recording)
138      DO jn = 1, jptra
139         luttrd(jn) = .FALSE.
140      END DO
141
142      REWIND( numnat )               ! read natrtd
143      READ  ( numnat, namtoptrd )
144
145      nkeep=0
146      ikeep(:)=0
147      DO jn = 1, jptra
148         IF( luttrd(jn) ) THEN
149             nkeep    = nkeep + 1
150             ikeep(jn)=nkeep
151         END IF
152      END DO
153      IF( nkeep > 0 ) THEN 
154        IF(.NOT. ALLOCATED( trtrd ) )   ALLOCATE( trtrd(jpi,jpj,jpk,nkeep,jpdiatrc) ) 
155        trtrd(:,:,:,:,:) = 0.e0
156      ENDIF
157
158      IF(lwp) THEN                   ! control print
159         WRITE(numout,*)
160         WRITE(numout,*) ' Namelist : namtoptrd'
161         WRITE(numout,*) '    frequency of outputs for dynamical trends nwritetrd = ', nwritetrd
162         DO jn = 1, jptra
163            WRITE(numout,*) '    keep dynamical trends for tracer number :', jn, luttrd(jn), ikeep(jn)
164         END DO
165         WRITE(numout,*) '    total = ', nkeep, ' tracers dyn trends saved'
166         WRITE(numout,*) '    size of trtrd = ', jpi*jpj*jpk*nkeep*jpdiatrc
167      ENDIF
168#endif
169
170
171      ! namelist of transport
172      ! ---------------------
173      CALL trc_trp_lec
174
175      ! namelist of SMS
176      ! ---------------     
177      IF( lk_lobster ) THEN   ;   CALL trc_lsm_lobster      ! LOBSTER bio-model
178      ELSE                    ;   IF(lwp) WRITE(numout,*) '          LOBSTER not used'
179      ENDIF
180
181      IF( lk_pisces  ) THEN   ;   CALL trc_lsm_pisces      ! PISCES  bio-model
182      ELSE                    ;   IF(lwp) WRITE(numout,*) '          PISCES not used'
183      ENDIF
184
185      IF( lk_cfc     ) THEN   ;   CALL trc_lsm_cfc         ! CFC     tracers
186      ELSE                    ;   IF(lwp) WRITE(numout,*) '          CFC not used'
187      ENDIF
188
189      IF( lk_my_trc  ) THEN   ;   CALL trc_lsm_my_trc      ! MY_TRC  tracers
190      ELSE                    ;   IF(lwp) WRITE(numout,*) '          MY_TRC not used'
191      ENDIF
192      !
193   END SUBROUTINE trc_lec
194
195#else
196   !!----------------------------------------------------------------------
197   !!  Dummy module :                                     No passive tracer
198   !!----------------------------------------------------------------------
199CONTAINS
200   SUBROUTINE trc_lec                      ! Empty routine   
201   END SUBROUTINE trc_lec
202#endif
203
204   !!======================================================================
205END MODULE  trclec
Note: See TracBrowser for help on using the repository browser.