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

Last change on this file since 1271 was 1254, checked in by cetlod, 15 years ago

update parameter files to take into account the new C14 bomb tracer model, see ticket:298

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