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 6225 for branches/2014/dev_r4704_NOC5_MPP_BDY_UPDATE/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftmx.F90 – NEMO

Ignore:
Timestamp:
2016-01-08T10:35:19+01:00 (8 years ago)
Author:
jamesharle
Message:

Update MPP_BDY_UPDATE branch to be consistent with head of trunk

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2014/dev_r4704_NOC5_MPP_BDY_UPDATE/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftmx.F90

    r4624 r6225  
    88   !!            3.3  !  2010-10  (C. Ethe, G. Madec) reorganisation of initialisation phase 
    99   !!---------------------------------------------------------------------- 
    10 #if defined key_zdftmx   ||   defined key_esopa 
     10#if defined key_zdftmx 
    1111   !!---------------------------------------------------------------------- 
    1212   !!   'key_zdftmx'                                  Tidal vertical mixing 
     
    5151 
    5252   !! * Substitutions 
    53 #  include "domzgr_substitute.h90" 
    5453#  include "vectopt_loop_substitute.h90" 
    5554   !!---------------------------------------------------------------------- 
    56    !! NEMO/OPA 4.0 , NEMO Consortium (2011) 
     55   !! NEMO/OPA 3.7 , NEMO Consortium (2014) 
    5756   !! $Id$ 
    5857   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     
    105104      !!              Koch-Larrouy et al. 2007, GRL. 
    106105      !!---------------------------------------------------------------------- 
    107       USE oce, zav_tide  =>   ua    ! use ua as workspace 
    108       !! 
    109106      INTEGER, INTENT(in) ::   kt   ! ocean time-step  
    110       !! 
     107      ! 
    111108      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    112109      REAL(wp) ::   ztpc         ! scalar workspace 
    113       REAL(wp), POINTER, DIMENSION(:,:) ::   zkz 
     110      REAL(wp), POINTER, DIMENSION(:,:)   ::   zkz 
     111      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zav_tide 
    114112      !!---------------------------------------------------------------------- 
    115113      ! 
    116114      IF( nn_timing == 1 )  CALL timing_start('zdf_tmx') 
    117115      ! 
    118       CALL wrk_alloc( jpi,jpj, zkz ) 
    119  
     116      CALL wrk_alloc( jpi,jpj,       zkz ) 
     117      CALL wrk_alloc( jpi,jpj,jpk,   zav_tide ) 
     118      ! 
    120119      !                          ! ----------------------- ! 
    121120      !                          !  Standard tidal mixing  !  (compute zav_tide) 
     
    126125      zkz(:,:) = 0.e0               !* Associated potential energy consummed over the whole water column 
    127126      DO jk = 2, jpkm1 
    128          zkz(:,:) = zkz(:,:) + fse3w(:,:,jk) * MAX( 0.e0, rn2(:,:,jk) ) * rau0 * zav_tide(:,:,jk)* tmask(:,:,jk) 
     127         zkz(:,:) = zkz(:,:) + e3w_n(:,:,jk) * MAX( 0.e0, rn2(:,:,jk) ) * rau0 * zav_tide(:,:,jk) * wmask(:,:,jk) 
    129128      END DO 
    130129 
     
    135134      END DO 
    136135 
    137       DO jk = 2, jpkm1              !* Mutiply by zkz to recover en_tmx, BUT bound by 30/6 ==> zav_tide bound by 300 cm2/s 
    138          zav_tide(:,:,jk) = zav_tide(:,:,jk) * MIN( zkz(:,:), 30./6. )   !kz max = 300 cm2/s 
     136      DO jk = 2, jpkm1     !* Mutiply by zkz to recover en_tmx, BUT bound by 30/6 ==> zav_tide bound by 300 cm2/s 
     137         zav_tide(:,:,jk) = zav_tide(:,:,jk) * MIN( zkz(:,:), 30./6. ) * wmask(:,:,jk)  !kz max = 300 cm2/s 
    139138      END DO 
    140139 
    141140      IF( kt == nit000 ) THEN       !* check at first time-step: diagnose the energy consumed by zav_tide 
    142          ztpc = 0.e0 
     141         ztpc = 0._wp 
    143142         DO jk= 1, jpk 
    144143            DO jj= 1, jpj 
    145144               DO ji= 1, jpi 
    146                   ztpc = ztpc + fse3w(ji,jj,jk) * e1t(ji,jj) * e2t(ji,jj)   & 
    147                      &         * MAX( 0.e0, rn2(ji,jj,jk) ) * zav_tide(ji,jj,jk) * tmask(ji,jj,jk) * tmask_i(ji,jj) 
     145                  ztpc = ztpc + e3w_n(ji,jj,jk) * e1e2t(ji,jj)                  & 
     146                     &        * MAX( 0.e0, rn2(ji,jj,jk) ) * zav_tide(ji,jj,jk) * tmask(ji,jj,jk) * tmask_i(ji,jj) 
    148147               END DO 
    149148            END DO 
    150149         END DO 
    151150         ztpc= rau0 / ( rn_tfe * rn_me ) * ztpc 
     151         IF( lk_mpp )   CALL mpp_sum( ztpc ) 
    152152         IF(lwp) WRITE(numout,*)  
    153153         IF(lwp) WRITE(numout,*) '          N Total power consumption by av_tide    : ztpc = ', ztpc * 1.e-12 ,'TW' 
     
    163163      !                          ! ----------------------- ! 
    164164      DO jk = 2, jpkm1              !* update momentum & tracer diffusivity with tidal mixing 
    165          avt(:,:,jk) = avt(:,:,jk) + zav_tide(:,:,jk) 
    166          avm(:,:,jk) = avm(:,:,jk) + zav_tide(:,:,jk) 
     165         avt(:,:,jk) = avt(:,:,jk) + zav_tide(:,:,jk) * wmask(:,:,jk) 
     166         avm(:,:,jk) = avm(:,:,jk) + zav_tide(:,:,jk) * wmask(:,:,jk) 
    167167         DO jj = 2, jpjm1 
    168168            DO ji = fs_2, fs_jpim1  ! vector opt. 
    169                avmu(ji,jj,jk) = avmu(ji,jj,jk) + 0.5 * ( zav_tide(ji,jj,jk) + zav_tide(ji+1,jj  ,jk) ) * umask(ji,jj,jk) 
    170                avmv(ji,jj,jk) = avmv(ji,jj,jk) + 0.5 * ( zav_tide(ji,jj,jk) + zav_tide(ji  ,jj+1,jk) ) * vmask(ji,jj,jk) 
     169               avmu(ji,jj,jk) = avmu(ji,jj,jk) + 0.5 * ( zav_tide(ji,jj,jk) + zav_tide(ji+1,jj  ,jk) ) * wumask(ji,jj,jk) 
     170               avmv(ji,jj,jk) = avmv(ji,jj,jk) + 0.5 * ( zav_tide(ji,jj,jk) + zav_tide(ji  ,jj+1,jk) ) * wvmask(ji,jj,jk) 
    171171            END DO 
    172172         END DO 
     
    179179      IF(ln_ctl)   CALL prt_ctl(tab3d_1=zav_tide , clinfo1=' tmx - av_tide: ', tab3d_2=avt, clinfo2=' avt: ', ovlap=1, kdim=jpk) 
    180180      ! 
    181       CALL wrk_dealloc( jpi,jpj, zkz ) 
     181      CALL wrk_dealloc( jpi,jpj,       zkz ) 
     182      CALL wrk_dealloc( jpi,jpj,jpk,   zav_tide ) 
    182183      ! 
    183184      IF( nn_timing == 1 )  CALL timing_stop('zdf_tmx') 
     
    228229      DO jk = 1, jpkm1              
    229230         zdn2dz     (:,:,jk) = rn2(:,:,jk) - rn2(:,:,jk+1)           ! Vertical profile of dN2/dz 
    230 !CDIR NOVERRCHK 
    231231         zempba_3d_1(:,:,jk) = SQRT(  MAX( 0.e0, rn2(:,:,jk) )  )    !    -        -    of N 
    232232         zempba_3d_2(:,:,jk) =        MAX( 0.e0, rn2(:,:,jk) )       !    -        -    of N^2 
     
    237237      zsum2(:,:) = 0.e0 
    238238      DO jk= 2, jpk 
    239          zsum1(:,:) = zsum1(:,:) + zempba_3d_1(:,:,jk) * fse3w(:,:,jk) 
    240          zsum2(:,:) = zsum2(:,:) + zempba_3d_2(:,:,jk) * fse3w(:,:,jk)                 
     239         zsum1(:,:) = zsum1(:,:) + zempba_3d_1(:,:,jk) * e3w_n(:,:,jk) * wmask(:,:,jk) 
     240         zsum2(:,:) = zsum2(:,:) + zempba_3d_2(:,:,jk) * e3w_n(:,:,jk) * wmask(:,:,jk)                
    241241      END DO 
    242242      DO jj = 1, jpj 
     
    255255               ! 
    256256               zempba_3d(ji,jj,jk) =               ztpc  
    257                zsum     (ji,jj)    = zsum(ji,jj) + ztpc * fse3w(ji,jj,jk) 
     257               zsum     (ji,jj)    = zsum(ji,jj) + ztpc * e3w_n(ji,jj,jk) 
    258258            END DO 
    259259         END DO 
     
    274274      zkz(:,:) = 0.e0               ! Associated potential energy consummed over the whole water column 
    275275      DO jk = 2, jpkm1 
    276          zkz(:,:) = zkz(:,:) + fse3w(:,:,jk) * MAX( 0.e0, rn2(:,:,jk) ) * rau0 * zavt_itf(:,:,jk) * tmask(:,:,jk) 
     276         zkz(:,:) = zkz(:,:) + e3w_n(:,:,jk) * MAX( 0.e0, rn2(:,:,jk) ) * rau0 * zavt_itf(:,:,jk) * wmask(:,:,jk) 
    277277      END DO 
    278278 
     
    284284 
    285285      DO jk = 2, jpkm1              ! Mutiply by zkz to recover en_tmx, BUT bound by 30/6 ==> zavt_itf bound by 300 cm2/s 
    286          zavt_itf(:,:,jk) = zavt_itf(:,:,jk) * MIN( zkz(:,:), 120./10. )   ! kz max = 120 cm2/s 
     286         zavt_itf(:,:,jk) = zavt_itf(:,:,jk) * MIN( zkz(:,:), 120./10. ) * wmask(:,:,jk)   ! kz max = 120 cm2/s 
    287287      END DO 
    288288 
     
    292292            DO jj= 1, jpj 
    293293               DO ji= 1, jpi 
    294                   ztpc = ztpc + e1t(ji,jj) * e2t(ji,jj) * fse3w(ji,jj,jk) * MAX( 0.e0, rn2(ji,jj,jk) )   & 
    295                      &                     * zavt_itf(ji,jj,jk) * tmask(ji,jj,jk) * tmask_i(ji,jj) 
     294                  ztpc = ztpc + e1e2t(ji,jj) * e3w_n(ji,jj,jk) * MAX( 0.e0, rn2(ji,jj,jk) )   & 
     295                     &                       * zavt_itf(ji,jj,jk) * tmask(ji,jj,jk) * tmask_i(ji,jj) 
    296296               END DO 
    297297            END DO 
    298298         END DO 
     299         IF( lk_mpp )   CALL mpp_sum( ztpc ) 
    299300         ztpc= rau0 * ztpc / ( rn_me * rn_tfe_itf ) 
    300301         IF(lwp) WRITE(numout,*) '          N Total power consumption by zavt_itf: ztpc = ', ztpc * 1.e-12 ,'TW' 
     
    350351      !!              Koch-Larrouy et al. 2007, GRL. 
    351352      !!---------------------------------------------------------------------- 
    352       USE oce     ,         zav_tide =>  ua         ! ua used as workspace 
    353       !! 
    354353      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    355354      INTEGER  ::   inum         ! local integer 
    356355      INTEGER  ::   ios 
    357356      REAL(wp) ::   ztpc, ze_z   ! local scalars 
    358       REAL(wp), DIMENSION(:,:)  , POINTER ::  zem2, zek1   ! read M2 and K1 tidal energy 
    359       REAL(wp), DIMENSION(:,:)  , POINTER ::  zkz          ! total M2, K1 and S2 tidal energy 
    360       REAL(wp), DIMENSION(:,:)  , POINTER ::  zfact        ! used for vertical structure function 
    361       REAL(wp), DIMENSION(:,:)  , POINTER ::  zhdep        ! Ocean depth  
    362       REAL(wp), DIMENSION(:,:,:), POINTER ::  zpc      ! power consumption 
     357      REAL(wp), DIMENSION(:,:)  , POINTER ::  zem2, zek1     ! read M2 and K1 tidal energy 
     358      REAL(wp), DIMENSION(:,:)  , POINTER ::  zkz            ! total M2, K1 and S2 tidal energy 
     359      REAL(wp), DIMENSION(:,:)  , POINTER ::  zfact          ! used for vertical structure function 
     360      REAL(wp), DIMENSION(:,:)  , POINTER ::  zhdep          ! Ocean depth  
     361      REAL(wp), DIMENSION(:,:,:), POINTER ::  zpc, zav_tide  ! power consumption 
    363362      !! 
    364363      NAMELIST/namzdf_tmx/ rn_htmx, rn_n2min, rn_tfe, rn_me, ln_tmx_itf, rn_tfe_itf 
     
    367366      IF( nn_timing == 1 )  CALL timing_start('zdf_tmx_init') 
    368367      ! 
    369       CALL wrk_alloc( jpi,jpj, zem2, zek1, zkz, zfact, zhdep ) 
    370       CALL wrk_alloc( jpi,jpj,jpk, zpc ) 
    371        
    372       REWIND( numnam_ref )              ! Namelist namzdf_tmx in reference namelist : Tidal Mixing 
     368      CALL wrk_alloc( jpi,jpj,       zem2, zek1, zkz, zfact, zhdep ) 
     369      CALL wrk_alloc( jpi,jpj,jpk,   zpc, zav_tide ) 
     370      ! 
     371      REWIND( numnam_ref )             ! Namelist namzdf_tmx in reference namelist : Tidal Mixing 
    373372      READ  ( numnam_ref, namzdf_tmx, IOSTAT = ios, ERR = 901) 
    374373901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namzdf_tmx in reference namelist', lwp ) 
    375  
    376       REWIND( numnam_cfg )              ! Namelist namzdf_tmx in configuration namelist : Tidal Mixing 
     374      ! 
     375      REWIND( numnam_cfg )             ! Namelist namzdf_tmx in configuration namelist : Tidal Mixing 
    377376      READ  ( numnam_cfg, namzdf_tmx, IOSTAT = ios, ERR = 902 ) 
    378377902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namzdf_tmx in configuration namelist', lwp ) 
    379378      IF(lwm) WRITE ( numond, namzdf_tmx ) 
    380  
    381       IF(lwp) THEN                   ! Control print 
     379      ! 
     380      IF(lwp) THEN                     ! Control print 
    382381         WRITE(numout,*) 
    383382         WRITE(numout,*) 'zdf_tmx_init : tidal mixing' 
     
    391390         WRITE(numout,*) '      ITF tidal dissipation efficiency      = ', rn_tfe_itf 
    392391      ENDIF 
    393  
    394       !                              ! allocate tmx arrays 
     392      !                                ! allocate tmx arrays 
    395393      IF( zdf_tmx_alloc() /= 0 )   CALL ctl_stop( 'STOP', 'zdf_tmx_init : unable to allocate tmx arrays' ) 
    396394 
    397       IF( ln_tmx_itf ) THEN          ! read the Indonesian Through Flow mask 
     395      IF( ln_tmx_itf ) THEN            ! read the Indonesian Through Flow mask 
    398396         CALL iom_open('mask_itf',inum) 
    399397         CALL iom_get (inum, jpdom_data, 'tmaskitf',mask_itf,1) !  
    400398         CALL iom_close(inum) 
    401399      ENDIF 
    402  
    403       ! read M2 tidal energy flux : W/m2  ( zem2 < 0 ) 
     400      !                                ! read M2 tidal energy flux : W/m2  ( zem2 < 0 ) 
    404401      CALL iom_open('M2rowdrg',inum) 
    405402      CALL iom_get (inum, jpdom_data, 'field',zem2,1) !  
    406403      CALL iom_close(inum) 
    407  
    408       ! read K1 tidal energy flux : W/m2  ( zek1 < 0 ) 
     404      !                                ! read K1 tidal energy flux : W/m2  ( zek1 < 0 ) 
    409405      CALL iom_open('K1rowdrg',inum) 
    410406      CALL iom_get (inum, jpdom_data, 'field',zek1,1) !  
    411407      CALL iom_close(inum) 
    412   
    413       ! Total tidal energy ( M2, S2 and K1  with S2=(1/2)^2 * M2 ) 
    414       ! only the energy available for mixing is taken into account, 
    415       ! (mixing efficiency tidal dissipation efficiency) 
    416       en_tmx(:,:) = - rn_tfe * rn_me * ( zem2(:,:) * 1.25 + zek1(:,:) ) * tmask(:,:,1) 
    417  
    418       ! Vertical structure (az_tmx) 
    419       DO jj = 1, jpj                ! part independent of the level 
     408      !                                ! Total tidal energy ( M2, S2 and K1  with S2=(1/2)^2 * M2 ) 
     409      !                                ! only the energy available for mixing is taken into account, 
     410      !                                ! (mixing efficiency tidal dissipation efficiency) 
     411      en_tmx(:,:) = - rn_tfe * rn_me * ( zem2(:,:) * 1.25 + zek1(:,:) ) * ssmask(:,:) 
     412 
     413!============ 
     414!TG: Bug for VVL? Should this section be moved out of _init and be updated at every timestep? 
     415!!gm : you are right, but tidal mixing acts in deep ocean (H>500m) where e3 is O(100m) 
     416!!     the error is thus ~1% which I feel comfortable with, compared to uncertainties in tidal energy dissipation. 
     417      !                                ! Vertical structure (az_tmx) 
     418      DO jj = 1, jpj                         ! part independent of the level 
    420419         DO ji = 1, jpi 
    421             zhdep(ji,jj) = fsdepw(ji,jj,mbkt(ji,jj)+1)       ! depth of the ocean 
     420            zhdep(ji,jj) = gdepw_0(ji,jj,mbkt(ji,jj)+1)       ! depth of the ocean 
    422421            zfact(ji,jj) = rau0 * rn_htmx * ( 1. - EXP( -zhdep(ji,jj) / rn_htmx ) ) 
    423422            IF( zfact(ji,jj) /= 0 )   zfact(ji,jj) = en_tmx(ji,jj) / zfact(ji,jj) 
    424423         END DO 
    425424      END DO 
    426       DO jk= 1, jpk                 ! complete with the level-dependent part 
     425      DO jk= 1, jpk                          ! complete with the level-dependent part 
    427426         DO jj = 1, jpj 
    428427            DO ji = 1, jpi 
    429                az_tmx(ji,jj,jk) = zfact(ji,jj) * EXP( -( zhdep(ji,jj)-fsdepw(ji,jj,jk) ) / rn_htmx ) * tmask(ji,jj,jk) 
    430             END DO 
    431          END DO 
    432       END DO 
    433  
     428               az_tmx(ji,jj,jk) = zfact(ji,jj) * EXP( -( zhdep(ji,jj)-gdepw_0(ji,jj,jk) ) / rn_htmx ) * tmask(ji,jj,jk) 
     429            END DO 
     430         END DO 
     431      END DO 
     432!=========== 
     433      ! 
    434434      IF( nprint == 1 .AND. lwp ) THEN 
    435435         ! Control print 
     
    440440            zav_tide(:,:,jk) = az_tmx(:,:,jk) / MAX( rn_n2min, rn2(:,:,jk) ) 
    441441         END DO 
    442  
    443          ztpc = 0.e0 
     442         ! 
     443         ztpc = 0._wp 
    444444         zpc(:,:,:) = MAX(rn_n2min,rn2(:,:,:)) * zav_tide(:,:,:) 
    445445         DO jk= 2, jpkm1 
    446446            DO jj = 1, jpj 
    447447               DO ji = 1, jpi 
    448                   ztpc = ztpc + fse3w(ji,jj,jk) * e1t(ji,jj) * e2t(ji,jj) * zpc(ji,jj,jk) * tmask(ji,jj,jk) * tmask_i(ji,jj) 
     448                  ztpc = ztpc + e3w_n(ji,jj,jk) * e1e2t(ji,jj) * zpc(ji,jj,jk) * wmask(ji,jj,jk) * tmask_i(ji,jj) 
    449449               END DO 
    450450            END DO 
    451451         END DO 
     452         IF( lk_mpp )   CALL mpp_sum( ztpc ) 
    452453         ztpc= rau0 * 1/(rn_tfe * rn_me) * ztpc 
    453  
     454         ! 
    454455         WRITE(numout,*)  
    455456         WRITE(numout,*) '          Total power consumption of the tidally driven part of Kz : ztpc = ', ztpc * 1.e-12 ,'TW' 
    456  
    457  
     457         ! 
    458458         ! control print 2 
    459459         zav_tide(:,:,:) = MIN( zav_tide(:,:,:), 60.e-4 )    
    460          zkz(:,:) = 0.e0 
     460         zkz(:,:) = 0._wp 
    461461         DO jk = 2, jpkm1 
    462          DO jj = 1, jpj 
    463             DO ji = 1, jpi 
    464                zkz(ji,jj) = zkz(ji,jj) + fse3w(ji,jj,jk) * MAX( 0.e0, rn2(ji,jj,jk) ) * rau0 * zav_tide(ji,jj,jk)* tmask(ji,jj,jk) 
    465             END DO 
    466          END DO 
     462               zkz(:,:) = zkz(:,:) + e3w_n(:,:,jk) * MAX(0.e0, rn2(:,:,jk)) * rau0 * zav_tide(:,:,jk) * wmask(:,:,jk) 
    467463         END DO 
    468464         ! Here zkz should be equal to en_tmx ==> multiply by en_tmx/zkz 
     
    483479         END DO 
    484480         WRITE(numout,*) '          Min de zkz ', ztpc, ' Max = ', maxval(zkz(:,:) ) 
    485  
     481         ! 
    486482         DO jk = 2, jpkm1 
    487             zav_tide(:,:,jk) = zav_tide(:,:,jk) * MIN( zkz(:,:), 30./6. )   !kz max = 300 cm2/s 
    488          END DO 
    489          ztpc = 0.e0 
     483            zav_tide(:,:,jk) = zav_tide(:,:,jk) * MIN( zkz(:,:), 30./6. ) * wmask(:,:,jk)  !kz max = 300 cm2/s 
     484         END DO 
     485         ztpc = 0._wp 
    490486         zpc(:,:,:) = Max(0.e0,rn2(:,:,:)) * zav_tide(:,:,:) 
    491487         DO jk= 1, jpk 
    492488            DO jj = 1, jpj 
    493489               DO ji = 1, jpi 
    494                   ztpc = ztpc + fse3w(ji,jj,jk) * e1t(ji,jj) * e2t(ji,jj) * zpc(ji,jj,jk) * tmask(ji,jj,jk) * tmask_i(ji,jj) 
     490                  ztpc = ztpc + e3w_n(ji,jj,jk) * e1e2t(ji,jj) * zpc(ji,jj,jk) * wmask(ji,jj,jk) * tmask_i(ji,jj) 
    495491               END DO 
    496492            END DO 
    497493         END DO 
     494         IF( lk_mpp )   CALL mpp_sum( ztpc ) 
    498495         ztpc= rau0 * 1/(rn_tfe * rn_me) * ztpc 
    499496         WRITE(numout,*) '          2 Total power consumption of the tidally driven part of Kz : ztpc = ', ztpc * 1.e-12 ,'TW' 
    500  
     497!!gm bug mpp  in these diagnostics 
    501498         DO jk = 1, jpk 
    502             ze_z =                  SUM( e1t(:,:) * e2t(:,:) * zav_tide(:,:,jk)    * tmask_i(:,:) )   & 
    503                &     / MAX( 1.e-20, SUM( e1t(:,:) * e2t(:,:) * tmask (:,:,jk) * tmask_i(:,:) ) ) 
    504             ztpc = 1.E50 
     499            ze_z =                  SUM( e1e2t(:,:) * zav_tide(:,:,jk) * tmask_i(:,:) )   & 
     500               &     / MAX( 1.e-20, SUM( e1e2t(:,:) * wmask  (:,:,jk) * tmask_i(:,:) ) ) 
     501            ztpc = 1.e50 
    505502            DO jj = 1, jpj 
    506503               DO ji = 1, jpi 
    507                   IF( zav_tide(ji,jj,jk) /= 0.e0 )   ztpc =Min( ztpc, zav_tide(ji,jj,jk) ) 
     504                  IF( zav_tide(ji,jj,jk) /= 0.e0 )   ztpc = MIN( ztpc, zav_tide(ji,jj,jk) ) 
    508505               END DO 
    509506            END DO 
     
    512509         END DO 
    513510 
    514          WRITE(numout,*) '          e_tide : ', SUM( e1t*e2t*en_tmx ) / ( rn_tfe * rn_me ) * 1.e-12, 'TW' 
     511         WRITE(numout,*) '          e_tide : ', SUM( e1e2t*en_tmx ) / ( rn_tfe * rn_me ) * 1.e-12, 'TW' 
    515512         WRITE(numout,*)  
    516513         WRITE(numout,*) '          Initial profile of tidal vertical mixing' 
     
    521518               END DO 
    522519            END DO 
    523             ze_z =                  SUM( e1t(:,:) * e2t(:,:) * zkz(:,:)     * tmask_i(:,:) )   & 
    524                &     / MAX( 1.e-20, SUM( e1t(:,:) * e2t(:,:) * tmask (:,:,jk) * tmask_i(:,:) ) ) 
     520            ze_z =                  SUM( e1e2t(:,:) * zkz  (:,:)    * tmask_i(:,:) )   & 
     521               &     / MAX( 1.e-20, SUM( e1e2t(:,:) * wmask(:,:,jk) * tmask_i(:,:) ) ) 
    525522            WRITE(numout,*) '                jk= ', jk,'   ', ze_z * 1.e4,' cm2/s' 
    526523         END DO 
    527524         DO jk = 1, jpk 
    528525            zkz(:,:) = az_tmx(:,:,jk) /rn_n2min 
    529             ze_z =                  SUM( e1t(:,:) * e2t(:,:) * zkz(:,:)     * tmask_i(:,:) )   & 
    530                &     / MAX( 1.e-20, SUM( e1t(:,:) * e2t(:,:) * tmask (:,:,jk) * tmask_i(:,:) ) ) 
     526            ze_z =                  SUM( e1e2t(:,:) * zkz  (:,:)    * tmask_i(:,:) )   & 
     527               &     / MAX( 1.e-20, SUM( e1e2t(:,:) * wmask(:,:,jk) * tmask_i(:,:) ) ) 
    531528            WRITE(numout,*)  
    532529            WRITE(numout,*) '          N2 min - jk= ', jk,'   ', ze_z * 1.e4,' cm2/s min= ',MINVAL(zkz)*1.e4,   & 
    533530               &       'max= ', MAXVAL(zkz)*1.e4, ' cm2/s' 
    534531         END DO 
     532!!gm  end bug mpp 
    535533         ! 
    536534      ENDIF 
Note: See TracChangeset for help on using the changeset viewer.