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.
trctrp_lec.F90 in branches/dev_001_GM/NEMO/TOP_SRC/TRP – NEMO

source: branches/dev_001_GM/NEMO/TOP_SRC/TRP/trctrp_lec.F90 @ 770

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

dev_001_GM - some small things

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 11.2 KB
Line 
1MODULE trctrp_lec
2   !!==============================================================================
3   !!                       ***  MODULE  trctrp_lec  ***
4   !! Ocean passive tracers:  namelist read options for transport
5   !!==============================================================================
6   !! History :   1.0  !  2004-03  (C. Ethe)  Original code
7   !!             2.0  !  2007-12  (C. Ethe, G. Madec)  revised architecture
8   !!----------------------------------------------------------------------
9#if defined key_passivetrc
10   !!----------------------------------------------------------------------
11   !!   'key_passivetrc'                                          TOP model
12   !!----------------------------------------------------------------------
13   !!   trc_trp_lec  : read the passive tracer namelist for transport
14   !!----------------------------------------------------------------------
15   USE oce_trc             ! ocean dynamics and active tracers variables
16   USE trc                 ! ocean passive tracers variables
17
18   IMPLICIT NONE
19   PRIVATE
20
21   PUBLIC   trc_trp_lec    ! routine called by step module
22 
23   !                                                  !!: ** Advection (nam_traadv) **
24   LOGICAL , PUBLIC ::   ln_trcadv_cen2   = .FALSE.   !: 2nd order centered scheme flag
25   LOGICAL , PUBLIC ::   ln_trcadv_tvd    = .FALSE.   !: TVD scheme flag
26   LOGICAL , PUBLIC ::   ln_trcadv_muscl  = .FALSE.   !: MUSCL scheme flag
27   LOGICAL , PUBLIC ::   ln_trcadv_muscl2 = .FALSE.   !: MUSCL2 scheme flag
28   LOGICAL , PUBLIC ::   ln_trcadv_smolar = .TRUE.    !: Smolarkiewicz scheme flag
29
30   !                                                 !!: **  bottom boundary layer (nambbl) **
31   REAL(wp), PUBLIC ::   atrcbbl = 1.e+3              ! lateral coeff. for bottom boundary layer scheme (m2/s)
32
33   !                                                 !!: ** lateral mixing namelist (nam_trcldf) **
34   LOGICAL , PUBLIC ::   ln_trcldf_diff  = .FALSE.    !: flag of perform or not the lateral diff.
35   LOGICAL , PUBLIC ::   ln_trcldf_lap   = .TRUE.     !: laplacian operator
36   LOGICAL , PUBLIC ::   ln_trcldf_bilap = .FALSE.    !: bilaplacian operator
37   LOGICAL , PUBLIC ::   ln_trcldf_level = .FALSE.    !: iso-level direction
38   LOGICAL , PUBLIC ::   ln_trcldf_hor   = .FALSE.    !: horizontal (geopotential) direction
39   LOGICAL , PUBLIC ::   ln_trcldf_iso   = .TRUE.     !: iso-neutral direction
40
41   !                                                 !!: flag of the lateral diff. scheme used
42   LOGICAL , PUBLIC ::   l_trcldf_lap                 !: iso-level laplacian operator
43   LOGICAL , PUBLIC ::   l_trcldf_bilap               !: iso-level bilaplacian operator
44   LOGICAL , PUBLIC ::   l_trcldf_bilapg              !: geopotential bilap. (s-coord)
45   LOGICAL , PUBLIC ::   l_trcldf_iso                 !: iso-neutral laplacian or horizontal lapacian (s-coord)
46   LOGICAL , PUBLIC ::   l_trczdf_iso                 !: idem for the vertical component
47   LOGICAL , PUBLIC ::   l_trczdf_iso_vo              !: idem with vectopt_memory
48   LOGICAL , PUBLIC ::   l_trcldf_iso_zps             !: iso-neutral laplacian (partial steps)
49
50   !                                                 !!: ** Vertical diffusion (nam_trczdf) **
51   LOGICAL , PUBLIC ::   ln_trczdf_exp = .FALSE.      !: explicit vertical diffusion scheme flag
52
53   !                                                 !!: ** vertical diffusion (namzdf) **
54   INTEGER , PUBLIC ::   n_trczdf_exp = 3             !: number of sub-time step (explicit time stepping)
55
56   LOGICAL , PUBLIC ::   l_trczdf_exp     = .FALSE.   !: explicit vertical diffusion
57   LOGICAL , PUBLIC ::   l_trczdf_imp     = .FALSE.   !: implicit vertical diffusion
58
59#if defined key_trcdmp
60   !                                                 !!: ** newtonian damping namelist (nam_trcdmp) **
61   INTEGER  , PUBLIC ::   ndmptr   =   -1             !: = 0/-1/'latitude' for damping over tracers
62   INTEGER  , PUBLIC ::   ndmpftr  =    2             !: = 1 create a damping.coeff NetCDF file
63   INTEGER  , PUBLIC ::   nmldmptr =    0             !: = 0/1/2 flag for damping in the mixed layer
64
65   !                                                 !!: ** newtonian damping (namdmp) **
66   REAL(wp) , PUBLIC ::   sdmptr   =   50.            !: surface time scale for internal damping (days)
67   REAL(wp) , PUBLIC ::   bdmptr   =  360.            !: bottom time scale for internal damping (days)
68   REAL(wp) , PUBLIC ::   hdmptr   =  800.            !: depth of transition between sdmp and bdmp (meters)
69#endif
70   !!----------------------------------------------------------------------
71   !! NEMO/TOP 2.0 , LOCEAN-IPSL (2007)
72   !! $Id$
73   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt)
74   !!----------------------------------------------------------------------
75
76CONTAINS
77
78   SUBROUTINE trc_trp_lec
79      !!----------------------------------------------------------------------
80      !!                  ***  ROUTINE trc_trp_lec  ***
81      !!               
82      !! ** Purpose :   Read Namelist for tracer transport option
83      !!----------------------------------------------------------------------
84      NAMELIST/namtrcadv/ ln_trcadv_cen2 , ln_trcadv_tvd,   &
85         &                 ln_trcadv_muscl, ln_trcadv_muscl2, ln_trcadv_smolar
86#if  defined key_trcbbl_dif   ||   defined key_trcbbl_adv 
87      NAMELIST/namtrcbbl/ atrcbbl
88#endif
89      NAMELIST/namtrcldf/  ln_trcldf_diff  , ln_trcldf_lap  , ln_trcldf_bilap, &
90         &                 ln_trcldf_level, ln_trcldf_hor, ln_trcldf_iso,   &
91         &                 ahtrc0, ahtrb0, aeivtr0, trcrat
92      NAMELIST/namtrczdf/ ln_trczdf_exp, n_trczdf_exp
93#if defined key_trcdmp
94      NAMELIST/namtrcdmp/ ndmptr, ndmpftr, nmldmptr, sdmptr, bdmptr, hdmptr
95#endif
96      !!----------------------------------------------------------------------
97
98      ! Read Namelist namtrcadv : tracer advection scheme
99      ! -------------------------
100      REWIND( numnat )
101      READ  ( numnat, namtrcadv )
102
103      ! Parameter control and print
104      ! ---------------------------
105      ! Control print
106      IF(lwp) THEN
107         WRITE(numout,*)
108         WRITE(numout,*) 'choice/control of the tracer advection scheme'
109         WRITE(numout,*) '~~~~~~~~~~~'
110         WRITE(numout,*) '          Namelist namtrcadv : chose a advection scheme for tracers'
111         WRITE(numout,*)
112         WRITE(numout,*) '             2nd order advection scheme     ln_trcadv_cen2   = ', ln_trcadv_cen2
113         WRITE(numout,*) '             TVD advection scheme           ln_trcadv_tvd    = ', ln_trcadv_tvd
114         WRITE(numout,*) '             MUSCL  advection scheme        ln_trcadv_muscl  = ', ln_trcadv_muscl
115         WRITE(numout,*) '             MUSCL2 advection scheme        ln_trcadv_muscl2 = ', ln_trcadv_muscl2
116         WRITE(numout,*) '             SMOLARKIEWICZ advection scheme ln_trcadv_smolar = ', ln_trcadv_smolar
117      ENDIF
118
119#if  defined key_trcbbl_dif
120      ! Read Namelist namtrcbbl : Bottom boundary layer coef
121      ! --------------------------------------------------
122      REWIND( numnat )
123      READ  ( numnat, namtrcbbl )
124
125      ! Parameter control and print
126      ! ---------------------------
127      IF(lwp) THEN
128         WRITE(numout,*) ' Diffusive Bottom Boundary Layer'
129         WRITE(numout,*) '~~~~~~~~'
130         WRITE(numout,*) ' bottom boundary layer coef.    atrcbbl = ', atrcbbl
131# if defined key_trcbbl_adv
132         WRITE(numout,*) ' * Advective Bottom Boundary Layer'
133# endif
134         WRITE(numout,*)
135      ENDIF
136#endif
137
138      !  Define the lateral tracer physics parameters
139      ! =============================================
140   
141      ! Read Namelist namtrcldf : Lateral physics on tracers
142      REWIND( numnat )
143      READ  ( numnat, namtrcldf )
144
145      IF(lwp) THEN
146         WRITE(numout,*)
147         WRITE(numout,*) 'lateral passive tracer physics'
148         WRITE(numout,*) '~~~~~~~'
149         WRITE(numout,*) '   Namelist namtrcldf : set lateral mixing parameters (type, direction, coefficients)'
150         WRITE(numout,*) '     perform lateral diffusion or not               ln_trcldf_diff  = ', ln_trcldf_diff
151         WRITE(numout,*) '     laplacian operator                             ln_trcldf_lap   = ', ln_trcldf_lap
152         WRITE(numout,*) '     bilaplacian operator                           ln_trcldf_bilap = ', ln_trcldf_bilap
153         WRITE(numout,*) '     iso-level                                      ln_trcldf_level = ', ln_trcldf_level
154         WRITE(numout,*) '     horizontal (geopotential)                      ln_trcldf_hor   = ', ln_trcldf_hor
155         WRITE(numout,*) '     iso-neutral                                    ln_trcldf_iso   = ', ln_trcldf_iso
156         WRITE(numout,*) '     lateral eddy diffusivity                              ahtrc0   = ', ahtrc0
157         WRITE(numout,*) '     background hor. diffusivity                            ahtrb0  = ', ahtrb0
158         WRITE(numout,*) '     eddy induced velocity coef.                           aeivtr0  = ', aeivtr0
159         WRITE(numout,*) '     ratio between passive and active tracer diffusion coef  trcrat = ', trcrat
160      ENDIF
161
162      ! Read namtrczdf namelist : vertical mixing parameters
163      ! --------------------
164      REWIND( numnat )
165      READ  ( numnat, namtrczdf )
166
167      ! Parameter print
168      ! ---------------
169      IF(lwp) THEN
170         WRITE(numout,*)
171         WRITE(numout,*) 'vertical physics'
172         WRITE(numout,*) '~~~~~~~~'
173         WRITE(numout,*) '          Namelist namtrczdf : set vertical diffusion parameters'
174         WRITE(numout,*) '             time splitting / backward scheme ln_trczdf_exp = ', ln_trczdf_exp
175         WRITE(numout,*) '             number of time step               n_trczdf_exp = ', n_trczdf_exp
176      ENDIF
177
178# if defined key_trcdmp
179      ! Read Namelist namtdp : passive tracres damping term
180      ! --------------------
181      REWIND( numnat )
182      READ  ( numnat, namtrcdmp )
183      IF( lzoom )   nmldmptr = 0      ! restoring to climatology at closed north or south boundaries
184
185      ! Parameter control and print
186      ! ---------------------------
187      IF(lwp) THEN
188         WRITE(numout,*)
189         WRITE(numout,*) 'newtonian damping'
190         WRITE(numout,*) '~~~~~~~'
191         WRITE(numout,*) '          Namelist namtrcdmp : set damping parameter'
192         WRITE(numout,*) '             tracers damping option         ndmptr   = ', ndmptr
193         WRITE(numout,*) '             create a damping.coeff file    ndmpftr  = ', ndmpftr
194         WRITE(numout,*) '             mixed layer damping option     nmldmptr = ', nmldmptr, '(zoom: forced to 0)'
195         WRITE(numout,*) '             surface time scale (days)      sdmptr   = ', sdmptr
196         WRITE(numout,*) '             bottom time scale (days)       bdmptr   = ', bdmptr
197         WRITE(numout,*) '             depth of transition (meters)   hdmptr   = ', hdmptr
198         WRITE(numout,*)
199      ENDIF
200#endif
201      !
202   END SUBROUTINE trc_trp_lec
203   
204#else
205   !!----------------------------------------------------------------------
206   !!   Dummy module :                                         No TOP model
207   !!----------------------------------------------------------------------
208CONTAINS
209   SUBROUTINE trc_trp_lec              ! Empty routine
210   END SUBROUTINE trc_trp_lec
211#endif
212
213  !!======================================================================
214END MODULE trctrp_lec
Note: See TracBrowser for help on using the repository browser.