source: branches/2017/dev_r7881_HPC09_ZDF/NEMOGCM/NEMO/OPA_SRC/ZDF/zdf_oce.F90 @ 7931

Last change on this file since 7931 was 7931, checked in by gm, 3 years ago

#1880 (HPC-09): remove key_zdfddm + phasing with last changes of HPC08 branch

  • Property svn:keywords set to Id
File size: 5.4 KB
Line 
1MODULE zdf_oce
2   !!======================================================================
3   !!              ***  MODULE  zdf_oce  ***
4   !! Ocean physics : define vertical mixing variables
5   !!=====================================================================
6   !! history :  1.0  !  2002-06  (G. Madec) Original code
7   !!            3.2  !  2009-07  (G.Madec) addition of avm
8   !!----------------------------------------------------------------------
9   USE par_oce        ! ocean parameters
10   USE in_out_manager ! I/O manager
11   USE lib_mpp        ! MPP library
12
13   IMPLICIT NONE
14   PRIVATE
15
16   PUBLIC  zdf_oce_alloc    ! Called in nemogcm.F90
17
18#if defined key_zdfcst
19   LOGICAL, PARAMETER, PUBLIC ::   lk_zdfcst        = .TRUE.         !: constant vertical mixing flag
20#else
21   LOGICAL, PARAMETER, PUBLIC ::   lk_zdfcst        = .FALSE.        !: constant vertical mixing flag
22#endif
23
24   !                                 !!* namelist namzdf: vertical diffusion *
25!!gm
26   !                             ! vertical closure scheme flags
27   LOGICAL , PUBLIC ::   ln_zdfcst   !: constant coefficients
28   LOGICAL , PUBLIC ::   ln_zdfric   !: Richardson depend coefficients
29   LOGICAL , PUBLIC ::   ln_zdftke   !: Turbulent Kinetic Energy closure
30   LOGICAL , PUBLIC ::   ln_zdfgls   !: Generic Length Sclare closure
31   !                             ! tidal induced mixing   
32   LOGICAL , PUBLIC ::   ln_zdftmx   !: tidal mixing parameterization flag
33   !                             ! double diffusion
34   LOGICAL , PUBLIC ::   ln_zdfddm   !: double diffusive mixing flag
35   REAL(wp), PUBLIC ::      rn_avts     !: maximum value of avs for salt fingering
36   REAL(wp), PUBLIC ::      rn_hsbfr    !: heat/salt buoyancy flux ratio
37!!gm
38   LOGICAL , PUBLIC ::   ln_zdfexp   !: explicit vertical diffusion scheme flag
39   INTEGER , PUBLIC ::   nn_zdfexp   !: number of sub-time step (explicit time stepping)
40   LOGICAL , PUBLIC ::   ln_zdfevd   !: convection: enhanced vertical diffusion flag
41   INTEGER , PUBLIC ::      nn_evdm     !: =0/1 flag to apply enhanced avm or not
42   REAL(wp), PUBLIC ::      rn_evd      !: vertical eddy coeff. for enhanced vert. diff. (m2/s)
43   LOGICAL , PUBLIC ::   ln_zdfnpc   !: convection: non-penetrative convection flag
44   INTEGER , PUBLIC ::      nn_npc      !: non penetrative convective scheme call  frequency
45   INTEGER , PUBLIC ::      nn_npcp     !: non penetrative convective scheme print frequency
46   !                             ! Surface wave-induced mixing
47   LOGICAL , PUBLIC ::   ln_zdfqiao  !: Enhanced wave vertical mixing Qiao(2010) formulation flag
48   !                             ! coefficients
49   REAL(wp), PUBLIC ::   rn_avm0     !: vertical eddy viscosity (m2/s)
50   REAL(wp), PUBLIC ::   rn_avt0     !: vertical eddy diffusivity (m2/s)
51   INTEGER , PUBLIC ::   nn_avb      !: constant or profile background on avt (=0/1)
52   INTEGER , PUBLIC ::   nn_havtb    !: horizontal shape or not for avtb (=0/1)   !                             ! convection
53
54
55   REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:,:,:) ::   avt  , avs     !: vertical eddy diffusivity coef at w-pt [m2/s]
56
57   REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:)     ::   avmb , avtb    !: background profile of avm and avt
58   REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:,:)   ::   avtb_2d        !: horizontal shape of background Kz profile
59   REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:,:)   ::   bfrua, bfrva   !: Bottom friction coefficients set in zdfbfr
60   REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:,:)   ::   tfrua, tfrva   !: top friction coefficients set in zdfbfr
61   REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:,:,:) ::   avmu , avmv    !: vertical viscosity coef at uw- & vw-pts       [m2/s]
62   REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:,:,:) ::   avm            !: vertical viscosity & diffusivity coef at w-pt [m2/s]
63   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   avt_k , avm_k  ! not enhanced Kz
64   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   avmu_k, avmv_k ! not enhanced Kz
65   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   en              !: now turbulent kinetic energy   [m2/s2]
66
67   !!----------------------------------------------------------------------
68   !! NEMO/OPA 4.0 , NEMO Consortium (2011)
69   !! $Id$
70   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
71   !!----------------------------------------------------------------------
72CONTAINS
73
74   INTEGER FUNCTION zdf_oce_alloc()
75      !!----------------------------------------------------------------------
76      !!            *** FUNCTION zdf_oce_alloc ***
77      !!----------------------------------------------------------------------
78      !
79      ALLOCATE(avmb(jpk) , bfrua(jpi,jpj) ,                         &
80         &     avtb(jpk) , bfrva(jpi,jpj) , avtb_2d(jpi,jpj) ,      &
81         &     tfrua(jpi, jpj), tfrva(jpi, jpj)              ,      &
82         &     avmu  (jpi,jpj,jpk), avm   (jpi,jpj,jpk)      ,      &
83         &     avmv  (jpi,jpj,jpk), avt   (jpi,jpj,jpk)      , avs   (jpi,jpj,jpk),          &
84         &     avt_k (jpi,jpj,jpk), avm_k (jpi,jpj,jpk)      ,      & 
85         &     avmu_k(jpi,jpj,jpk), avmv_k(jpi,jpj,jpk)      ,      &
86         &     en    (jpi,jpj,jpk), STAT = zdf_oce_alloc )
87         !
88      IF( zdf_oce_alloc /= 0 )   CALL ctl_warn('zdf_oce_alloc: failed to allocate arrays')
89      !
90   END FUNCTION zdf_oce_alloc
91
92   !!======================================================================
93END MODULE zdf_oce
Note: See TracBrowser for help on using the repository browser.