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 1537 for trunk – NEMO

Changeset 1537 for trunk


Ignore:
Timestamp:
2009-07-24T16:22:23+02:00 (15 years ago)
Author:
ctlod
Message:

ensure the restartability of the 2nd order advection scheme,see ticket: 489

Location:
trunk/NEMO/OPA_SRC
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/OPA_SRC/DYN/dynzdf_exp.F90

    r1146 r1537  
    7373      ! ----------------------------- 
    7474      zrau0r = 1. / rau0                                   ! inverse of the reference density 
    75       zlavmr = 1. / float( n_zdfexp )                      ! inverse of the number of sub time step 
     75      zlavmr = 1. / float( nn_zdfexp )                      ! inverse of the number of sub time step 
    7676 
    7777      !                                                ! =============== 
     
    9494 
    9595         ! Time splitting loop 
    96          DO jl = 1, n_zdfexp 
     96         DO jl = 1, nn_zdfexp 
    9797 
    9898            ! First vertical derivative 
     
    104104            END DO   
    105105 
    106             ! Second vertical derivative and trend estimation at kt+l*rdt/n_zdfexp 
     106            ! Second vertical derivative and trend estimation at kt+l*rdt/nn_zdfexp 
    107107            DO jk = 1, jpkm1 
    108108               DO ji = 2, jpim1 
  • trunk/NEMO/OPA_SRC/TRA/traadv_cen2.F90

    r1528 r1537  
    3030   USE sbcrnf          ! river runoffs 
    3131   USE in_out_manager  ! I/O manager 
     32   USE iom             ! IOM library 
    3233   USE lib_mpp 
    3334   USE lbclnk          ! ocean lateral boundary condition (or mpp link) 
     
    3536   USE prtctl          ! Print control 
    3637   USE zdf_oce         ! ocean vertical physics 
     38   USE restart         ! ocean restart 
    3739 
    3840   IMPLICIT NONE 
     
    156158         !    
    157159         btr2(:,:) = 1. / ( e1t(:,:) * e2t(:,:) )        ! inverse of T-point surface 
    158             IF ( jp_cfg == 2 ) THEN 
    159             !  Increase the background in the surface layers 
    160                avmb(1) = 10.  * avmb(1)      ;      avtb(1) = 10.  * avtb(1) 
    161                avmb(2) = 10.  * avmb(2)      ;      avtb(2) = 10.  * avtb(2) 
    162                avmb(3) =  5.  * avmb(3)      ;      avtb(3) =  5.  * avtb(3) 
    163                avmb(4) =  2.5 * avmb(4)      ;      avtb(4) =  2.5 * avtb(4) 
    164             ENDIF 
     160         ! 
     161         IF( jp_cfg == 2 .AND. .NOT. ln_rstart ) THEN    ! Increase the background in the surface layers 
     162            avmb(1) = 10.  * avmb(1)      ;      avtb(1) = 10.  * avtb(1) 
     163            avmb(2) = 10.  * avmb(2)      ;      avtb(2) = 10.  * avtb(2) 
     164            avmb(3) =  5.  * avmb(3)      ;      avtb(3) =  5.  * avtb(3) 
     165            avmb(4) =  2.5 * avmb(4)      ;      avtb(4) =  2.5 * avtb(4) 
     166         ENDIF 
    165167      ENDIF 
    166168 
     
    412414      ENDIF 
    413415 
     416      ! write avmb, avtb in restart (traadv_cen2 requires a modified avmb, avtb that are 
     417      ! ---------------------------  required in restart file to ensure restartability) 
     418      ! avmb, avtb will be read in zdfini in restart case as they are used in zdftke, kpp etc... 
     419      IF( lrst_oce ) THEN 
     420         CALL iom_rstput( kt, nitrst, numrow, 'avmb', avmb ) 
     421         CALL iom_rstput( kt, nitrst, numrow, 'avtb', avtb ) 
     422      ENDIF 
     423 
    414424      IF(ln_ctl)   CALL prt_ctl( tab3d_1=ta, clinfo1=' cen2 zad  - Ta: ', mask1=tmask, & 
    415425         &                       tab3d_2=sa, clinfo2=            ' Sa: ', mask2=tmask, clinfo3='tra' ) 
  • trunk/NEMO/OPA_SRC/TRA/tranpc.F90

    r1146 r1537  
    44   !! Ocean active tracers:  non penetrative convection scheme 
    55   !!============================================================================== 
    6    !! History :  1.0  !  90-09  (G. Madec)  Original code 
    7    !!                 !  91-11  (G. Madec) 
    8    !!                 !  92-06  (M. Imbard)  periodic conditions on t and s 
    9    !!                 !  93-03  (M. Guyon)  symetrical conditions  
    10    !!                 !  96-01  (G. Madec)  statement function for e3 
    11    !!                                       suppression of common work arrays 
    12    !!            8.5  !  02-06  (G. Madec)  free form F90 
    13    !!            9.0  !  08-06  (G. Madec)  applied on ta, sa and called before tranxt in step.F90 
    14    !!---------------------------------------------------------------------- 
    15  
    16    !!---------------------------------------------------------------------- 
    17    !!   tra_npc      : apply the non penetrative convection scheme 
    18    !!   tra_npc_init : initialization and control of the scheme 
     6   !! History :  1.0  ! 1990-09  (G. Madec)  Original code 
     7   !!                 ! 1996-01  (G. Madec)  statement function for e3 
     8   !!   NEMO     1.0  ! 2002-06  (G. Madec)  free form F90 
     9   !!            3.0  ! 2008-06  (G. Madec)  applied on ta, sa and called before tranxt in step.F90 
     10   !!---------------------------------------------------------------------- 
     11 
     12   !!---------------------------------------------------------------------- 
     13   !!   tra_npc : apply the non penetrative convection scheme 
    1914   !!---------------------------------------------------------------------- 
    2015   USE oce             ! ocean dynamics and active tracers  
    2116   USE dom_oce         ! ocean space and time domain 
     17   USE zdf_oce         ! ocean vertical physics 
    2218   USE trdmod          ! ocean active tracer trends 
    2319   USE trdmod_oce      ! ocean variables trends 
     
    3127   PUBLIC   tra_npc    ! routine called by step.F90 
    3228 
    33    !!* Namelist namnpc: non penetrative convection algorithm 
    34    INTEGER ::   nnpc1 =   1   ! nnpc1   non penetrative convective scheme frequency 
    35    INTEGER ::   nnpc2 =  15   ! nnpc2   non penetrative convective scheme print frequency 
    36  
    3729   !! * Substitutions 
    3830#  include "domzgr_substitute.h90" 
    3931   !!---------------------------------------------------------------------- 
    40    !!   OPA 9.0 , LOCEAN-IPSL (2005)  
     32   !! NEMO/OPA 3.2 , LOCEAN-IPSL (2009)  
    4133   !! $Id$  
    4234   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
     
    7870      !!---------------------------------------------------------------------- 
    7971 
    80       IF( kt == nit000  )   CALL tra_npc_init   ! Initialisation 
    81  
    82       IF( MOD( kt, nnpc1 ) == 0 ) THEN 
     72      IF( MOD( kt, nn_npc ) == 0 ) THEN 
    8373 
    8474         inpcc = 0 
     
    214204         !  2. non penetrative convective scheme statistics 
    215205         !  ----------------------------------------------- 
    216          IF( nnpc2 /= 0 .AND. MOD( kt, nnpc2 ) == 0 ) THEN 
     206         IF( nn_npcp /= 0 .AND. MOD( kt, nn_npcp ) == 0 ) THEN 
    217207            IF(lwp) WRITE(numout,*)' kt=',kt, ' number of statically instable',   & 
    218208               &                   ' water column : ',inpcc, ' number of iteration : ',inpci 
     
    223213   END SUBROUTINE tra_npc 
    224214 
    225  
    226    SUBROUTINE tra_npc_init 
    227       !!---------------------------------------------------------------------- 
    228       !!                  ***  ROUTINE tra_npc_init  *** 
    229       !!                    
    230       !! ** Purpose :   initializations of the non-penetrative adjustment scheme 
    231       !!---------------------------------------------------------------------- 
    232       NAMELIST/namnpc/ nnpc1, nnpc2 
    233       ! 
    234       REWIND( numnam )           ! Namelist namzdf : vertical diffusion 
    235       READ  ( numnam, namnpc ) 
    236       ! 
    237       IF(lwp) THEN               ! Namelist print 
    238          WRITE(numout,*) 
    239          WRITE(numout,*) 'tra_npc_init : Non Penetrative Convection (npc) scheme' 
    240          WRITE(numout,*) '~~~~~~~~~~~~' 
    241          WRITE(numout,*) '       Namelist namnpc : set npc scheme parameters' 
    242          WRITE(numout,*) '          npc scheme frequency           nnpc1  = ', nnpc1 
    243          WRITE(numout,*) '          npc scheme print frequency     nnpc2  = ', nnpc2 
    244       ENDIF 
    245       ! 
    246       IF ( nnpc1 == 0 ) THEN      ! Parameter controls 
    247           IF(lwp) WRITE(numout,cform_war) 
    248           IF(lwp) WRITE(numout,*) '             nnpc1 = ', nnpc1, ' is forced to 1' 
    249           nnpc1 = 1 
    250           nwarn = nwarn + 1 
    251       ENDIF 
    252       ! 
    253    END SUBROUTINE tra_npc_init 
    254  
    255215   !!====================================================================== 
    256216END MODULE tranpc 
  • trunk/NEMO/OPA_SRC/TRA/trazdf_exp.F90

    r1438 r1537  
    9090      ! Initializations 
    9191      ! --------------- 
    92       zlavmr = 1. / float( n_zdfexp )                           ! Local constant 
     92      zlavmr = 1. / float( nn_zdfexp )                           ! Local constant 
    9393      ! 
    9494      zwy(:,:, 1 ) = 0.e0        ;   zww(:,:, 1 ) = 0.e0        ! surface boundary conditions: no flux 
     
    100100      ! ------------------- 
    101101      ! 
    102       DO jl = 1, n_zdfexp 
     102      DO jl = 1, nn_zdfexp 
    103103         !                     ! first vertical derivative 
    104104         DO jk = 2, jpk 
     
    112112         END DO 
    113113         ! 
    114          DO jk = 1, jpkm1      ! second vertical derivative   ==> tracer at kt+l*2*rdt/n_zdfexp 
     114         DO jk = 1, jpkm1      ! second vertical derivative   ==> tracer at kt+l*2*rdt/nn_zdfexp 
    115115            DO jj = 2, jpjm1  
    116116               DO ji = fs_2, fs_jpim1   ! vector opt. 
  • trunk/NEMO/OPA_SRC/ZDF/zdf_oce.F90

    r1498 r1537  
    66   !! history :  1.0  !  2002-06  (G. Madec) Original code 
    77   !!            3.2  !  2009-07  (G.Madec) addition of avm 
    8    !!---------------------------------------------------------------------- 
    9  
    108   !!---------------------------------------------------------------------- 
    119   USE par_oce         ! ocean parameters 
     
    2018#endif 
    2119 
    22    !                                          !!* namelist namzdf: vertical diffusion 
    23    LOGICAL , PUBLIC ::   ln_zdfexp = .FALSE.   !: explicit vertical diffusion scheme flag 
    24    LOGICAL , PUBLIC ::   ln_zdfevd = .TRUE.    !: convection: enhanced vertical diffusion flag 
    25    LOGICAL , PUBLIC ::   ln_zdfnpc = .FALSE.   !: convection: non-penetrative convection flag 
    26    INTEGER , PUBLIC ::   n_zdfexp = 3          !: number of sub-time step (explicit time stepping) 
    27    INTEGER , PUBLIC ::   n_evdm   = 1          !: =0/1 flag to apply enhanced avm or not 
    28    REAL(wp), PUBLIC ::   avm0  = 1.e-4_wp      !: vertical eddy viscosity (m2/s) 
    29    REAL(wp), PUBLIC ::   avt0  = 1.e-5_wp      !: vertical eddy diffusivity (m2/s) 
    30    REAL(wp), PUBLIC ::   avevd = 1._wp         !: vertical eddy coeff. for enhanced vert. diff. (m2/s) 
     20   !                                           !!* namelist nam_zdf: vertical diffusion * 
     21   REAL(wp), PUBLIC ::   rn_avm0   = 1.e-4_wp   !: vertical eddy viscosity (m2/s) 
     22   REAL(wp), PUBLIC ::   rn_avt0   = 1.e-5_wp   !: vertical eddy diffusivity (m2/s) 
     23   INTEGER , PUBLIC ::   nn_avb    =  0         !: constant or profile background on avt (=0/1) 
     24   INTEGER , PUBLIC ::   nn_havtb  = 1          !: horizontal shape or not for avtb (=0/1) 
     25   LOGICAL , PUBLIC ::   ln_zdfexp = .FALSE.    !: explicit vertical diffusion scheme flag 
     26   INTEGER , PUBLIC ::   nn_zdfexp = 3          !: number of sub-time step (explicit time stepping) 
     27   LOGICAL , PUBLIC ::   ln_zdfevd = .TRUE.     !: convection: enhanced vertical diffusion flag 
     28   INTEGER , PUBLIC ::   nn_evdm   = 1          !: =0/1 flag to apply enhanced avm or not 
     29   REAL(wp), PUBLIC ::   rn_avevd  = 1._wp      !: vertical eddy coeff. for enhanced vert. diff. (m2/s) 
     30   LOGICAL , PUBLIC ::   ln_zdfnpc = .FALSE.    !: convection: non-penetrative convection flag 
     31   INTEGER , PUBLIC ::   nn_npc    =   1        !: non penetrative convective scheme call  frequency 
     32   INTEGER , PUBLIC ::   nn_npcp   =  15        !: non penetrative convective scheme print frequency 
     33 
    3134 
    3235   REAL(wp), PUBLIC, DIMENSION        (jpk) ::   avmb, avtb   !: background profile of avm and avt 
     36   REAL(wp), PUBLIC, DIMENSION(jpi,jpj)     ::   avtb_2d      !: set in tke_init, for other modif than ice 
    3337   REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk) ::   avmu, avmv   !: vertical viscosity coeff. at uw- & vw-points   [m2/s] 
    3438   REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk) ::   avm , avt    !: vertical viscosity & diffusivity coeff. at  w-point   [m2/s] 
  • trunk/NEMO/OPA_SRC/ZDF/zdfddm.F90

    r1527 r1537  
    1111   !!   zdf_ddm_init  : read namelist and control the parameters 
    1212   !!---------------------------------------------------------------------- 
    13    !! * Modules used 
    1413   USE oce             ! ocean dynamics and tracers variables 
    1514   USE dom_oce         ! ocean space and time domain variables  
     
    2221   PRIVATE 
    2322 
    24    !! * Routine accessibility 
    25    PUBLIC zdf_ddm     ! called by step.F90 
    26  
    27    !! * Shared module variables 
    28    LOGICAL, PUBLIC, PARAMETER ::   lk_zdfddm = .TRUE.    !: double diffusive mixing flag 
    29    REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk) ::   &   !: 
    30       avs ,               &  !: salinity vertical diffusivity coeff. at w-point 
    31       rrau                   !: heat/salt buoyancy flux ratio 
    32  
    33    !! * Module variables 
    34    REAL(wp) ::            & !!! * double diffusive mixing namelist * 
    35       avts  = 1.e-4_wp ,  &  ! maximum value of avs for salt fingering 
    36       hsbfr = 1.6_wp         ! heat/salt buoyancy flux ratio 
     23   PUBLIC   zdf_ddm    ! called by step.F90 
     24 
     25   LOGICAL , PUBLIC, PARAMETER ::   lk_zdfddm = .TRUE.  !: double diffusive mixing flag 
     26 
     27   REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk) ::   avs    !: salinity vertical diffusivity coeff. at w-point 
     28   REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk) ::   rrau   !: heat/salt buoyancy flux ratio 
     29 
     30   !                                  !!* Namelist nam_ddm : double diffusive mixing * 
     31   REAL(wp) ::   rn_avts  = 1.e-4_wp   ! maximum value of avs for salt fingering 
     32   REAL(wp) ::   rn_hsbfr = 1.6_wp     ! heat/salt buoyancy flux ratio 
    3733 
    3834   !! * Substitutions 
    3935#  include "vectopt_loop_substitute.h90" 
    4036   !!---------------------------------------------------------------------- 
    41    !!   OPA 9.0 , LOCEAN-IPSL (2005)  
     37   !! NEMO/OPA 3.2 , LOCEAN-IPSL (2009)  
    4238   !! $Id$  
    43    !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt  
     39   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
    4440   !!---------------------------------------------------------------------- 
    4541 
     
    5955      !!      which is computed in rn2.F 
    6056      !!         * salt fingering (Schmitt 1981): 
    61       !!      for Rrau > 1 and rn2 > 0 : zavfs = avts / ( 1 + (Rrau/hsbfr)^6 ) 
     57      !!      for Rrau > 1 and rn2 > 0 : zavfs = rn_avts / ( 1 + (Rrau/rn_hsbfr)^6 ) 
    6258      !!      for Rrau > 1 and rn2 > 0 : zavfs = O 
    6359      !!      otherwise                : zavft = 0.7 zavs / Rrau 
     
    160156               zinr = 1./rrau(ji,jj,jk) 
    161157               ! salt fingering 
    162                zrr = rrau(ji,jj,jk)/hsbfr 
     158               zrr = rrau(ji,jj,jk)/rn_hsbfr 
    163159               zrr = zrr * zrr 
    164                zavfs = avts / ( 1 + zrr*zrr*zrr ) * zmsks(ji,jj) *zmskf(ji,jj) 
     160               zavfs = rn_avts / ( 1 + zrr*zrr*zrr ) * zmsks(ji,jj) *zmskf(ji,jj) 
    165161               zavft = 0.7 * zavfs * zinr 
    166162               ! diffusive layering 
     
    220216      !! ** Purpose :   Initialization of double diffusion mixing scheme 
    221217      !! 
    222       !! ** Method  :   Read the nammbf namelist and check the parameter values 
    223       !!      called by zdf_ddm at the first timestep (nit000) 
    224       !! 
    225       !! History : 
    226       !!   8.5  !  02-08  (G. Madec)  Original code 
    227       !!---------------------------------------------------------------------- 
    228       NAMELIST/namddm/ avts, hsbfr 
    229       !!---------------------------------------------------------------------- 
    230  
    231       ! Read Namelist namddm : double diffusion mixing scheme 
    232       ! -------------------- 
    233       REWIND ( numnam ) 
    234       READ   ( numnam, namddm ) 
    235  
    236  
    237       ! Parameter control and print 
    238       ! --------------------------- 
    239       IF(lwp) THEN 
     218      !! ** Method  :   Read the nam_ddm namelist and check the parameter values 
     219      !!              called by zdf_ddm at the first timestep (nit000) 
     220      !! 
     221      !! History :  8.5  !  02-08  (G. Madec)  Original code 
     222      !!---------------------------------------------------------------------- 
     223      NAMELIST/nam_ddm/ rn_avts, rn_hsbfr 
     224      !!---------------------------------------------------------------------- 
     225      ! 
     226      REWIND ( numnam )               ! Read Namelist nam_ddm : double diffusion mixing scheme 
     227      READ   ( numnam, nam_ddm ) 
     228      ! 
     229      IF(lwp) THEN                    ! Parameter print 
    240230         WRITE(numout,*) 
    241231         WRITE(numout,*) 'zdf_ddm : double diffusive mixing' 
    242232         WRITE(numout,*) '~~~~~~~' 
    243          WRITE(numout,*) '          Namelist namddm : set dd mixing parameter' 
    244          WRITE(numout,*) '             maximum avs for dd mixing      avts   = ', avts 
    245          WRITE(numout,*) '             heat/salt buoyancy flux ratio  hsbfr  = ', hsbfr 
     233         WRITE(numout,*) '   Namelist nam_ddm : set dd mixing parameter' 
     234         WRITE(numout,*) '      maximum avs for dd mixing      rn_avts   = ', rn_avts 
     235         WRITE(numout,*) '      heat/salt buoyancy flux ratio  rn_hsbfr  = ', rn_hsbfr 
    246236         WRITE(numout,*) 
    247237      ENDIF 
    248  
     238      ! 
    249239   END SUBROUTINE zdf_ddm_init 
    250240 
  • trunk/NEMO/OPA_SRC/ZDF/zdfevd.F90

    r1527 r1537  
    6969      avmu_evd (:,:,:) = avmu(:,:,:)  
    7070 
    71       SELECT CASE ( n_evdm ) 
     71      SELECT CASE ( nn_evdm ) 
    7272  
    7373      CASE ( 1 )           ! enhance vertical eddy viscosity and diffusivity (if rn2<-1.e-12) 
     
    8888                  IF(   MIN( rn2(ji,jj,jk),  rn2b(ji,jj,jk) ) <= -1.e-12 ) THEN 
    8989#endif 
    90                      avt (ji  ,jj  ,jk) = avevd * tmask(ji  ,jj  ,jk) 
    91                      avm (ji  ,jj  ,jk) = avevd * tmask(ji  ,jj  ,jk) 
    92                      avmu(ji  ,jj  ,jk) = avevd * umask(ji  ,jj  ,jk) 
    93                      avmu(ji-1,jj  ,jk) = avevd * umask(ji-1,jj  ,jk) 
    94                      avmv(ji  ,jj  ,jk) = avevd * vmask(ji  ,jj  ,jk) 
    95                      avmv(ji  ,jj-1,jk) = avevd * vmask(ji  ,jj-1,jk) 
     90                     avt (ji  ,jj  ,jk) = rn_avevd * tmask(ji  ,jj  ,jk) 
     91                     avm (ji  ,jj  ,jk) = rn_avevd * tmask(ji  ,jj  ,jk) 
     92                     avmu(ji  ,jj  ,jk) = rn_avevd * umask(ji  ,jj  ,jk) 
     93                     avmu(ji-1,jj  ,jk) = rn_avevd * umask(ji-1,jj  ,jk) 
     94                     avmv(ji  ,jj  ,jk) = rn_avevd * vmask(ji  ,jj  ,jk) 
     95                     avmv(ji  ,jj-1,jk) = rn_avevd * vmask(ji  ,jj-1,jk) 
    9696                  ENDIF 
    9797               END DO 
     
    112112         DO jk = 1, jpkm1                                 ! Horizontal slab 
    113113            !                                             ! =============== 
    114 !!!         WHERE( rn2(:,:,jk) <= -1.e-12 ) avt(:,:,jk) = tmask(:,:,jk) * avevd   ! agissant sur T SEUL!  
     114!!!         WHERE( rn2(:,:,jk) <= -1.e-12 ) avt(:,:,jk) = tmask(:,:,jk) * rn_avevd   ! agissant sur T SEUL!  
    115115#if defined key_vectopt_loop 
    116116            DO jj = 1, 1                     ! big loop forced 
     
    126126                  IF(   MIN( rn2(ji,jj,jk), rn2b(ji,jj,jk) ) <= -1.e-12 ) & 
    127127#endif 
    128                      avt(ji,jj,jk) = avevd * tmask(ji,jj,jk) 
     128                     avt(ji,jj,jk) = rn_avevd * tmask(ji,jj,jk) 
    129129               END DO 
    130130            END DO 
  • trunk/NEMO/OPA_SRC/ZDF/zdfini.F90

    r1533 r1537  
    2222   USE tranpc          ! convection: non penetrative adjustment 
    2323   USE ldfslp          ! iso-neutral slopes 
     24   USE restart         ! ocean restart 
    2425 
    2526   USE in_out_manager  ! I/O manager 
     27   USE iom             ! IOM library 
    2628 
    2729   IMPLICIT NONE 
     
    5153      !!   9.0  !  05-06  (C. Ethe) KPP parameterization 
    5254      !!---------------------------------------------------------------------- 
    53       !! * Local declarations 
    5455      INTEGER ::   ioptio       ! temporary scalar 
    55  
    56       !! * Namelist 
    57       NAMELIST/namzdf/ ln_zdfexp, n_zdfexp, ln_zdfevd, ln_zdfnpc,   & 
    58          &             avm0     , avt0    , avevd    , n_evdm 
    59       !!---------------------------------------------------------------------- 
    60       !!  OPA 9.0, LODYC-IPSL (2003) 
    61       !!  
     56      !! 
     57      NAMELIST/nam_zdf/ rn_avm0, rn_avt0, nn_avb, nn_havtb, ln_zdfexp, nn_zdfexp,   & 
     58         &              ln_zdfevd, nn_evdm, rn_avevd, ln_zdfnpc, nn_npc, nn_npcp 
    6259      !!---------------------------------------------------------------------- 
    6360 
    64       ! Read namzdf namelist : vertical mixing parameters 
    65       ! -------------------- 
    66       REWIND( numnam ) 
    67       READ  ( numnam, namzdf ) 
     61      REWIND( numnam )               ! Read nam_zdf namelist : vertical mixing parameters 
     62      READ  ( numnam, nam_zdf ) 
    6863 
    69       ! Parameter print 
    70       ! --------------- 
    71       IF(lwp) THEN 
     64      IF(lwp) THEN                   ! Parameter print 
    7265         WRITE(numout,*) 
    7366         WRITE(numout,*) 'zdf_init: vertical physics' 
    7467         WRITE(numout,*) '~~~~~~~~' 
    75          WRITE(numout,*) '   Namelist namzdf : set vertical mixing mixing parameters' 
     68         WRITE(numout,*) '   Namelist nam_zdf : set vertical mixing mixing parameters' 
     69         WRITE(numout,*) '      vertical eddy viscosity             rn_avm0   = ', rn_avm0 
     70         WRITE(numout,*) '      vertical eddy diffusivity           rn_avt0   = ', rn_avt0 
     71         WRITE(numout,*) '      constant background or profile      nn_avb    = ', nn_avb 
     72         WRITE(numout,*) '      horizontal variation for avtb       nn_havtb  = ', nn_havtb 
    7673         WRITE(numout,*) '      time splitting / backward scheme    ln_zdfexp = ', ln_zdfexp 
    77          WRITE(numout,*) '      number of time step                  n_zdfexp = ', n_zdfexp 
     74         WRITE(numout,*) '      number of time step                 nn_zdfexp = ', nn_zdfexp 
    7875         WRITE(numout,*) '      enhanced vertical diffusion         ln_zdfevd = ', ln_zdfevd 
    79          WRITE(numout,*) '      non-penetrative convection          ln_zdfnpc = ', ln_zdfnpc 
    80          WRITE(numout,*) '      vertical eddy viscosity             avm0      = ', avm0 
    81          WRITE(numout,*) '      vertical eddy diffusivity           avt0      = ', avt0 
    82          WRITE(numout,*) '      vertical coefficient for evd        avevd     = ', avevd 
    83          WRITE(numout,*) '         applied on momentum (=1/0)       n_evdm    = ', n_evdm 
     76         WRITE(numout,*) '         applied on momentum (=1/0)       nn_evdm   = ', nn_evdm 
     77         WRITE(numout,*) '      vertical coefficient for evd        rn_avevd  = ', rn_avevd 
     78         WRITE(numout,*) '      non-penetrative convection (npc)    ln_zdfnpc = ', ln_zdfnpc 
     79         WRITE(numout,*) '      npc call  frequency                 nn_npc    = ', nn_npc 
     80         WRITE(numout,*) '      npc print frequency                 nn_npcp   = ', nn_npcp 
    8481      ENDIF 
    8582 
     
    144141         &              ' required: ln_zdfevd or ln_zdfnpc logicals' ) 
    145142 
     143 
     144      !                               !* Background eddy viscosity and diffusivity profil 
     145      IF( nn_avb == 0 ) THEN                ! Define avmb, avtb from namelist parameter 
     146         avmb(:) = rn_avm0 
     147         avtb(:) = rn_avt0                      
     148      ELSE                                  ! Background profile of avt (fit a theoretical/observational profile (Krauss 1990) 
     149         avmb(:) = rn_avm0 
     150         avtb(:) = rn_avt0 + ( 3.0e-4 - 2 * rn_avt0 ) * 1.0e-4 * gdepw_0(:)   ! m2/s 
     151         IF(ln_sco .AND. lwp)   CALL ctl_warn( '          avtb profile not valid in sco' ) 
     152      ENDIF 
     153      ! 
     154      IF( ln_rstart ) THEN                  !  Read avmb, avtb in restart (if exist) 
     155         ! if ln_traadv_cen, avmb, avtb have been modified in traadv_cen2 module.  
     156         ! To ensure the restartability, avmb & avtb are written in the restart  
     157         ! file in traadv_cen2 end read here.  
     158         IF( iom_varid( numror, 'avmb', ldstop = .FALSE. ) > 0 ) THEN 
     159            CALL iom_get( numror, jpdom_unknown, 'avmb', avmb ) 
     160            CALL iom_get( numror, jpdom_unknown, 'avtb', avtb ) 
     161         ENDIF 
     162      ENDIF 
     163      !                                     ! 2D shape of the avtb 
     164      avtb_2d(:,:) = 1.e0                        ! uniform  
     165      ! 
     166      IF( nn_havtb == 1 ) THEN                   ! decrease avtb in the equatorial band 
     167           !  -15S -5S : linear decrease from avt0 to avt0/10. 
     168           !  -5S  +5N : cst value avt0/10. 
     169           !   5N  15N : linear increase from avt0/10, to avt0 
     170           WHERE(-15. <= gphit .AND. gphit < -5 )   avtb_2d = (1.  - 0.09 * (gphit + 15.)) 
     171           WHERE( -5. <= gphit .AND. gphit <  5 )   avtb_2d =  0.1 
     172           WHERE(  5. <= gphit .AND. gphit < 15 )   avtb_2d = (0.1 + 0.09 * (gphit -  5.)) 
     173      ENDIF 
     174      ! 
    146175   END SUBROUTINE zdf_init 
    147176 
  • trunk/NEMO/OPA_SRC/ZDF/zdfkpp.F90

    r1146 r1537  
    3636   PUBLIC   tra_kpp   ! routine called by step.F90 
    3737 
    38    LOGICAL, PUBLIC, PARAMETER ::   lk_zdfkpp = .TRUE.    !: KPP vertical mixing flag 
     38   LOGICAL , PUBLIC, PARAMETER ::   lk_zdfkpp = .TRUE.    !: KPP vertical mixing flag 
     39 
    3940   REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk) ::   ghats   !: non-local scalar mixing term (gamma/<ws>o) 
    4041   REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   &  
     
    4344      hkpp                        !: boundary layer depht 
    4445 
    45    INTEGER ::                  & !!! ** kpp namelist (namkpp) ** 
    46       nave  =  1            ,  &  ! = 0/1 flag for horizontal average on avt, avmu, avmv 
    47       navb  =  0                  ! = 0/1 flag for constant or profile background avt 
    48  
    49    REAL(wp) ::                 & !!! ** Interior Mixing  
    50       difmiw  = 1.2e-04_wp  ,  &  ! constant internal wave viscosity (m2/s) 
    51       difsiw  = 1.2e-05_wp  ,  &  ! constant internal wave diffusivity (m2/s) 
    52       Riinfty = 0.8_wp      ,  &  ! local Richardson Number limit for shear instability 
    53       difri   = 5.e-03_wp   ,  &  ! maximum shear mixing at Rig = 0    (m2/s) 
    54       bvsqcon = -1.e-09_wp  ,  &  ! Brunt-Vaisala squared (1/s**2) for maximum convection 
    55       difcon  = 1._wp             ! maximum mixing in interior convection (m2/s) 
     46   !                                        !!* Namelist nam_zdfkpp * 
     47   REAL(wp) ::   rn_difmiw  =  1.2e-04_wp    ! constant internal wave viscosity (m2/s) 
     48   REAL(wp) ::   rn_difsiw  =  1.2e-05_wp    ! constant internal wave diffusivity (m2/s) 
     49   REAL(wp) ::   rn_riinfty =  0.8_wp        ! local Richardson Number limit for shear instability 
     50   REAL(wp) ::   rn_difri   =  5.e-03_wp     ! maximum shear mixing at Rig = 0    (m2/s) 
     51   REAL(wp) ::   rn_bvsqcon = -1.e-09_wp     ! Brunt-Vaisala squared (1/s**2) for maximum convection 
     52   REAL(wp) ::   rn_difcon  =  1._wp         ! maximum mixing in interior convection (m2/s) 
     53   INTEGER  ::   nn_ave     =  1             ! = 0/1 flag for horizontal average on avt, avmu, avmv 
     54 
    5655#if defined key_zdfddm 
    5756   REAL(wp) ::                 & !!! ** Double diffusion Mixing 
     
    331330               ! Mixing due to internal waves breaking 
    332331               ! ------------------------------------- 
    333                avmu(ji,jj,jk)  = difmiw  
    334                avt (ji,jj,jk)  = difsiw              
     332               avmu(ji,jj,jk)  = rn_difmiw  
     333               avt (ji,jj,jk)  = rn_difsiw              
    335334               ! Mixing due to vertical shear instability 
    336335               ! -------------------------------------                
     
    359358                  ! LMD94, eq. 28a,b,c, figure 3 ; Rem: p1 is 3, hard coded 
    360359                  zfri  = MAX( zri , 0. ) 
    361                   zfri  = MIN( zfri / Riinfty , 1.0 ) 
     360                  zfri  = MIN( zfri / rn_riinfty , 1.0 ) 
    362361                  zfri  = ( 1.0 - zfri * zfri ) 
    363362                  zfri  = zfri * zfri  * zfri 
    364363                  ! add shear contribution to mixing coef.  
    365                   avmu(ji,jj,jk) =  avmu(ji,jj,jk) + difri * zfri    
    366                   avt (ji,jj,jk) =  avt (ji,jj,jk) + difri * zfri     
     364                  avmu(ji,jj,jk) =  avmu(ji,jj,jk) + rn_difri * zfri    
     365                  avt (ji,jj,jk) =  avt (ji,jj,jk) + rn_difri * zfri     
    367366               ENDIF 
    368367#if defined key_zdfddm  
     
    11371136#endif 
    11381137 
    1139       SELECT CASE ( nave ) 
     1138      SELECT CASE ( nn_ave ) 
    11401139         ! 
    11411140         CASE ( 0 )             ! no viscosity and diffusivity smoothing 
     
    13451344         ll_kppcustom,          &  ! 1st ocean level taken as surface layer 
    13461345         ll_kpplktb                ! Lookup table for turbul. velocity scales  
    1347  
    1348       NAMELIST/namkpp/ ln_kpprimix, difmiw, difsiw, Riinfty, difri, bvsqcon, difcon, nave, navb 
    1349  
     1346      !! 
     1347      NAMELIST/nam_kpp/ ln_kpprimix, rn_difmiw, rn_difsiw, rn_riinfty, rn_difri, rn_bvsqcon, rn_difcon, nn_ave 
    13501348      !!---------------------------------------------------------------------- 
    13511349 
    1352       ! Read Namelist namtke : Turbulente Kinetic Energy 
    1353       ! -------------------- 
    1354       REWIND ( numnam ) 
    1355       READ   ( numnam, namkpp ) 
    1356  
    1357       ! Parameter control and print 
    1358       ! --------------------------- 
    1359       REWIND( numnam ) 
    1360       READ  ( numnam, namkpp ) 
    1361  
    1362       ! Control print 
    1363       IF(lwp) THEN 
     1350      REWIND ( numnam )               ! Read Namelist namkpp : K-Profile Parameterisation 
     1351      READ   ( numnam, nam_kpp ) 
     1352 
     1353      IF(lwp) THEN                    ! Control print 
    13641354         WRITE(numout,*) 
    1365          WRITE(numout,*) 'zdf_kpp_init : kpp turbulent closure scheme' 
     1355         WRITE(numout,*) 'zdf_kpp_init : K-Profile Parameterisation' 
    13661356         WRITE(numout,*) '~~~~~~~~~~~~' 
    1367          WRITE(numout,*) '   Namelist namkpp : set tke mixing parameters' 
    1368          WRITE(numout,*) '     Shear instability mixing                 ln_kpprimix  = ', ln_kpprimix 
    1369          WRITE(numout,*) '     max. internal wave viscosity                   difmiw = ', difmiw 
    1370          WRITE(numout,*) '     max. internal wave diffusivity                 difsiw = ', difsiw 
    1371          WRITE(numout,*) '     Richardson Number limit for shear instability Riinfty = ', Riinfty 
    1372          WRITE(numout,*) '     max. shear mixing at Rig = 0                  difri   = ', difri 
    1373          WRITE(numout,*) '     Brunt-Vaisala squared for max. convection     bvsqcon = ', bvsqcon 
    1374          WRITE(numout,*) '     max. mix. in interior convec.                 difcon  = ', difcon 
    1375          WRITE(numout,*) '     horizontal average flag                        nave   = ', nave 
    1376          WRITE(numout,*) '     constant background or profile                 navb   = ', navb 
     1357         WRITE(numout,*) '   Namelist nam_kpp : set tke mixing parameters' 
     1358         WRITE(numout,*) '     Shear instability mixing                      ln_kpprimix = ', ln_kpprimix 
     1359         WRITE(numout,*) '     max. internal wave viscosity                  rn_difmiw   = ', rn_difmiw 
     1360         WRITE(numout,*) '     max. internal wave diffusivity                rn_difsiw   = ', rn_difsiw 
     1361         WRITE(numout,*) '     Richardson Number limit for shear instability rn_riinfty  = ', rn_riinfty 
     1362         WRITE(numout,*) '     max. shear mixing at Rig = 0                  rn_difri    = ', rn_difri 
     1363         WRITE(numout,*) '     Brunt-Vaisala squared for max. convection     rn_bvsqcon  = ', rn_bvsqcon 
     1364         WRITE(numout,*) '     max. mix. in interior convec.                 rn_difcon   = ', rn_difcon 
     1365         WRITE(numout,*) '     horizontal average flag                       nn_ave      = ', nn_ave 
    13771366      ENDIF 
    13781367 
     
    13891378         WRITE(numout,*) '     Lookup table for turbul. velocity scales ll_kpplktb   = ', ll_kpplktb 
    13901379         WRITE(numout,*) '     1st ocean level taken as surface layer   ll_kppcustom = ', ll_kppcustom 
    1391          WRITE(numout,*) ' ' 
    13921380      ENDIF 
    13931381       
     
    13971385            WRITE(numout,*) '    Double diffusion mixing on temperature and salinity ' 
    13981386            WRITE(numout,*) '    CAUTION : done in routine zdfkpp, not in routine zdfddm ' 
    1399             WRITE(numout,*) ' ' 
    14001387         ENDIF 
    14011388      ENDIF 
     
    14091396 
    14101397      IF(lwp) THEN 
     1398         WRITE(numout,*) 
    14111399         WRITE(numout,*) '     Constant value for unreso. turbul. velocity shear Vtc = ', Vtc 
    14121400         WRITE(numout,*) '     Non-dimensional coef. for nonlocal transport      rcg = ', rcg 
    1413          WRITE(numout,*) ' ' 
    14141401       ENDIF 
    14151402 
     
    14241411      ! ------------------- 
    14251412       
    1426       SELECT CASE ( nave ) 
     1413      SELECT CASE ( nn_ave ) 
    14271414 
    14281415      CASE ( 0 )                ! no horizontal average 
     
    14871474 
    14881475      CASE DEFAULT 
    1489          WRITE(ctmp1,*) '          bad flag value for nave = ', nave 
     1476         WRITE(ctmp1,*) '          bad flag value for nn_ave = ', nn_ave 
    14901477         CALL ctl_stop( ctmp1 ) 
    14911478 
    14921479      END SELECT 
    1493  
    1494  
    14951480  
    1496       ! Background eddy viscosity and diffusivity profil 
    1497       ! ------------------------------------------------ 
    1498       IF( navb == 0 ) THEN 
    1499          !   Define avmb, avtb from namelist parameter 
    1500          avmb(:) = avm0 
    1501          avtb(:) = avt0 
    1502       ELSE 
    1503          !   Background profile of avt (fit a theoretical/observational profile (Krauss 1990)  
    1504          avmb(:) = avm0 
    1505          avtb(:) = 1.e-5 + 2.8e-8 * gdepw_0(:)   ! m2/s 
    1506       ENDIF 
    1507  
    1508       !   Increase the background in the surface layers 
    1509 !!      avmb(1) = 1. * avmb(1)      ;      avtb(1) = 1. * avtb(1) 
    1510 !!      avmb(2) = 1. * avmb(2)      ;      avtb(2) = 1. * avtb(2) 
    1511 !!      avmb(3) = 1. * avmb(3)      ;      avtb(3) = 1. * avtb(3) 
    1512 !!      avmb(4) = 1. * avmb(4)      ;      avtb(4) = 1. * avtb(4) 
    1513  
    1514  
    15151481      ! Initialization of vertical eddy coef. to the background value 
    15161482      ! ------------------------------------------------------------- 
  • trunk/NEMO/OPA_SRC/ZDF/zdfric.F90

    r1152 r1537  
    1313   !!   zdf_ric_init : initialization, namelist read, & parameters control 
    1414   !!---------------------------------------------------------------------- 
    15    !! * Modules used 
    1615   USE oce             ! ocean dynamics and tracers variables 
    1716   USE dom_oce         ! ocean space and time domain variables 
    1817   USE zdf_oce         ! ocean vertical physics 
    19 !  USE phycst          ! physical constants 
    2018   USE in_out_manager  ! I/O manager 
    2119   USE lbclnk          ! ocean lateral boundary condition (or mpp link) 
     
    2422   PRIVATE 
    2523 
    26    !! * Routine accessibility 
    27    PUBLIC zdf_ric   ! called by step.F90 
    28  
    29    !! * Shared module variables 
    30    LOGICAL, PUBLIC, PARAMETER ::   lk_zdfric = .TRUE.    !: Richardson vertical mixing flag 
    31  
    32    !! * Module variables 
    33    INTEGER ::               & !!! namric   richardson number dependent Kz 
    34       nric  = 2                ! coefficient of the parameterization 
    35    REAL(wp) ::              & !!! namric   richardson number dependent Kz 
    36       avmri = 100.e-4_wp ,  &  ! maximum value of the vertical eddy viscosity 
    37       alp   =   5._wp          ! coefficient of the parameterization 
    38    REAL(wp), DIMENSION(jpi,jpj,jpk) ::   & 
    39       tmric                    ! coef. for the horizontal mean at t-point 
     24   PUBLIC   zdf_ric    ! called by step.F90 
     25 
     26   LOGICAL, PUBLIC, PARAMETER ::   lk_zdfric = .TRUE.   !: Richardson vertical mixing flag 
     27 
     28   !                                    !!* Namelist nam_ric : Richardson number dependent Kz * 
     29   INTEGER  ::   nn_ric  = 2             ! coefficient of the parameterization 
     30   REAL(wp) ::   rn_avmri = 100.e-4_wp   ! maximum value of the vertical eddy viscosity 
     31   REAL(wp) ::   rn_alp   =   5._wp      ! coefficient of the parameterization 
     32 
     33   REAL(wp), DIMENSION(jpi,jpj,jpk) ::   tmric                    ! coef. for the horizontal mean at t-point 
    4034 
    4135   !! * Substitutions 
    4236#  include "domzgr_substitute.h90" 
    4337   !!---------------------------------------------------------------------- 
    44    !!---------------------------------------------------------------------- 
    45    !!  OPA 9.0 , LOCEAN-IPSL (2005)  
     38   !! NEMO/OPA 3.2 , LOCEAN-IPSL (2009)  
    4639   !! $Id$  
    47    !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 
     40   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
    4841   !!---------------------------------------------------------------------- 
    4942CONTAINS 
     
    6053      !!      coefficients are given by: 
    6154      !!              avm = avm0 + avmb 
    62       !!              avt = avm0 / (1 + alp*ri) 
     55      !!              avt = avm0 / (1 + rn_alp*ri) 
    6356      !!      with    ri  = N^2 / dz(u)**2 
    6457      !!                  = e3w**2 * rn2/[ mi( dk(ub) )+mj( dk(vb) ) ] 
    65       !!              avm0= avmri / (1 + alp*ri)**nric 
    66       !!      Where ri is the before local Richardson number, avmri the maximum 
     58      !!              avm0= rn_avmri / (1 + rn_alp*ri)**nn_ric 
     59      !!      Where ri is the before local Richardson number, rn_avmri the maximum 
    6760      !!      value reaches by the vertical eddy coefficients, avmb and avtb 
    6861      !!      the background (or minimum) values of these coefficients for 
    69       !!      momemtum and tracers, and alp, nric are adjustable parameters. 
     62      !!      momemtum and tracers, and rn_alp, nn_ric are adjustable parameters. 
    7063      !!      typical values used are : avm0=1.e-2 m2/s, avmb=1.e-6 m2/s 
    71       !!      avtb=1.e-7 m2/s, alp=5. and nric=2. 
     64      !!      avtb=1.e-7 m2/s, rn_alp=5. and nn_ric=2. 
    7265      !!      this formulation needs ri>=0 : ri is set to zero if dz(rau)<0. 
    7366      !!      a numerical threshold is impose on the vertical shear (1.e-20) 
     
    8679      !!   8.5  !  02-06  (G. Madec)  F90: Free form and module 
    8780      !!---------------------------------------------------------------------- 
    88       !! * Arguments 
    8981      INTEGER, INTENT( in ) ::   kt         ! ocean time-step indexocean time step 
    90  
    91       !! * Local declarations 
    92       INTEGER ::   ji, jj, jk               ! dummy loop indices 
    93       REAL(wp) ::   & 
    94          zcoef, zdku, zdkv, zri, z05alp     ! temporary scalars 
     82      !! 
     83      INTEGER  ::   ji, jj, jk               ! dummy loop indices 
     84      REAL(wp) ::   zcoef, zdku, zdkv, zri, z05alp     ! temporary scalars 
    9585      REAL(wp), DIMENSION(jpi,jpj) ::   zwx ! temporary workspace 
     86      !!---------------------------------------------------------------------- 
    9687 
    9788      IF( kt == nit000  ) CALL zdf_ric_init            ! Initialization (first time-step only) 
     
    10899               ! shear of horizontal velocity 
    109100               zdku = zcoef * (  ub(ji-1,jj,jk-1) + ub(ji,jj,jk-1)   & 
    110                                 -ub(ji-1,jj,jk  ) - ub(ji,jj,jk  )  ) 
     101                  &             -ub(ji-1,jj,jk  ) - ub(ji,jj,jk  )  ) 
    111102               zdkv = zcoef * (  vb(ji,jj-1,jk-1) + vb(ji,jj,jk-1)   & 
    112                                 -vb(ji,jj-1,jk  ) - vb(ji,jj,jk  )  ) 
     103                  &             -vb(ji,jj-1,jk  ) - vb(ji,jj,jk  )  ) 
    113104               ! richardson number (minimum value set to zero) 
    114105               zri = rn2(ji,jj,jk) / ( zdku*zdku + zdkv*zdkv + 1.e-20 ) 
     
    124115         ! ------------------------------------------------------- 
    125116         ! Eddy viscosity coefficients 
    126          z05alp = 0.5 * alp 
     117         z05alp = 0.5 * rn_alp 
    127118         DO jj = 1, jpjm1 
    128119            DO ji = 1, jpim1 
    129120               avmu(ji,jj,jk) = umask(ji,jj,jk)   & 
    130                               * avmri / ( 1. + z05alp*( zwx(ji+1,jj)+zwx(ji,jj) ) )**nric 
     121                  &           * rn_avmri / ( 1. + z05alp*( zwx(ji+1,jj)+zwx(ji,jj) ) )**nn_ric 
    131122               avmv(ji,jj,jk) = vmask(ji,jj,jk)   & 
    132                               * avmri / ( 1. + z05alp*( zwx(ji,jj+1)+zwx(ji,jj) ) )**nric 
     123                  &           * rn_avmri / ( 1. + z05alp*( zwx(ji,jj+1)+zwx(ji,jj) ) )**nn_ric 
    133124            END DO 
    134125         END DO 
     
    137128         DO jj = 2, jpjm1 
    138129            DO ji = 2, jpim1 
    139                avt(ji,jj,jk) = tmric(ji,jj,jk) / ( 1. + alp * zwx(ji,jj) )   & 
    140                              * (  avmu(ji,jj,jk) + avmu(ji-1, jj ,jk)        & 
    141                                 + avmv(ji,jj,jk) + avmv( ji ,jj-1,jk)  )     & 
    142                              + avtb(jk) * tmask(ji,jj,jk) 
     130               avt(ji,jj,jk) = tmric(ji,jj,jk) / ( 1. + rn_alp * zwx(ji,jj) )   & 
     131                  &          * (  avmu(ji,jj,jk) + avmu(ji-1, jj ,jk)        & 
     132                  &             + avmv(ji,jj,jk) + avmv( ji ,jj-1,jk)  )     & 
     133                  &          + avtb(jk) * tmask(ji,jj,jk) 
    143134            END DO 
    144135         END DO 
     
    180171      !!  8.5  !  02-06  (G. Madec)  original code 
    181172      !!---------------------------------------------------------------------- 
    182       !! * local declarations 
    183173      INTEGER :: ji, jj, jk        ! dummy loop indices 
    184  
    185       NAMELIST/namric/ avmri, alp, nric 
    186       !!---------------------------------------------------------------------- 
    187       !!  OPA 8.5, LODYC-IPSL (2002) 
    188       !!---------------------------------------------------------------------- 
    189  
    190       ! Read Namelist namric : richardson number dependent Kz 
    191       ! -------------------- 
    192       REWIND ( numnam ) 
    193       READ   ( numnam, namric ) 
    194  
    195  
    196       ! Parameter control and print 
    197       ! --------------------------- 
    198       ! Control print 
    199       IF(lwp) WRITE(numout,*) 
    200       IF(lwp) WRITE(numout,*) 'zdf_ric : Ri depend vertical mixing scheme' 
    201       IF(lwp) WRITE(numout,*) '=======' 
    202       IF(lwp) WRITE(numout,*) '          Namelist namric : set Kz(Ri) parameters' 
    203  
    204       IF(lwp) THEN 
     174      !! 
     175      NAMELIST/nam_ric/ rn_avmri, rn_alp, nn_ric 
     176      !!---------------------------------------------------------------------- 
     177 
     178      REWIND ( numnam )               ! Read Namelist nam_ric : richardson number dependent Kz 
     179      READ   ( numnam, nam_ric ) 
     180 
     181      IF(lwp) THEN                    ! Control print 
    205182         WRITE(numout,*) 
    206          WRITE(numout,*) '             maximum vertical viscosity     avmri  = ', avmri 
    207          WRITE(numout,*) '             coefficient                    alp    = ', alp 
    208          WRITE(numout,*) '             coefficient                    nric   = ', nric 
    209          WRITE(numout,*) 
     183         WRITE(numout,*) 'zdf_ric : Ri depend vertical mixing scheme' 
     184         WRITE(numout,*) '~~~~~~~' 
     185         WRITE(numout,*) '   Namelist namric : set Kz(Ri) parameters' 
     186         WRITE(numout,*) '      maximum vertical viscosity     rn_avmri = ', rn_avmri 
     187         WRITE(numout,*) '      coefficient                    rn_alp   = ', rn_alp 
     188         WRITE(numout,*) '      coefficient                    nn_ric   = ', nn_ric 
    210189      ENDIF 
    211  
    212  
    213       ! Work arrays for Ri number formulation 
    214       ! ------------------------------------- 
    215  
    216       ! background eddy viscosity and diffusivity profiles 
    217       avmb(:) = avm0 
    218       avtb(:) = avt0 
    219  
    220       ! background profile of avm (fit the theoretical/observational 
    221       !     profile shown by Krauss (1990) and avt 
    222 !!!   avtb(:) = 1.e-5 + 2.8e-8 * gdepw(:) ! m2/s 
    223  
    224       ! Increase the background in the surface layers 
    225       avmb(1) = 10.  * avmb(1)      ;      avtb(1) = 10.  * avtb(1) 
    226       avmb(2) = 10.  * avmb(2)      ;      avtb(2) = 10.  * avtb(2) 
    227       avmb(3) =  5.  * avmb(3)      ;      avtb(3) =  5.  * avtb(3) 
    228       avmb(4) =  2.5 * avmb(4)      ;      avtb(4) =  2.5 * avtb(4) 
    229190 
    230191      ! weighting mean array tmric for 4 T-points which accounts for coastal boundary conditions. 
     
    238199         END DO 
    239200      END DO 
    240  
    241201      tmric(:,1,:) = 0.e0 
    242202 
  • trunk/NEMO/OPA_SRC/ZDF/zdftke.F90

    r1533 r1537  
    1414   !!            8.1  !  1999-01  (E. Stretta) new option for the mixing length 
    1515   !!  NEMO      1.0  !  2002-06  (G. Madec) add tke_init routine 
    16    !!             -   !  2002-08  (G. Madec)  rn_cri and Free form, F90 
    1716   !!             -   !  2004-10  (C. Ethe )  1D configuration 
    1817   !!            2.0  !  2006-07  (S. Masson)  distributed restart using iom 
     
    6463#endif 
    6564 
    66 !!gm  - variables to be suppressed from the namelist: 
    67    LOGICAL  ::   ln_rstke = .FALSE.         ! =T restart with tke from a run without tke 
    68    INTEGER  ::   nn_itke  = 50              ! number of restart iterative loops 
    69    INTEGER  ::   nn_ave   =  1              ! horizontal average or not on avt, avmu, avmv (=0/1) 
    70    REAL(wp) ::   rn_cri   = 2._wp / 9._wp   ! critic Richardson number 
    71    REAL(wp) ::   rn_efave = 1._wp           ! coefficient for ave : ave=rn_efave*avm 
    72 !!gm end 
    73  
    74 !!gm  - variables to be added in the namelist (with a larger default value) 
    75    REAL(wp) ::   rn_bshear = 1.e-20   ! backgrounf shear (>0) 
    76 !!gm 
    77  
    78    !                                       !!! ** Namelist  namtke  ** 
     65   !                                       !!! ** Namelist  nam_tke  ** 
    7966   LOGICAL  ::   ln_mxl0  = .FALSE.         ! mixing length scale surface value as function of wind stress or not 
    8067   INTEGER  ::   nn_mxl   =  2              ! type of mixing length (=0/1/2/3) 
    81 !!gm to be change: the ref value of lmin0 and lmin 
    8268   REAL(wp) ::   rn_lmin0 = 0.4_wp          ! surface  min value of mixing length   [m] 
    8369   REAL(wp) ::   rn_lmin  = 0.1_wp          ! interior min value of mixing length   [m] 
    8470   INTEGER  ::   nn_pdl   =  1              ! Prandtl number or not (ratio avt/avm) (=0/1) 
    85    INTEGER  ::   nn_avb   =  0              ! constant or profile background on avt (=0/1) 
    8671   REAL(wp) ::   rn_ediff = 0.1_wp          ! coefficient for avt: avt=rn_ediff*mxl*sqrt(e) 
    8772   REAL(wp) ::   rn_ediss = 0.7_wp          ! coefficient of the Kolmogoroff dissipation  
     
    8974   REAL(wp) ::   rn_emin  = 0.7071e-6_wp    ! minimum value of tke           [m2/s2] 
    9075   REAL(wp) ::   rn_emin0 = 1.e-4_wp        ! surface minimum value of tke   [m2/s2] 
    91    INTEGER  ::   nn_havtb = 1               ! horizontal shape or not for avtb (=0/1) 
     76   REAL(wp) ::   rn_bshear= 1.e-20          ! background shear (>0) 
    9277   INTEGER  ::   nn_etau  = 0               ! type of depth penetration of surface tke (=0/1/2) 
    9378   INTEGER  ::   nn_htau  = 0               ! type of tke profile of penetration (=0/1/2) 
     
    9984 
    10085   REAL(wp), DIMENSION(jpi,jpj)     ::   htau      ! depth of tke penetration (nn_htau) 
    101    REAL(wp), DIMENSION(jpi,jpj)     ::   avtb_2d   ! set in tke_init, for other modif than ice 
    10286   REAL(wp), DIMENSION(jpi,jpj,jpk) ::   en        ! now turbulent kinetic energy   [m2/s2] 
    10387   REAL(wp), DIMENSION(jpi,jpj,jpk) ::   dissl     ! now mixing lenght of dissipation 
     
    10892   !!---------------------------------------------------------------------- 
    10993   !! NEMO/OPA 3.2 , LOCEAN-IPSL (2009)  
    110    !! $Id:$ 
     94   !! $Id: zdftke2.F90 1201 2008-09-24 13:24:21Z rblod $ 
    11195   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
    11296   !!---------------------------------------------------------------------- 
     
    632616      !!              viscosity when using a tke turbulent closure scheme 
    633617      !! 
    634       !! ** Method  :   Read the namtke namelist and check the parameters 
     618      !! ** Method  :   Read the nam_tke namelist and check the parameters 
    635619      !!              called at the first timestep (nit000) 
    636620      !! 
    637       !! ** input   :   Namlist namtke 
     621      !! ** input   :   Namlist nam_tke 
    638622      !! 
    639623      !! ** Action  :   Increase by 1 the nstop flag is setting problem encounter 
     
    641625      INTEGER ::   ji, jj, jk   ! dummy loop indices 
    642626      !! 
    643       NAMELIST/namtke/ ln_rstke, rn_ediff, rn_ediss, rn_ebb  , rn_efave, rn_emin,   & 
    644          &             rn_emin0, rn_cri  , nn_itke , nn_mxl  , nn_pdl  , nn_ave ,   & 
    645          &             nn_avb  , ln_mxl0 , rn_lmin , rn_lmin0, nn_havtb, nn_etau,   & 
    646          &             nn_htau , rn_efr  , ln_lc  , rn_lc  
    647       !!---------------------------------------------------------------------- 
    648  
    649       REWIND ( numnam )               !* Read Namelist namtke : Turbulente Kinetic Energy 
    650       READ   ( numnam, namtke ) 
     627      NAMELIST/nam_tke/ rn_ediff, rn_ediss , rn_ebb, rn_emin,   & 
     628         &              rn_emin0, rn_bshear, nn_mxl, ln_mxl0,   & 
     629         &              rn_lmin , rn_lmin0 , nn_pdl, nn_etau,   & 
     630         &              nn_htau , rn_efr   , ln_lc , rn_lc  
     631      !!---------------------------------------------------------------------- 
     632 
     633      REWIND ( numnam )               !* Read Namelist nam_tke : Turbulente Kinetic Energy 
     634      READ   ( numnam, nam_tke ) 
    651635       
    652636      ri_cri = 2. / ( 2. + rn_ediss / rn_ediff )      ! resulting critical Richardson number 
     
    656640         WRITE(numout,*) 'zdf_tke : tke turbulent closure scheme - initialisation' 
    657641         WRITE(numout,*) '~~~~~~~~' 
    658          WRITE(numout,*) '          Namelist namtke : set tke mixing parameters' 
    659          WRITE(numout,*) '             restart with tke from no tke              ln_rstke = ', ln_rstke 
     642         WRITE(numout,*) '          Namelist nam_tke : set tke mixing parameters' 
    660643         WRITE(numout,*) '             coef. to compute avt                      rn_ediff = ', rn_ediff 
    661644         WRITE(numout,*) '             Kolmogoroff dissipation coef.             rn_ediss = ', rn_ediss 
     
    663646         WRITE(numout,*) '             minimum value of tke                      rn_emin  = ', rn_emin 
    664647         WRITE(numout,*) '             surface minimum value of tke              rn_emin0 = ', rn_emin0 
     648         WRITE(numout,*) '             background shear (>0)                     rn_bshear= ', rn_bshear 
    665649         WRITE(numout,*) '             mixing length type                        nn_mxl   = ', nn_mxl 
    666650         WRITE(numout,*) '             prandl number flag                        nn_pdl   = ', nn_pdl 
    667          WRITE(numout,*) '             constant background or profile            nn_avb   = ', nn_avb 
    668651         WRITE(numout,*) '             surface mixing length = F(stress) or not  ln_mxl0  = ', ln_mxl0 
    669652         WRITE(numout,*) '             surface  mixing length minimum value      rn_lmin0 = ', rn_lmin0 
    670653         WRITE(numout,*) '             interior mixing length minimum value      rn_lmin0 = ', rn_lmin0 
    671          WRITE(numout,*) '             horizontal variation for avtb             nn_havtb = ', nn_havtb 
    672654         WRITE(numout,*) '             test param. to add tke induced by wind    nn_etau  = ', nn_etau 
    673655         WRITE(numout,*) '             flag for computation of exp. tke profile  nn_htau  = ', nn_htau 
     
    686668 
    687669      IF( nn_etau == 2  )   CALL zdf_mxl( nit000 )      ! Initialization of nmln  
    688  
    689       !                               !* Background eddy viscosity and diffusivity profil 
    690       IF( nn_avb == 0 ) THEN                ! Define avmb, avtb from namelist parameter 
    691          avmb(:) = avm0 
    692          avtb(:) = avt0 
    693       ELSE                                  ! Background profile of avt (fit a theoretical/observational profile (Krauss 1990)  
    694          avmb(:) = avm0 
    695          avtb(:) = avt0 + ( 3.0e-4 - 2 * avt0 ) * 1.0e-4 * gdepw_0(:)   ! m2/s 
    696          IF(ln_sco .AND. lwp)   CALL ctl_warn( '          avtb profile not valid in sco' ) 
    697       ENDIF 
    698       ! 
    699       !                                     ! 2D shape of the avtb 
    700       avtb_2d(:,:) = 1.e0                        ! uniform  
    701       ! 
    702       IF( nn_havtb == 1 ) THEN                   ! decrease avtb in the equatorial band 
    703            !  -15S -5S : linear decrease from avt0 to avt0/10. 
    704            !  -5S  +5N : cst value avt0/10. 
    705            !   5N  15N : linear increase from avt0/10, to avt0 
    706            WHERE(-15. <= gphit .AND. gphit < -5 )   avtb_2d = (1.  - 0.09 * (gphit + 15.)) 
    707            WHERE( -5. <= gphit .AND. gphit <  5 )   avtb_2d =  0.1 
    708            WHERE(  5. <= gphit .AND. gphit < 15 )   avtb_2d = (0.1 + 0.09 * (gphit -  5.)) 
    709       ENDIF 
    710670 
    711671      !                               !* depth of penetration of surface tke 
     
    751711     !! ** Method  :   use of IOM library 
    752712     !!                if the restart does not contain TKE, en is either  
    753      !!                set to rn_emin or recomputed (nn_itke/=0) 
     713     !!                set to rn_emin or recomputed  
    754714     !!---------------------------------------------------------------------- 
    755715     INTEGER         , INTENT(in) ::   kt         ! ocean time-step 
  • trunk/NEMO/OPA_SRC/ZDF/zdftke_old.F90

    r1532 r1537  
    6565#endif 
    6666 
    67    !                                       !!! ** Namelist  namtke  ** 
     67   !                                       !!! ** Namelist  nam_tke  ** 
    6868   LOGICAL  ::   ln_rstke = .FALSE.         ! =T restart with tke from a run without tke 
    6969   LOGICAL  ::   ln_mxl0  = .FALSE.         ! mixing length scale surface value as function of wind stress or not 
     
    7373   INTEGER  ::   nn_pdl   =  1              ! Prandtl number or not (ratio avt/avm) (=0/1) 
    7474   INTEGER  ::   nn_ave   =  1              ! horizontal average or not on avt, avmu, avmv (=0/1) 
    75    INTEGER  ::   nn_avb   =  0              ! constant or profile background on avt (=0/1) 
    7675   REAL(wp) ::   rn_ediff = 0.1_wp          ! coefficient for avt: avt=rn_ediff*mxl*sqrt(e) 
    7776   REAL(wp) ::   rn_ediss = 0.7_wp          ! coefficient of the Kolmogoroff dissipation  
     
    8180   REAL(wp) ::   rn_emin0 = 1.e-4_wp        ! surface minimum value of tke (m2/s2) 
    8281   REAL(wp) ::   rn_cri   = 2._wp / 9._wp   ! critic Richardson number 
    83    INTEGER  ::   nn_havtb = 1               ! horizontal shape or not for avtb (=0/1) 
    8482   INTEGER  ::   nn_etau  = 0               ! type of depth penetration of surface tke (=0/1/2) 
    8583   INTEGER  ::   nn_htau  = 0               ! type of tke profile of penetration (=0/1/2) 
     
    8886   REAL(wp) ::   rn_efr   = 1.0_wp          ! fraction of TKE surface value which penetrates in the ocean 
    8987   REAL(wp) ::   rn_lc    = 0.15_wp         ! coef to compute vertical velocity of Langmuir cells 
    90  
    91    REAL(wp), DIMENSION (jpi,jpj) ::   avtb_2d   ! set in tke_init, for other modif than ice 
    9288 
    9389   !! * Substitutions 
     
    714710      !!      viscosity when using a tke turbulent closure scheme 
    715711      !! 
    716       !! ** Method  :   Read the namtke namelist and check the parameters 
     712      !! ** Method  :   Read the nam_tke namelist and check the parameters 
    717713      !!      called at the first timestep (nit000) 
    718714      !! 
    719       !! ** input   :   Namlist namtke 
     715      !! ** input   :   Namlist nam_tke 
    720716      !! 
    721717      !! ** Action  :   Increase by 1 the nstop flag is setting problem encounter 
     
    731727# endif 
    732728      !! 
    733       NAMELIST/namtke/ ln_rstke, rn_ediff, rn_ediss, rn_ebb  , rn_efave, rn_emin,   & 
    734          &             rn_emin0, rn_cri  , nn_itke , nn_mxl  , nn_pdl  , nn_ave ,   & 
    735          &             nn_avb  , ln_mxl0 , rn_lmin , rn_lmin0, nn_havtb, nn_etau,   & 
    736          &             nn_htau , rn_efr  , ln_lc   , rn_lc  
     729      NAMELIST/nam_tke/ ln_rstke, rn_ediff, rn_ediss, rn_ebb  , rn_efave, rn_emin,   & 
     730         &              rn_emin0, rn_cri  , nn_itke , nn_mxl  , nn_pdl  , nn_ave ,   & 
     731         &              ln_mxl0 , rn_lmin , rn_lmin0, nn_etau,   & 
     732         &              nn_htau , rn_efr  , ln_lc   , rn_lc  
    737733      !!---------------------------------------------------------------------- 
    738734 
    739       ! Read Namelist namtke : Turbulente Kinetic Energy 
     735      ! Read Namelist nam_tke : Turbulente Kinetic Energy 
    740736      ! -------------------- 
    741737      REWIND ( numnam ) 
    742       READ   ( numnam, namtke ) 
     738      READ   ( numnam, nam_tke ) 
    743739 
    744740      ! Compute boost associated with the Richardson critic 
     
    756752         WRITE(numout,*) 'zdf_tke_init : tke turbulent closure scheme (old scheme)' 
    757753         WRITE(numout,*) '~~~~~~~~~~~~' 
    758          WRITE(numout,*) '          Namelist namtke : set tke mixing parameters' 
     754         WRITE(numout,*) '          Namelist nam_tke : set tke mixing parameters' 
    759755         WRITE(numout,*) '             restart with tke from no tke              ln_rstke = ', ln_rstke 
    760756         WRITE(numout,*) '             coef. to compute avt                      rn_ediff = ', rn_ediff 
     
    770766         WRITE(numout,*) '             critic Richardson nb                      rn_cri   = ', rn_cri 
    771767         WRITE(numout,*) '                and its associated coeff.              eboost   = ', eboost 
    772          WRITE(numout,*) '             constant background or profile            nn_avb   = ', nn_avb 
    773768         WRITE(numout,*) '             surface mixing length = F(stress) or not  ln_mxl0  = ', ln_mxl0 
    774769         WRITE(numout,*) '             surface  mixing length minimum value      rn_lmin0 = ', rn_lmin0 
    775770         WRITE(numout,*) '             interior mixing length minimum value      rn_lmin0 = ', rn_lmin0 
    776          WRITE(numout,*) '             horizontal variation for avtb             nn_havtb = ', nn_havtb 
    777771         WRITE(numout,*) '             test param. to add tke induced by wind    nn_etau  = ', nn_etau 
    778772         WRITE(numout,*) '             flag for computation of exp. tke profile  nn_htau  = ', nn_htau 
     
    852846         ! 
    853847      END SELECT 
    854  
    855  
    856       ! Background eddy viscosity and diffusivity profil 
    857       ! ------------------------------------------------ 
    858       IF( nn_avb == 0 ) THEN      ! Define avmb, avtb from namelist parameter 
    859          avmb(:) = avm0 
    860          avtb(:) = avt0 
    861       ELSE                      ! Background profile of avt (fit a theoretical/observational profile (Krauss 1990)  
    862          avmb(:) = avm0 
    863          avtb(:) = avt0 + ( 3.0e-4 - 2 * avt0 ) * 1.0e-4 * gdepw_0(:)   ! m2/s 
    864          IF(ln_sco .AND. lwp)   CALL ctl_warn( '          avtb profile not valid in sco' ) 
    865       ENDIF 
    866       ! 
    867       !                         ! 2D shape of the avtb 
    868       avtb_2d(:,:) = 1.e0             ! uniform  
    869       ! 
    870       IF( nn_havtb == 1 ) THEN      ! decrease avtb in the equatorial band 
    871            !  -15S -5S : linear decrease from avt0 to avt0/10. 
    872            !  -5S  +5N : cst value avt0/10. 
    873            !   5N  15N : linear increase from avt0/10, to avt0 
    874            WHERE(-15. <= gphit .AND. gphit < -5 )   avtb_2d = (1.  - 0.09 * (gphit + 15.)) 
    875            WHERE( -5. <= gphit .AND. gphit <  5 )   avtb_2d =  0.1 
    876            WHERE(  5. <= gphit .AND. gphit < 15 )   avtb_2d = (0.1 + 0.09 * (gphit -  5.)) 
    877       ENDIF 
    878848 
    879849      ! Initialization of vertical eddy coef. to the background value 
  • trunk/NEMO/OPA_SRC/ZDF/zdftmx.F90

    r1527 r1537  
    320320      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  zpc      ! power consumption 
    321321      !! 
    322       NAMELIST/namtmx/ rn_htmx, rn_n2min, rn_tfe, rn_me, ln_tmx_itf, rn_tfe_itf 
    323       !!---------------------------------------------------------------------- 
    324  
    325       IF(lwp) THEN 
     322      NAMELIST/nam_tmx/ rn_htmx, rn_n2min, rn_tfe, rn_me, ln_tmx_itf, rn_tfe_itf 
     323      !!---------------------------------------------------------------------- 
     324 
     325      REWIND ( numnam )              ! Read Namelist namtmx : Tidal Mixing 
     326      READ   ( numnam, nam_tmx ) 
     327 
     328      IF(lwp) THEN                   ! Control print 
    326329         WRITE(numout,*) 
    327330         WRITE(numout,*) 'zdf_tmx_init : tidal mixing' 
    328331         WRITE(numout,*) '~~~~~~~~~~~~' 
     332         WRITE(numout,*) '   Namelist namtmx : set tidal mixing parameters' 
     333         WRITE(numout,*) '      Vertical decay scale for turbulence   = ', rn_htmx  
     334         WRITE(numout,*) '      Brunt-Vaisala frequency threshold     = ', rn_n2min 
     335         WRITE(numout,*) '      Tidal dissipation efficiency          = ', rn_tfe 
     336         WRITE(numout,*) '      Mixing efficiency                     = ', rn_me 
     337         WRITE(numout,*) '      ITF specific parameterisation         = ', ln_tmx_itf 
     338         WRITE(numout,*) '      ITF tidal dissipation efficiency      = ', rn_tfe_itf 
    329339      ENDIF 
    330340 
    331       ! Read Namelist namtmx : Tidal Mixing 
    332       ! -------------------- 
    333       REWIND ( numnam ) 
    334       READ   ( numnam, namtmx ) 
    335  
    336       ! Control print 
    337       IF(lwp) THEN 
    338          WRITE(numout,*) '          Namelist namtmx : set tidal mixing parameters' 
    339          WRITE(numout,*) '             Vertical decay scale for turbulence   = ', rn_htmx  
    340          WRITE(numout,*) '             Brunt-Vaisala frequency threshold     = ', rn_n2min 
    341          WRITE(numout,*) '             Tidal dissipation efficiency          = ', rn_tfe 
    342          WRITE(numout,*) '             Mixing efficiency                     = ', rn_me 
    343          WRITE(numout,*) '             ITF specific parameterisation         = ', ln_tmx_itf 
    344          WRITE(numout,*) '             ITF tidal dissipation efficiency      = ', rn_tfe_itf 
    345          WRITE(numout,*) 
    346       ENDIF 
    347  
    348       IF( ln_tmx_itf ) THEN   ! read the Indonesian Through Flow mask 
     341      IF( ln_tmx_itf ) THEN          ! read the Indonesian Through Flow mask 
    349342         CALL iom_open('mask_itf',inum) 
    350343         CALL iom_get (inum, jpdom_data, 'tmaskitf',mask_itf,1) !  
  • trunk/NEMO/OPA_SRC/step.F90

    r1533 r1537  
    205205      IF( lk_zdfkpp     )   CALL zdf_kpp    ( kstp )  ! KPP closure scheme for Kz 
    206206      IF( lk_zdfcst     )   THEN                      ! Constant Kz (reset avt, avm[uv] to the background value) 
    207          avt (:,:,:) = avt0 * tmask(:,:,:) 
    208          avmu(:,:,:) = avm0 * umask(:,:,:) 
    209          avmv(:,:,:) = avm0 * vmask(:,:,:) 
     207         avt (:,:,:) = rn_avt0 * tmask(:,:,:) 
     208         avmu(:,:,:) = rn_avm0 * umask(:,:,:) 
     209         avmv(:,:,:) = rn_avm0 * vmask(:,:,:) 
    210210      ENDIF 
    211211      IF( ln_rnf_mouth ) THEN                         ! increase diffusivity at rivers mouths 
Note: See TracChangeset for help on using the changeset viewer.