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

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

dev_001_GM - create 1 trclsm_ module by trc model (CFC, LOBSTER, PISCES..) + some bug corrections

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 8.3 KB
RevLine 
[268]1MODULE trclec
[763]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   !!----------------------------------------------------------------------
[335]14#if defined key_passivetrc
[763]15   !!----------------------------------------------------------------------
16   !!   'key_passivetrc'                                    Passive tracers
17   !!----------------------------------------------------------------------
18   !!   trc_lec    :  Read and print options for the passive tracer run (namelist)
19   !!----------------------------------------------------------------------
[335]20   USE oce_trc
21   USE trc
22   USE trctrp_lec
23   USE trclsm
[268]24
[335]25   IMPLICIT NONE
26   PRIVATE
[268]27
[763]28   PUBLIC trc_lec      ! called in ???
[268]29
[763]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   !!----------------------------------------------------------------------
[268]37
38CONTAINS
39
[335]40   SUBROUTINE trc_lec
41      !!---------------------------------------------------------------------
[763]42      !!                     ***  ROUTINE trc_lec  ***
[335]43      !!
[763]44      !! ** Purpose :   READ and PRINT options for the passive tracer run (namelist)
45      !!
46      !! ** Method  : - read namelist
47      !!---------------------------------------------------------------------
[268]48      INTEGER ::  ji
[768]49      CHARACTER (len=32) ::   clname
[763]50      !!
51      NAMELIST/nattrc/ nwritetrc, lrsttr, nrsttr, ctrcnm, ctrcnl, ctrcun, lutini     ! general   
52      NAMELIST/natnum/ rsc, rtrn, ncortrc, ndttrc, crosster
[268]53#if defined key_trc_diatrd
[763]54      NAMELIST/natrtd/ luttrd, nwritetrd                                             ! dynamical trends
[268]55#endif
56#if defined key_trc_diaadd
[763]57      NAMELIST/natadd/ ctrc3d, ctrc3l, ctrc2d, ctrc2l, ctrc3u, ctrc2u, nwriteadd     ! additional diagnostics
[268]58#endif
[763]59      !!---------------------------------------------------------------------
[268]60
[763]61      IF(lwp) WRITE(numout,*)
62      IF(lwp) WRITE(numout,*) 'trc_lec : read the passive tracer namelists'
63      IF(lwp) WRITE(numout,*) '~~~~~~~'
[268]64
[763]65      clname = 'namelist.passivetrc'
[625]66      CALL ctlopn( numnat, clname, 'OLD', 'FORMATTED', 'SEQUENTIAL',   &
67         &         1, numout, .FALSE., 1 )
[268]68
[625]69
[763]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. 
[268]80      END DO
81
[763]82      REWIND( numnat )               ! read nattrc
83      READ  ( numnat, nattrc )
[268]84
[763]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) 
[335]94         END DO
[268]95      ENDIF
96
97#if defined key_trc_diatrd
98
[763]99      ! Namelist natrtd (transport trends)
100      ! ----------------------------------------------
101      nwritetrd = 10                 ! default values (no dynamical trend recording)
102      DO ji = 1, jptra
[335]103         luttrd(ji) = .FALSE.
104      END DO
[268]105
[763]106      REWIND( numnat )               ! read natrtd
107      READ  ( numnat, natrtd )
[268]108
[433]109      nkeep=0
110      ikeep(:)=0
[763]111      DO ji = 1, jptra
112         IF( luttrd(ji) ) THEN
113             nkeep    = nkeep + 1
[433]114             ikeep(ji)=nkeep
115         END IF
116      END DO
[763]117      IF( nkeep > 0 ) THEN 
118        IF(.NOT. ALLOCATED( trtrd ) )   ALLOCATE( trtrd(jpi,jpj,jpk,nkeep,jpdiatrc) ) 
119        trtrd(:,:,:,:,:) = 0.e0
[433]120      ENDIF
[763]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)
[335]128         END DO
[763]129         WRITE(numout,*) '    total = ', nkeep, ' tracers dyn trends saved'
130         WRITE(numout,*) '    size of trtrd = ', jpi*jpj*jpk*nkeep*jpdiatrc
[268]131      ENDIF
132#endif
133
134#if defined key_trc_diaadd
135
[763]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
[335]144      END DO
[763]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
[335]150      END DO
[268]151
[763]152      REWIND( numnat )               ! read natrtd
153      READ  ( numnat, natadd )
[268]154
[763]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)
[335]161         END DO
[763]162         DO ji = 1, jpdia2d
163            WRITE(numout,*) '    2d output field No :',ji,' names ',ctrc2d(ji), ctrc2l(ji), ' in ', ctrc2u(ji)
[335]164         END DO
[268]165      ENDIF
166#endif
167
[763]168      !! Namelist natnum :
169      !! -----------------
170      rsc      = 1.                 ! default values
171      rtrn     = 1.e-15
172      ncortrc  = 1
173      ndttrc   = 4
174      crosster = .FALSE.
[268]175
[763]176      REWIND( numnat )              ! read natnum
177      READ  ( numnat, natnum )
[268]178
[763]179      !!Chris  computes the first time step of tracer model
[268]180      nittrc000 = nit000 + ndttrc - 1
181
[763]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
[268]192      ENDIF
193
[763]194      ! namelist of transport
195      ! ---------------------
[268]196      CALL trc_trp_lec
197
[763]198      ! namelist of SMS
199      ! ---------------     
[268]200      CALL trc_lsm
[763]201      !
[335]202   END SUBROUTINE trc_lec
[268]203
204#else
[763]205   !!----------------------------------------------------------------------
206   !!  Dummy module :                                     No passive tracer
207   !!----------------------------------------------------------------------
[335]208CONTAINS
[763]209   SUBROUTINE trc_lec                      ! Empty routine   
[335]210   END SUBROUTINE trc_lec
[268]211#endif
212
[763]213   !!======================================================================
[268]214END MODULE  trclec
Note: See TracBrowser for help on using the repository browser.