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.
Changeset 8882 for branches/2017/dev_CNRS_2017/NEMOGCM/NEMO/OPA_SRC/ZDF/zdf_oce.F90 – NEMO

Ignore:
Timestamp:
2017-12-01T18:44:09+01:00 (6 years ago)
Author:
flavoni
Message:

dev_CNRS_2017 branch: merged dev_r7881_ENHANCE09_RK3 with trunk r8864

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_CNRS_2017/NEMOGCM/NEMO/OPA_SRC/ZDF/zdf_oce.F90

    r7646 r8882  
    44   !! Ocean physics : define vertical mixing variables 
    55   !!===================================================================== 
    6    !! history :  1.0  !  2002-06  (G. Madec) Original code 
    7    !!            3.2  !  2009-07  (G.Madec) addition of avm 
     6   !! history :  1.0  !  2002-06  (G. Madec)  Original code 
     7   !!            3.2  !  2009-07  (G. Madec)  addition of avm 
     8   !!            4.0  !  2017-05  (G. Madec)  avm and drag coef. defined at t-point 
    89   !!---------------------------------------------------------------------- 
    910   USE par_oce        ! ocean parameters 
     
    1617   PUBLIC  zdf_oce_alloc    ! Called in nemogcm.F90 
    1718 
    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 * 
     19   !                            !!* namelist namzdf: vertical physics * 
     20   !                             ! vertical closure scheme flags 
     21   LOGICAL , PUBLIC ::   ln_zdfcst   !: constant coefficients 
     22   LOGICAL , PUBLIC ::   ln_zdfric   !: Richardson depend coefficients 
     23   LOGICAL , PUBLIC ::   ln_zdftke   !: Turbulent Kinetic Energy closure 
     24   LOGICAL , PUBLIC ::   ln_zdfgls   !: Generic Length Sclare closure 
     25   !                             ! convection 
     26   LOGICAL , PUBLIC ::   ln_zdfevd   !: convection: enhanced vertical diffusion flag 
     27   INTEGER , PUBLIC ::      nn_evdm     !: =0/1 flag to apply enhanced avm or not 
     28   REAL(wp), PUBLIC ::      rn_evd      !: vertical eddy coeff. for enhanced vert. diff. (m2/s) 
     29   LOGICAL , PUBLIC ::   ln_zdfnpc   !: convection: non-penetrative convection flag 
     30   INTEGER , PUBLIC ::      nn_npc      !: non penetrative convective scheme call  frequency 
     31   INTEGER , PUBLIC ::      nn_npcp     !: non penetrative convective scheme print frequency 
     32   !                             ! double diffusion 
     33   LOGICAL , PUBLIC ::   ln_zdfddm   !: double diffusive mixing flag 
     34   REAL(wp), PUBLIC ::      rn_avts     !: maximum value of avs for salt fingering 
     35   REAL(wp), PUBLIC ::      rn_hsbfr    !: heat/salt buoyancy flux ratio 
     36   !                             ! gravity wave-induced vertical mixing 
     37   LOGICAL , PUBLIC ::   ln_zdfswm   !: surface  wave-induced mixing flag 
     38   LOGICAL , PUBLIC ::   ln_zdfiwm   !: internal wave-induced mixing flag 
     39   !                             ! coefficients  
    2540   REAL(wp), PUBLIC ::   rn_avm0     !: vertical eddy viscosity (m2/s) 
    2641   REAL(wp), PUBLIC ::   rn_avt0     !: vertical eddy diffusivity (m2/s) 
    2742   INTEGER , PUBLIC ::   nn_avb      !: constant or profile background on avt (=0/1) 
    28    INTEGER , PUBLIC ::   nn_havtb    !: horizontal shape or not for avtb (=0/1) 
    29    LOGICAL , PUBLIC ::   ln_zdfexp   !: explicit vertical diffusion scheme flag 
    30    INTEGER , PUBLIC ::   nn_zdfexp   !: number of sub-time step (explicit time stepping) 
    31    LOGICAL , PUBLIC ::   ln_zdfevd   !: convection: enhanced vertical diffusion flag 
    32    INTEGER , PUBLIC ::   nn_evdm     !: =0/1 flag to apply enhanced avm or not 
    33    REAL(wp), PUBLIC ::   rn_avevd    !: vertical eddy coeff. for enhanced vert. diff. (m2/s) 
    34    LOGICAL , PUBLIC ::   ln_zdfnpc   !: convection: non-penetrative convection flag 
    35    INTEGER , PUBLIC ::   nn_npc      !: non penetrative convective scheme call  frequency 
    36    INTEGER , PUBLIC ::   nn_npcp     !: non penetrative convective scheme print frequency 
    37    LOGICAL , PUBLIC ::   ln_zdfqiao  !: Enhanced wave vertical mixing Qiao(2010) formulation flag 
     43   INTEGER , PUBLIC ::   nn_havtb    !: horizontal shape or not for avtb (=0/1)   !                             ! convection 
    3844 
    3945 
    40    REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:)     ::   avmb , avtb    !: background profile of avm and avt 
    41    REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:,:)   ::   avtb_2d        !: horizontal shape of background Kz profile 
    42    REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:,:)   ::   bfrua, bfrva   !: Bottom friction coefficients set in zdfbfr 
    43    REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:,:)   ::   tfrua, tfrva   !: top friction coefficients set in zdfbfr 
    44    REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:,:,:) ::   avmu , avmv    !: vertical viscosity coef at uw- & vw-pts       [m2/s] 
    45    REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:,:,:) ::   avm  , avt     !: vertical viscosity & diffusivity coef at w-pt [m2/s] 
    46    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   avt_k , avm_k  ! not enhanced Kz 
    47    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   avmu_k, avmv_k ! not enhanced Kz 
    48    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   en              !: now turbulent kinetic energy   [m2/s2] 
     46   REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:,:,:) ::   avm, avt, avs  !: vertical mixing coefficients (w-point) [m2/s] 
     47   REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:,:,:) ::   avm_k , avt_k  !: Kz computed by turbulent closure alone [m2/s] 
     48   REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:,:,:) ::   en             !: now turbulent kinetic energy          [m2/s2] 
     49   REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:)     ::   avmb , avtb    !: background profile of avm and avt      [m2/s] 
     50   REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:,:)   ::   avtb_2d        !: horizontal shape of background Kz profile [-] 
    4951 
    5052   !!---------------------------------------------------------------------- 
    51    !! NEMO/OPA 4.0 , NEMO Consortium (2011) 
     53   !! NEMO/OPA 4.0 , NEMO Consortium (2017) 
    5254   !! $Id$  
    5355   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     
    6062      !!---------------------------------------------------------------------- 
    6163      ! 
    62       ALLOCATE(avmb(jpk) , bfrua(jpi,jpj) ,                         & 
    63          &     avtb(jpk) , bfrva(jpi,jpj) , avtb_2d(jpi,jpj) ,      & 
    64          &     tfrua(jpi, jpj), tfrva(jpi, jpj)              ,      & 
    65          &     avmu  (jpi,jpj,jpk), avm   (jpi,jpj,jpk)      ,      & 
    66          &     avmv  (jpi,jpj,jpk), avt   (jpi,jpj,jpk)      ,      & 
    67          &     avt_k (jpi,jpj,jpk), avm_k (jpi,jpj,jpk)      ,      &  
    68          &     avmu_k(jpi,jpj,jpk), avmv_k(jpi,jpj,jpk)      ,      & 
    69          &     en    (jpi,jpj,jpk), STAT = zdf_oce_alloc ) 
     64      ALLOCATE( avm (jpi,jpj,jpk) , avm_k(jpi,jpj,jpk) , avs(jpi,jpj,jpk) ,   & 
     65         &      avt (jpi,jpj,jpk) , avt_k(jpi,jpj,jpk) , en (jpi,jpj,jpk) ,   &  
     66         &      avmb(jpk)         , avtb(jpk)          , avtb_2d(jpi,jpj) , STAT = zdf_oce_alloc ) 
    7067         ! 
    7168      IF( zdf_oce_alloc /= 0 )   CALL ctl_warn('zdf_oce_alloc: failed to allocate arrays') 
Note: See TracChangeset for help on using the changeset viewer.