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.
zdfini.F90 in trunk/NEMO/OPA_SRC/ZDF – NEMO

source: trunk/NEMO/OPA_SRC/ZDF/zdfini.F90 @ 702

Last change on this file since 702 was 699, checked in by smasson, 17 years ago

insert revision Id

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 6.0 KB
Line 
1MODULE zdfini
2   !!======================================================================
3   !!              ***  MODULE  zdfini  ***
4   !! Ocean physics : define vertical mixing variables
5   !!=====================================================================
6
7   !!----------------------------------------------------------------------
8   !!   zdf_init    : initialization, namelist read, and parameters control
9   !!----------------------------------------------------------------------
10   !! * Modules used
11   USE par_oce         ! mesh and scale factors
12   USE ldftra_oce      ! ocean active tracers: lateral physics
13   USE ldfdyn_oce      ! ocean dynamics lateral physics
14   USE zdf_oce         ! TKE vertical mixing         
15   USE lib_mpp         ! distribued memory computing
16   USE zdftke          ! TKE vertical mixing 
17   USE zdfkpp          ! KPP vertical mixing         
18   USE zdfddm          ! double diffusion mixing     
19   USE zdfevd          ! enhanced vertical diffusion 
20   USE zdfric          ! Richardson vertical mixing   
21   USE tranpc          ! convection: non penetrative adjustment
22   USE ldfslp          ! iso-neutral slopes
23
24   USE in_out_manager  ! I/O manager
25
26   IMPLICIT NONE
27   PRIVATE
28
29   !! *  Routine accessibility
30   PUBLIC zdf_init          ! routine called by opa.F90
31   !!----------------------------------------------------------------------
32   !!   OPA 9.0 , LOCEAN-IPSL (2005)
33   !! $Id$
34   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt)
35   !!----------------------------------------------------------------------
36   
37CONTAINS
38
39   SUBROUTINE zdf_init
40      !!----------------------------------------------------------------------
41      !!                  ***  ROUTINE zdf_init  ***
42      !!
43      !! ** Purpose :   initializations of the vertical ocean physics
44      !!
45      !! ** Method  :   Read namelist namzdf, control logicals
46      !!
47      !! History :
48      !!        !  97-06  (G. Madec)  Original code from inimix
49      !!   8.5  !  02-08  (G. Madec)  F90 : free form
50      !!   9.0  !  05-06  (C. Ethe) KPP parameterization
51      !!----------------------------------------------------------------------
52      !! * Local declarations
53      INTEGER ::   ioptio       ! temporary scalar
54
55      !! * Namelist
56      NAMELIST/namzdf/ ln_zdfexp, n_zdfexp, ln_zdfevd, ln_zdfnpc,   &
57         &             avm0     , avt0    , avevd    , n_evdm
58      !!----------------------------------------------------------------------
59      !!  OPA 9.0, LODYC-IPSL (2003)
60      !!----------------------------------------------------------------------
61
62      ! Read namzdf namelist : vertical mixing parameters
63      ! --------------------
64      REWIND( numnam )
65      READ  ( numnam, namzdf )
66
67      ! Parameter print
68      ! ---------------
69      IF(lwp) THEN
70         WRITE(numout,*)
71         WRITE(numout,*) 'zdf_init: vertical physics'
72         WRITE(numout,*) '~~~~~~~~'
73         WRITE(numout,*) '   Namelist namzdf : set vertical mixing mixing parameters'
74         WRITE(numout,*) '      time splitting / backward scheme    ln_zdfexp = ', ln_zdfexp
75         WRITE(numout,*) '      number of time step                  n_zdfexp = ', n_zdfexp
76         WRITE(numout,*) '      enhanced vertical diffusion         ln_zdfevd = ', ln_zdfevd
77         WRITE(numout,*) '      non-penetrative convection          ln_zdfnpc = ', ln_zdfnpc
78         WRITE(numout,*) '      vertical eddy viscosity             avm0      = ', avm0
79         WRITE(numout,*) '      vertical eddy diffusivity           avt0      = ', avt0
80         WRITE(numout,*) '      vertical coefficient for evd        avevd     = ', avevd
81         WRITE(numout,*) '         applied on momentum (=1/0)       n_evdm    = ', n_evdm
82      ENDIF
83
84      ! Parameter & logicals controls
85      ! -----------------------------
86      ! ... check of vertical mixing scheme on tracers
87      !           ==> will be done in trazdf module
88
89      ! ... check of mixing coefficient
90      IF(lwp) WRITE(numout,*)
91      IF(lwp) WRITE(numout,*) '          vertical mixing option :'
92      ioptio = 0
93      IF( lk_zdfcst ) THEN
94         IF(lwp) WRITE(numout,*) '             constant eddy diffusion coefficients'
95         ioptio = ioptio+1
96      ENDIF
97      IF( lk_zdfric ) THEN
98         IF(lwp) WRITE(numout,*) '             Richardson dependent eddy coefficients'
99         ioptio = ioptio+1
100      ENDIF
101      IF( lk_zdftke ) THEN
102         IF(lwp) WRITE(numout,*) '             TKE dependent eddy coefficients'
103         ioptio = ioptio+1
104      ENDIF
105      IF( lk_zdfkpp ) THEN
106         IF(lwp) WRITE(numout,*) '             KPP dependent eddy coefficients'
107         ioptio = ioptio+1
108      ENDIF
109      IF( ioptio == 0 .OR. ioptio > 1 .AND. .NOT. lk_esopa ) &
110         CALL ctl_stop( ' one and only one vertical diffusion option has to be defined ' )
111
112      ! ... Convection
113      IF(lwp) WRITE(numout,*)
114      IF(lwp) WRITE(numout,*) '          convection :'
115      ioptio = 0
116      IF( ln_zdfnpc ) THEN
117         IF(lwp) WRITE(numout,*) '             use non penetrative convective scheme'
118         ioptio = ioptio+1
119      ENDIF
120      IF( ln_zdfevd ) THEN
121         IF(lwp) WRITE(numout,*) '             use enhanced vertical dif. scheme'
122         ioptio = ioptio+1
123      ENDIF
124      IF( lk_zdftke ) THEN
125         IF(lwp) WRITE(numout,*) '             use the 1.5 turbulent closure'
126      ENDIF
127      IF( lk_zdfkpp ) THEN
128         IF(lwp) WRITE(numout,*) '             use the KPP closure scheme'
129         IF(lk_mpp) THEN
130            IF(lwp) WRITE(numout,cform_err)
131            IF(lwp) WRITE(numout,*) '             The KPP scheme is not ready to run in MPI'
132         ENDIF
133      ENDIF
134      IF ( ioptio > 1 .AND. .NOT. lk_esopa ) &
135           CALL ctl_stop( ' chose between ln_zdfnpc', '           and ln_zdfevd' )
136      IF( ioptio == 0 .AND. .NOT.( lk_zdftke .OR. lk_zdfkpp ) ) &
137         CALL ctl_stop( ' except for TKE sor KPP physics, a convection scheme is', &
138         &              ' required: ln_zdfevd or ln_zdfnpc logicals' )
139
140   END SUBROUTINE zdf_init
141
142   !!======================================================================
143END MODULE zdfini
Note: See TracBrowser for help on using the repository browser.