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

Last change on this file since 1156 was 1156, checked in by rblod, 16 years ago

Update Id and licence information, see ticket #210

  • 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
63      ! Read namzdf namelist : vertical mixing parameters
64      ! --------------------
65      REWIND( numnam )
66      READ  ( numnam, namzdf )
67
68      ! Parameter print
69      ! ---------------
70      IF(lwp) THEN
71         WRITE(numout,*)
72         WRITE(numout,*) 'zdf_init: vertical physics'
73         WRITE(numout,*) '~~~~~~~~'
74         WRITE(numout,*) '   Namelist namzdf : set vertical mixing mixing parameters'
75         WRITE(numout,*) '      time splitting / backward scheme    ln_zdfexp = ', ln_zdfexp
76         WRITE(numout,*) '      number of time step                  n_zdfexp = ', n_zdfexp
77         WRITE(numout,*) '      enhanced vertical diffusion         ln_zdfevd = ', ln_zdfevd
78         WRITE(numout,*) '      non-penetrative convection          ln_zdfnpc = ', ln_zdfnpc
79         WRITE(numout,*) '      vertical eddy viscosity             avm0      = ', avm0
80         WRITE(numout,*) '      vertical eddy diffusivity           avt0      = ', avt0
81         WRITE(numout,*) '      vertical coefficient for evd        avevd     = ', avevd
82         WRITE(numout,*) '         applied on momentum (=1/0)       n_evdm    = ', n_evdm
83      ENDIF
84
85      ! Parameter & logicals controls
86      ! -----------------------------
87      ! ... check of vertical mixing scheme on tracers
88      !           ==> will be done in trazdf module
89
90      ! ... check of mixing coefficient
91      IF(lwp) WRITE(numout,*)
92      IF(lwp) WRITE(numout,*) '          vertical mixing option :'
93      ioptio = 0
94      IF( lk_zdfcst ) THEN
95         IF(lwp) WRITE(numout,*) '             constant eddy diffusion coefficients'
96         ioptio = ioptio+1
97      ENDIF
98      IF( lk_zdfric ) THEN
99         IF(lwp) WRITE(numout,*) '             Richardson dependent eddy coefficients'
100         ioptio = ioptio+1
101      ENDIF
102      IF( lk_zdftke ) THEN
103         IF(lwp) WRITE(numout,*) '             TKE dependent eddy coefficients'
104         ioptio = ioptio+1
105      ENDIF
106      IF( lk_zdfkpp ) THEN
107         IF(lwp) WRITE(numout,*) '             KPP dependent eddy coefficients'
108         ioptio = ioptio+1
109      ENDIF
110      IF( ioptio == 0 .OR. ioptio > 1 .AND. .NOT. lk_esopa ) &
111         CALL ctl_stop( ' one and only one vertical diffusion option has to be defined ' )
112
113      ! ... Convection
114      IF(lwp) WRITE(numout,*)
115      IF(lwp) WRITE(numout,*) '          convection :'
116      ioptio = 0
117      IF( ln_zdfnpc ) THEN
118         IF(lwp) WRITE(numout,*) '             use non penetrative convective scheme'
119         ioptio = ioptio+1
120      ENDIF
121      IF( ln_zdfevd ) THEN
122         IF(lwp) WRITE(numout,*) '             use enhanced vertical dif. scheme'
123         ioptio = ioptio+1
124      ENDIF
125      IF( lk_zdftke ) THEN
126         IF(lwp) WRITE(numout,*) '             use the 1.5 turbulent closure'
127      ENDIF
128      IF( lk_zdfkpp ) THEN
129         IF(lwp) WRITE(numout,*) '             use the KPP closure scheme'
130         IF(lk_mpp) THEN
131            IF(lwp) WRITE(numout,cform_err)
132            IF(lwp) WRITE(numout,*) '             The KPP scheme is not ready to run in MPI'
133         ENDIF
134      ENDIF
135      IF ( ioptio > 1 .AND. .NOT. lk_esopa ) &
136           CALL ctl_stop( ' chose between ln_zdfnpc', '           and ln_zdfevd' )
137      IF( ioptio == 0 .AND. .NOT.( lk_zdftke .OR. lk_zdfkpp ) ) &
138         CALL ctl_stop( ' except for TKE sor KPP physics, a convection scheme is', &
139         &              ' required: ln_zdfevd or ln_zdfnpc logicals' )
140
141   END SUBROUTINE zdf_init
142
143   !!======================================================================
144END MODULE zdfini
Note: See TracBrowser for help on using the repository browser.