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.
ldfdyn_oce.F90 in branches/2011/dev_r2802_NOCL_Smagorinsky/NEMOGCM/NEMO/OPA_SRC/LDF – NEMO

source: branches/2011/dev_r2802_NOCL_Smagorinsky/NEMOGCM/NEMO/OPA_SRC/LDF/ldfdyn_oce.F90 @ 2887

Last change on this file since 2887 was 2887, checked in by hliu, 13 years ago

addition and modification of files for Smagorinsky method. for Maria Luneva

  • Property svn:keywords set to Id
File size: 3.5 KB
Line 
1MODULE ldfdyn_oce
2   !!======================================================================
3   !!                  ***  MODULE  ldfdyn_oce  ***
4   !! Ocean physics:  lateral momentum mixing coefficient defined in memory
5   !!======================================================================
6   !! History :  1.0  ! 2002-11  (G. Madec)  F90: Free form and module
7   !!----------------------------------------------------------------------
8   USE par_oce        ! ocean parameters
9   USE in_out_manager ! I/O manager
10   USE lib_mpp         ! MPP library
11
12   IMPLICIT NONE
13   PUBLIC
14
15   !                                                  !!* Namelist namdyn_ldf : lateral mixing *
16   LOGICAL , PUBLIC ::   ln_dynldf_lap   = .TRUE.      !: laplacian operator
17   LOGICAL , PUBLIC ::   ln_dynldf_bilap = .FALSE.     !: bilaplacian operator
18   LOGICAL , PUBLIC ::   ln_dynldf_level = .FALSE.     !: iso-level direction
19   LOGICAL , PUBLIC ::   ln_dynldf_hor   = .TRUE.      !: horizontal (geopotential) direction
20   LOGICAL , PUBLIC ::   ln_dynldf_iso   = .FALSE.     !: iso-neutral direction
21   REAL(wp), PUBLIC ::   rn_ahm_0_lap    = 40000._wp   !: lateral laplacian eddy viscosity (m2/s)
22   REAL(wp), PUBLIC ::   rn_ahmb_0       =     0._wp   !: lateral laplacian background eddy viscosity (m2/s)
23   REAL(wp), PUBLIC ::   rn_ahm_0_blp    =     0._wp   !: lateral bilaplacian eddy viscosity (m4/s)
24   REAL(wp), PUBLIC ::   ahm0, ahmb0, ahm0_blp         !: OLD namelist names
25   REAL(wp), PUBLIC ::   cmsmag1          = 3._wp       !: constant in laplacian Smagorinsky viscosity
26   REAL(wp), PUBLIC ::   cmsmag2          = 3._wp       !: constant in bilaplacian Smagorinsky viscosity
27   !                                                                                  !!! eddy coeff. at U-,V-,W-pts [m2/s]
28#if defined key_dynldf_c3d
29   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   ahm1, ahm2, ahm3, ahm4   !: ** 3D coefficients **
30#elif defined key_dynldf_c2d
31   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   ahm1, ahm2, ahm3, ahm4   !: ** 2D coefficients **
32#elif defined key_dynldf_c1d
33   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)     ::   ahm1, ahm2, ahm3, ahm4   !: ** 2D coefficients **
34#else
35   REAL(wp), PUBLIC                                      ::   ahm1, ahm2, ahm3, ahm4   !: ** 0D coefficients **
36#endif
37
38   !!----------------------------------------------------------------------
39   !! NEMO/OPA 4.0 , NEMO Consortium (2011)
40   !! $Id$
41   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
42   !!----------------------------------------------------------------------
43CONTAINS
44
45   INTEGER FUNCTION ldfdyn_oce_alloc()
46      !!----------------------------------------------------------------------
47      !!                 ***  FUNCTION ldfdyn_oce_alloc  ***
48      !!----------------------------------------------------------------------
49      ldfdyn_oce_alloc = 0
50#if defined key_dynldf_c3d
51      ALLOCATE( ahm1(jpi,jpj,jpk) , ahm2(jpi,jpj,jpk) , ahm3(jpi,jpj,jpk) , ahm4(jpi,jpj,jpk) , STAT=ldfdyn_oce_alloc )
52#elif defined key_dynldf_c2d
53      ALLOCATE( ahm1(jpi,jpj    ) , ahm2(jpi,jpj    ) , ahm3(jpi,jpj    ) , ahm4(jpi,jpj    ) , STAT=ldfdyn_oce_alloc )
54#elif defined key_dynldf_c1d
55      ALLOCATE( ahm1(        jpk) , ahm2(        jpk) , ahm3(        jpk) , ahm4(        jpk) , STAT=ldfdyn_oce_alloc )
56#endif
57      IF( ldfdyn_oce_alloc /= 0 )   CALL ctl_warn('ldfdyn_oce_alloc: failed to allocate arrays')
58      !
59   END FUNCTION ldfdyn_oce_alloc
60
61   !!======================================================================
62END MODULE ldfdyn_oce
Note: See TracBrowser for help on using the repository browser.