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

Last change on this file since 719 was 719, checked in by ctlod, 17 years ago

get back to the nemo_v2_3 version for trunk

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 5.9 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   !!----------------------------------------------------------------------
34   
35CONTAINS
36
37   SUBROUTINE zdf_init
38      !!----------------------------------------------------------------------
39      !!                  ***  ROUTINE zdf_init  ***
40      !!
41      !! ** Purpose :   initializations of the vertical ocean physics
42      !!
43      !! ** Method  :   Read namelist namzdf, control logicals
44      !!
45      !! History :
46      !!        !  97-06  (G. Madec)  Original code from inimix
47      !!   8.5  !  02-08  (G. Madec)  F90 : free form
48      !!   9.0  !  05-06  (C. Ethe) KPP parameterization
49      !!----------------------------------------------------------------------
50      !! * Local declarations
51      INTEGER ::   ioptio       ! temporary scalar
52
53      !! * Namelist
54      NAMELIST/namzdf/ ln_zdfexp, n_zdfexp, ln_zdfevd, ln_zdfnpc,   &
55         &             avm0     , avt0    , avevd    , n_evdm
56      !!----------------------------------------------------------------------
57      !!  OPA 9.0, LODYC-IPSL (2003)
58      !!----------------------------------------------------------------------
59
60      ! Read namzdf namelist : vertical mixing parameters
61      ! --------------------
62      REWIND( numnam )
63      READ  ( numnam, namzdf )
64
65      ! Parameter print
66      ! ---------------
67      IF(lwp) THEN
68         WRITE(numout,*)
69         WRITE(numout,*) 'zdf_init: vertical physics'
70         WRITE(numout,*) '~~~~~~~~'
71         WRITE(numout,*) '   Namelist namzdf : set vertical mixing mixing parameters'
72         WRITE(numout,*) '      time splitting / backward scheme    ln_zdfexp = ', ln_zdfexp
73         WRITE(numout,*) '      number of time step                  n_zdfexp = ', n_zdfexp
74         WRITE(numout,*) '      enhanced vertical diffusion         ln_zdfevd = ', ln_zdfevd
75         WRITE(numout,*) '      non-penetrative convection          ln_zdfnpc = ', ln_zdfnpc
76         WRITE(numout,*) '      vertical eddy viscosity             avm0      = ', avm0
77         WRITE(numout,*) '      vertical eddy diffusivity           avt0      = ', avt0
78         WRITE(numout,*) '      vertical coefficient for evd        avevd     = ', avevd
79         WRITE(numout,*) '         applied on momentum (=1/0)       n_evdm    = ', n_evdm
80      ENDIF
81
82      ! Parameter & logicals controls
83      ! -----------------------------
84      ! ... check of vertical mixing scheme on tracers
85      !           ==> will be done in trazdf module
86
87      ! ... check of mixing coefficient
88      IF(lwp) WRITE(numout,*)
89      IF(lwp) WRITE(numout,*) '          vertical mixing option :'
90      ioptio = 0
91      IF( lk_zdfcst ) THEN
92         IF(lwp) WRITE(numout,*) '             constant eddy diffusion coefficients'
93         ioptio = ioptio+1
94      ENDIF
95      IF( lk_zdfric ) THEN
96         IF(lwp) WRITE(numout,*) '             Richardson dependent eddy coefficients'
97         ioptio = ioptio+1
98      ENDIF
99      IF( lk_zdftke ) THEN
100         IF(lwp) WRITE(numout,*) '             TKE dependent eddy coefficients'
101         ioptio = ioptio+1
102      ENDIF
103      IF( lk_zdfkpp ) THEN
104         IF(lwp) WRITE(numout,*) '             KPP dependent eddy coefficients'
105         ioptio = ioptio+1
106      ENDIF
107      IF( ioptio == 0 .OR. ioptio > 1 .AND. .NOT. lk_esopa ) &
108         CALL ctl_stop( ' one and only one vertical diffusion option has to be defined ' )
109
110      ! ... Convection
111      IF(lwp) WRITE(numout,*)
112      IF(lwp) WRITE(numout,*) '          convection :'
113      ioptio = 0
114      IF( ln_zdfnpc ) THEN
115         IF(lwp) WRITE(numout,*) '             use non penetrative convective scheme'
116         ioptio = ioptio+1
117      ENDIF
118      IF( ln_zdfevd ) THEN
119         IF(lwp) WRITE(numout,*) '             use enhanced vertical dif. scheme'
120         ioptio = ioptio+1
121      ENDIF
122      IF( lk_zdftke ) THEN
123         IF(lwp) WRITE(numout,*) '             use the 1.5 turbulent closure'
124      ENDIF
125      IF( lk_zdfkpp ) THEN
126         IF(lwp) WRITE(numout,*) '             use the KPP closure scheme'
127         IF(lk_mpp) THEN
128            IF(lwp) WRITE(numout,cform_err)
129            IF(lwp) WRITE(numout,*) '             The KPP scheme is not ready to run in MPI'
130         ENDIF
131      ENDIF
132      IF ( ioptio > 1 .AND. .NOT. lk_esopa ) &
133           CALL ctl_stop( ' chose between ln_zdfnpc', '           and ln_zdfevd' )
134      IF( ioptio == 0 .AND. .NOT.( lk_zdftke .OR. lk_zdfkpp ) ) &
135         CALL ctl_stop( ' except for TKE sor KPP physics, a convection scheme is', &
136         &              ' required: ln_zdfevd or ln_zdfnpc logicals' )
137
138   END SUBROUTINE zdf_init
139
140   !!======================================================================
141END MODULE zdfini
Note: See TracBrowser for help on using the repository browser.