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

Last change on this file since 1573 was 1542, checked in by cetlod, 15 years ago

rename namelist variable lrsttr to ln_rsttr, see ticket:493

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 9.5 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      !!
[1542]72      NAMELIST/namtoptrc/ ndttrc, nwritetrc, ln_rsttr, nrsttr, &
[1254]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, &
[1284]77                         cn_trdrst_trc_in, cn_trdrst_trc_out, 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     
[1542]92      ln_rsttr    = .FALSE.
[945]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 
[1542]125         WRITE(numout,*) '    restart LOGICAL for passive tr. ln_rsttr           = ', ln_rsttr
[1119]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.
[1284]148      cn_trdrst_trc_in  = "restart_mld_trc"
149      cn_trdrst_trc_out = "restart_mld_trc"
[945]150      DO jn = 1, jptra
151         luttrd(jn) = .FALSE.
[335]152      END DO
[268]153
[1177]154      REWIND( numnat )               !  namelist namtoptrd : passive tracer trends diagnostic
[1119]155      READ  ( numnat, namtoptrd )
[268]156
[1177]157#if defined key_trc_diatrd
158      nkeep    = 0
159      ikeep(:) = 0
[945]160      DO jn = 1, jptra
161         IF( luttrd(jn) ) THEN
[1177]162             nkeep     = nkeep + 1
163             ikeep(jn) = nkeep
[433]164         END IF
165      END DO
[945]166      IF( nkeep > 0 ) THEN 
167        IF(.NOT. ALLOCATED( trtrd ) )   ALLOCATE( trtrd(jpi,jpj,jpk,nkeep,jpdiatrc) ) 
168        trtrd(:,:,:,:,:) = 0.e0
[433]169      ENDIF
[945]170
[1177]171      nwritetrd = ntrd_trc
172#endif
173
174     IF(lwp) THEN
[945]175         WRITE(numout,*)
[1177]176         WRITE(numout,*) ' trd_mld_trc_init : read namelist namtoptrd                        '
177         WRITE(numout,*) ' ~~~~~~~~~~~~~~~~                                               '
178         WRITE(numout,*) '   * frequency of trends diagnostics   ntrd_trc               = ', ntrd_trc
179         WRITE(numout,*) '   * control surface type              nctls_trc              = ', nctls_trc
180         WRITE(numout,*) '   * restart for ML diagnostics        ln_trdmld_trc_restart  = ', ln_trdmld_trc_restart
181         WRITE(numout,*) '   * flag to diagnose trends of                                 '
182         WRITE(numout,*) '     instantantaneous or mean ML T/S   ln_trdmld_trc_instant  = ', ln_trdmld_trc_instant
183         WRITE(numout,*) '   * unit conversion factor            ucf_trc                = ', ucf_trc
184#if defined key_trdmld_trc
[945]185         DO jn = 1, jptra
[1177]186            WRITE(numout,*) '    keep dynamical trends for tracer number :', jn, luttrd(jn)
187         END DO
188#else
189         DO jn = 1, jptra
[945]190            WRITE(numout,*) '    keep dynamical trends for tracer number :', jn, luttrd(jn), ikeep(jn)
[335]191         END DO
[1177]192
193         WRITE(numout,*)
[945]194         WRITE(numout,*) '    total = ', nkeep, ' tracers dyn trends saved'
195         WRITE(numout,*) '    size of trtrd = ', jpi*jpj*jpk*nkeep*jpdiatrc
[1177]196#endif
[268]197      ENDIF
[1177]198
[268]199#endif
200
201
[945]202      ! namelist of transport
203      ! ---------------------
[268]204      CALL trc_trp_lec
205
[945]206      ! namelist of SMS
207      ! ---------------     
[1077]208      IF( lk_lobster ) THEN   ;   CALL trc_lsm_lobster      ! LOBSTER bio-model
209      ELSE                    ;   IF(lwp) WRITE(numout,*) '          LOBSTER not used'
210      ENDIF
211
212      IF( lk_pisces  ) THEN   ;   CALL trc_lsm_pisces      ! PISCES  bio-model
213      ELSE                    ;   IF(lwp) WRITE(numout,*) '          PISCES not used'
214      ENDIF
215
216      IF( lk_cfc     ) THEN   ;   CALL trc_lsm_cfc         ! CFC     tracers
217      ELSE                    ;   IF(lwp) WRITE(numout,*) '          CFC not used'
218      ENDIF
219
[1254]220      IF( lk_c14b     ) THEN   ;   CALL trc_lsm_c14b         ! C14 bomb     tracers
221      ELSE                    ;   IF(lwp) WRITE(numout,*) '          C14 not used'
222      ENDIF
223
[1077]224      IF( lk_my_trc  ) THEN   ;   CALL trc_lsm_my_trc      ! MY_TRC  tracers
225      ELSE                    ;   IF(lwp) WRITE(numout,*) '          MY_TRC not used'
226      ENDIF
[945]227      !
[335]228   END SUBROUTINE trc_lec
[268]229
230#else
[945]231   !!----------------------------------------------------------------------
232   !!  Dummy module :                                     No passive tracer
233   !!----------------------------------------------------------------------
[335]234CONTAINS
[945]235   SUBROUTINE trc_lec                      ! Empty routine   
[335]236   END SUBROUTINE trc_lec
[268]237#endif
238
[945]239   !!======================================================================
[268]240END MODULE  trclec
Note: See TracBrowser for help on using the repository browser.