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.
zdf_oce.F90 in branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/ZDF – NEMO

source: branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/ZDF/zdf_oce.F90 @ 2590

Last change on this file since 2590 was 2590, checked in by trackstand2, 13 years ago

Merge branch 'dynamic_memory' into master-svn-dyn

  • Property svn:keywords set to Id
File size: 3.8 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
11   IMPLICIT NONE
12   PRIVATE
13
14   ! Routine accessibility
15   PUBLIC  zdf_oce_alloc    ! Called in nemogcm.F90
16
17#if defined key_zdfcst   ||   defined key_esopa
18   LOGICAL, PARAMETER, PUBLIC ::   lk_zdfcst        = .TRUE.         !: constant vertical mixing flag
19#else
20   LOGICAL, PARAMETER, PUBLIC ::   lk_zdfcst        = .FALSE.        !: constant vertical mixing flag
21#endif
22
23   !                                           !!* namelist namzdf: vertical diffusion *
24   REAL(wp), PUBLIC ::   rn_avm0   = 1.e-4_wp   !: vertical eddy viscosity (m2/s)
25   REAL(wp), PUBLIC ::   rn_avt0   = 1.e-5_wp   !: vertical eddy diffusivity (m2/s)
26   INTEGER , PUBLIC ::   nn_avb    =  0         !: constant or profile background on avt (=0/1)
27   INTEGER , PUBLIC ::   nn_havtb  = 1          !: horizontal shape or not for avtb (=0/1)
28   LOGICAL , PUBLIC ::   ln_zdfexp = .FALSE.    !: explicit vertical diffusion scheme flag
29   INTEGER , PUBLIC ::   nn_zdfexp = 3          !: number of sub-time step (explicit time stepping)
30   LOGICAL , PUBLIC ::   ln_zdfevd = .TRUE.     !: convection: enhanced vertical diffusion flag
31   INTEGER , PUBLIC ::   nn_evdm   = 1          !: =0/1 flag to apply enhanced avm or not
32   REAL(wp), PUBLIC ::   rn_avevd  = 1._wp      !: vertical eddy coeff. for enhanced vert. diff. (m2/s)
33   LOGICAL , PUBLIC ::   ln_zdfnpc = .FALSE.    !: convection: non-penetrative convection flag
34   INTEGER , PUBLIC ::   nn_npc    =   1        !: non penetrative convective scheme call  frequency
35   INTEGER , PUBLIC ::   nn_npcp   =  15        !: non penetrative convective scheme print frequency
36
37
38   REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(    :) ::   avmb , avtb    !: background profile of avm and avt
39   REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(  :,:) ::   avtb_2d        !: set in tke_init, for other modif than ice
40   REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(  :,:) ::   bfrua, bfrva   !: Bottom friction coefficients set in zdfbfr
41   REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:,:,:) ::   avmu , avmv    !: vertical viscosity coef at uw- & vw-pts        [m2/s]
42   REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:,:,:) ::   avm  , avt     !: vertical viscosity & diffusivity coef at w-pt  [m2/s]
43 
44   !!----------------------------------------------------------------------
45   !! NEMO/OPA 3.3 , NEMO Consortium (2010)
46   !! $Id$
47   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
48   !!======================================================================
49CONTAINS
50
51   FUNCTION zdf_oce_alloc()
52      !!----------------------------------------------------------------------
53      !!            *** Routine zdf_oce_alloc ***
54      !!----------------------------------------------------------------------
55      USE in_out_manager, ONLY: ctl_warn
56      IMPLICIT none
57      INTEGER zdf_oce_alloc
58      !!----------------------------------------------------------------------
59
60      ALLOCATE(avmb(jpk), avtb(jpk), avtb_2d(jpi,jpj), &
61               bfrua(jpi,jpj), bfrva(jpi,jpj),         &
62               avmu(jpi,jpj,jpk), avmv(jpi,jpj,jpk),   &
63               avm(jpi,jpj,jpk), avt(jpi,jpj,jpk),     &
64               Stat = zdf_oce_alloc )
65
66      IF(zdf_oce_alloc /= 0)THEN
67         CALL ctl_warn('zdf_oce_alloc: failed to allocate arrays.')
68      END IF
69
70   END FUNCTION zdf_oce_alloc
71
72END MODULE zdf_oce
Note: See TracBrowser for help on using the repository browser.