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 6808 for branches/NERC/dev_r5549_BDY_ZEROGRAD/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftmx.F90 – NEMO

Ignore:
Timestamp:
2016-07-19T10:38:35+02:00 (8 years ago)
Author:
jamesharle
Message:

merge with trunk@6232 for consistency with SSB code

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/NERC/dev_r5549_BDY_ZEROGRAD/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftmx.F90

    r5130 r6808  
    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) * wmask(:,:,jk) 
     127         zkz(:,:) = zkz(:,:) + e3w_n(:,:,jk) * MAX( 0.e0, rn2(:,:,jk) ) * rau0 * zav_tide(:,:,jk) * wmask(:,:,jk) 
    129128      END DO 
    130129 
     
    136135 
    137136      DO jk = 2, jpkm1     !* Mutiply by zkz to recover en_tmx, BUT bound by 30/6 ==> zav_tide bound by 300 cm2/s 
    138          DO jj = 1, jpj                !* Here zkz should be equal to en_tmx ==> multiply by en_tmx/zkz to recover en_tmx 
    139             DO ji = 1, jpi 
    140                zav_tide(ji,jj,jk) = zav_tide(ji,jj,jk) * MIN( zkz(ji,jj), 30./6. ) * wmask(ji,jj,jk)  !kz max = 300 cm2/s 
    141             END DO 
    142          END DO 
     137         zav_tide(:,:,jk) = zav_tide(:,:,jk) * MIN( zkz(:,:), 30./6. ) * wmask(:,:,jk)  !kz max = 300 cm2/s 
    143138      END DO 
    144139 
    145140      IF( kt == nit000 ) THEN       !* check at first time-step: diagnose the energy consumed by zav_tide 
    146          ztpc = 0.e0 
     141         ztpc = 0._wp 
    147142         DO jk= 1, jpk 
    148143            DO jj= 1, jpj 
    149144               DO ji= 1, jpi 
    150                   ztpc = ztpc + fse3w(ji,jj,jk) * e1t(ji,jj) * e2t(ji,jj)   & 
    151                      &         * 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) 
    152147               END DO 
    153148            END DO 
    154149         END DO 
    155150         ztpc= rau0 / ( rn_tfe * rn_me ) * ztpc 
     151         IF( lk_mpp )   CALL mpp_sum( ztpc ) 
    156152         IF(lwp) WRITE(numout,*)  
    157153         IF(lwp) WRITE(numout,*) '          N Total power consumption by av_tide    : ztpc = ', ztpc * 1.e-12 ,'TW' 
     
    167163      !                          ! ----------------------- ! 
    168164      DO jk = 2, jpkm1              !* update momentum & tracer diffusivity with tidal mixing 
    169          DO jj = 1, jpj                !* Here zkz should be equal to en_tmx ==> multiply by en_tmx/zkz to recover en_tmx 
    170             DO ji = 1, jpi 
    171                avt(ji,jj,jk) = avt(ji,jj,jk) + zav_tide(ji,jj,jk) * wmask(ji,jj,jk) 
    172                avm(ji,jj,jk) = avm(ji,jj,jk) + zav_tide(ji,jj,jk) * wmask(ji,jj,jk) 
    173             END DO 
    174          END DO 
    175       END DO 
    176        
    177       DO jk = 2, jpkm1              !* update momentum & tracer diffusivity with tidal mixing 
     165         avt(:,:,jk) = avt(:,:,jk) + zav_tide(:,:,jk) * wmask(:,:,jk) 
     166         avm(:,:,jk) = avm(:,:,jk) + zav_tide(:,:,jk) * wmask(:,:,jk) 
    178167         DO jj = 2, jpjm1 
    179168            DO ji = fs_2, fs_jpim1  ! vector opt. 
     
    190179      IF(ln_ctl)   CALL prt_ctl(tab3d_1=zav_tide , clinfo1=' tmx - av_tide: ', tab3d_2=avt, clinfo2=' avt: ', ovlap=1, kdim=jpk) 
    191180      ! 
    192       CALL wrk_dealloc( jpi,jpj, zkz ) 
     181      CALL wrk_dealloc( jpi,jpj,       zkz ) 
     182      CALL wrk_dealloc( jpi,jpj,jpk,   zav_tide ) 
    193183      ! 
    194184      IF( nn_timing == 1 )  CALL timing_stop('zdf_tmx') 
     
    239229      DO jk = 1, jpkm1              
    240230         zdn2dz     (:,:,jk) = rn2(:,:,jk) - rn2(:,:,jk+1)           ! Vertical profile of dN2/dz 
    241 !CDIR NOVERRCHK 
    242231         zempba_3d_1(:,:,jk) = SQRT(  MAX( 0.e0, rn2(:,:,jk) )  )    !    -        -    of N 
    243232         zempba_3d_2(:,:,jk) =        MAX( 0.e0, rn2(:,:,jk) )       !    -        -    of N^2 
     
    248237      zsum2(:,:) = 0.e0 
    249238      DO jk= 2, jpk 
    250          zsum1(:,:) = zsum1(:,:) + zempba_3d_1(:,:,jk) * fse3w(:,:,jk) * tmask(:,:,jk) * tmask(:,:,jk-1) 
    251          zsum2(:,:) = zsum2(:,:) + zempba_3d_2(:,:,jk) * fse3w(:,:,jk) * tmask(:,:,jk) * tmask(:,:,jk-1)                
     239         zsum1(:,:) = zsum1(:,:) + zempba_3d_1(:,:,jk) * e3w_n(:,:,jk) * wmask(:,:,jk) 
     240         zsum2(:,:) = zsum2(:,:) + zempba_3d_2(:,:,jk) * e3w_n(:,:,jk) * wmask(:,:,jk)                
    252241      END DO 
    253242      DO jj = 1, jpj 
     
    266255               ! 
    267256               zempba_3d(ji,jj,jk) =               ztpc  
    268                zsum     (ji,jj)    = zsum(ji,jj) + ztpc * fse3w(ji,jj,jk) 
     257               zsum     (ji,jj)    = zsum(ji,jj) + ztpc * e3w_n(ji,jj,jk) 
    269258            END DO 
    270259         END DO 
     
    285274      zkz(:,:) = 0.e0               ! Associated potential energy consummed over the whole water column 
    286275      DO jk = 2, jpkm1 
    287          zkz(:,:) = zkz(:,:) + fse3w(:,:,jk) * MAX( 0.e0, rn2(:,:,jk) ) * rau0 * zavt_itf(:,:,jk) * tmask(:,:,jk) * tmask(:,:,jk-1) 
     276         zkz(:,:) = zkz(:,:) + e3w_n(:,:,jk) * MAX( 0.e0, rn2(:,:,jk) ) * rau0 * zavt_itf(:,:,jk) * wmask(:,:,jk) 
    288277      END DO 
    289278 
     
    295284 
    296285      DO jk = 2, jpkm1              ! Mutiply by zkz to recover en_tmx, BUT bound by 30/6 ==> zavt_itf bound by 300 cm2/s 
    297          zavt_itf(:,:,jk) = zavt_itf(:,:,jk) * MIN( zkz(:,:), 120./10. ) * tmask(:,:,jk) * tmask(:,:,jk-1)   ! kz max = 120 cm2/s 
     286         zavt_itf(:,:,jk) = zavt_itf(:,:,jk) * MIN( zkz(:,:), 120./10. ) * wmask(:,:,jk)   ! kz max = 120 cm2/s 
    298287      END DO 
    299288 
     
    303292            DO jj= 1, jpj 
    304293               DO ji= 1, jpi 
    305                   ztpc = ztpc + e1t(ji,jj) * e2t(ji,jj) * fse3w(ji,jj,jk) * MAX( 0.e0, rn2(ji,jj,jk) )   & 
    306                      &                     * 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) 
    307296               END DO 
    308297            END DO 
    309298         END DO 
     299         IF( lk_mpp )   CALL mpp_sum( ztpc ) 
    310300         ztpc= rau0 * ztpc / ( rn_me * rn_tfe_itf ) 
    311301         IF(lwp) WRITE(numout,*) '          N Total power consumption by zavt_itf: ztpc = ', ztpc * 1.e-12 ,'TW' 
     
    361351      !!              Koch-Larrouy et al. 2007, GRL. 
    362352      !!---------------------------------------------------------------------- 
    363       USE oce     ,         zav_tide =>  ua         ! ua used as workspace 
    364       !! 
    365353      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    366354      INTEGER  ::   inum         ! local integer 
    367355      INTEGER  ::   ios 
    368356      REAL(wp) ::   ztpc, ze_z   ! local scalars 
    369       REAL(wp), DIMENSION(:,:)  , POINTER ::  zem2, zek1   ! read M2 and K1 tidal energy 
    370       REAL(wp), DIMENSION(:,:)  , POINTER ::  zkz          ! total M2, K1 and S2 tidal energy 
    371       REAL(wp), DIMENSION(:,:)  , POINTER ::  zfact        ! used for vertical structure function 
    372       REAL(wp), DIMENSION(:,:)  , POINTER ::  zhdep        ! Ocean depth  
    373       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 
    374362      !! 
    375363      NAMELIST/namzdf_tmx/ rn_htmx, rn_n2min, rn_tfe, rn_me, ln_tmx_itf, rn_tfe_itf 
     
    378366      IF( nn_timing == 1 )  CALL timing_start('zdf_tmx_init') 
    379367      ! 
    380       CALL wrk_alloc( jpi,jpj, zem2, zek1, zkz, zfact, zhdep ) 
    381       CALL wrk_alloc( jpi,jpj,jpk, zpc ) 
    382        
    383       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 
    384372      READ  ( numnam_ref, namzdf_tmx, IOSTAT = ios, ERR = 901) 
    385373901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namzdf_tmx in reference namelist', lwp ) 
    386  
    387       REWIND( numnam_cfg )              ! Namelist namzdf_tmx in configuration namelist : Tidal Mixing 
     374      ! 
     375      REWIND( numnam_cfg )             ! Namelist namzdf_tmx in configuration namelist : Tidal Mixing 
    388376      READ  ( numnam_cfg, namzdf_tmx, IOSTAT = ios, ERR = 902 ) 
    389377902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namzdf_tmx in configuration namelist', lwp ) 
    390378      IF(lwm) WRITE ( numond, namzdf_tmx ) 
    391  
    392       IF(lwp) THEN                   ! Control print 
     379      ! 
     380      IF(lwp) THEN                     ! Control print 
    393381         WRITE(numout,*) 
    394382         WRITE(numout,*) 'zdf_tmx_init : tidal mixing' 
     
    402390         WRITE(numout,*) '      ITF tidal dissipation efficiency      = ', rn_tfe_itf 
    403391      ENDIF 
    404  
    405       !                              ! allocate tmx arrays 
     392      !                                ! allocate tmx arrays 
    406393      IF( zdf_tmx_alloc() /= 0 )   CALL ctl_stop( 'STOP', 'zdf_tmx_init : unable to allocate tmx arrays' ) 
    407394 
    408       IF( ln_tmx_itf ) THEN          ! read the Indonesian Through Flow mask 
     395      IF( ln_tmx_itf ) THEN            ! read the Indonesian Through Flow mask 
    409396         CALL iom_open('mask_itf',inum) 
    410397         CALL iom_get (inum, jpdom_data, 'tmaskitf',mask_itf,1) !  
    411398         CALL iom_close(inum) 
    412399      ENDIF 
    413  
    414       ! read M2 tidal energy flux : W/m2  ( zem2 < 0 ) 
     400      !                                ! read M2 tidal energy flux : W/m2  ( zem2 < 0 ) 
    415401      CALL iom_open('M2rowdrg',inum) 
    416402      CALL iom_get (inum, jpdom_data, 'field',zem2,1) !  
    417403      CALL iom_close(inum) 
    418  
    419       ! read K1 tidal energy flux : W/m2  ( zek1 < 0 ) 
     404      !                                ! read K1 tidal energy flux : W/m2  ( zek1 < 0 ) 
    420405      CALL iom_open('K1rowdrg',inum) 
    421406      CALL iom_get (inum, jpdom_data, 'field',zek1,1) !  
    422407      CALL iom_close(inum) 
    423   
    424       ! Total tidal energy ( M2, S2 and K1  with S2=(1/2)^2 * M2 ) 
    425       ! only the energy available for mixing is taken into account, 
    426       ! (mixing efficiency tidal dissipation efficiency) 
     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) 
    427411      en_tmx(:,:) = - rn_tfe * rn_me * ( zem2(:,:) * 1.25 + zek1(:,:) ) * ssmask(:,:) 
    428412 
    429413!============ 
    430414!TG: Bug for VVL? Should this section be moved out of _init and be updated at every timestep? 
    431       ! Vertical structure (az_tmx) 
    432       DO jj = 1, jpj                ! part independent of the level 
     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 
    433419         DO ji = 1, jpi 
    434420            zhdep(ji,jj) = gdepw_0(ji,jj,mbkt(ji,jj)+1)       ! depth of the ocean 
     
    437423         END DO 
    438424      END DO 
    439       DO jk= 1, jpk                 ! complete with the level-dependent part 
     425      DO jk= 1, jpk                          ! complete with the level-dependent part 
    440426         DO jj = 1, jpj 
    441427            DO ji = 1, jpi 
     
    445431      END DO 
    446432!=========== 
    447  
     433      ! 
    448434      IF( nprint == 1 .AND. lwp ) THEN 
    449435         ! Control print 
     
    454440            zav_tide(:,:,jk) = az_tmx(:,:,jk) / MAX( rn_n2min, rn2(:,:,jk) ) 
    455441         END DO 
    456  
    457          ztpc = 0.e0 
     442         ! 
     443         ztpc = 0._wp 
    458444         zpc(:,:,:) = MAX(rn_n2min,rn2(:,:,:)) * zav_tide(:,:,:) 
    459445         DO jk= 2, jpkm1 
    460446            DO jj = 1, jpj 
    461447               DO ji = 1, jpi 
    462                   ztpc = ztpc + fse3w(ji,jj,jk) * e1t(ji,jj) * e2t(ji,jj) * zpc(ji,jj,jk) * wmask(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) 
    463449               END DO 
    464450            END DO 
    465451         END DO 
     452         IF( lk_mpp )   CALL mpp_sum( ztpc ) 
    466453         ztpc= rau0 * 1/(rn_tfe * rn_me) * ztpc 
    467  
     454         ! 
    468455         WRITE(numout,*)  
    469456         WRITE(numout,*) '          Total power consumption of the tidally driven part of Kz : ztpc = ', ztpc * 1.e-12 ,'TW' 
    470  
    471  
     457         ! 
    472458         ! control print 2 
    473459         zav_tide(:,:,:) = MIN( zav_tide(:,:,:), 60.e-4 )    
    474          zkz(:,:) = 0.e0 
     460         zkz(:,:) = 0._wp 
    475461         DO jk = 2, jpkm1 
    476             DO jj = 1, jpj 
    477                DO ji = 1, jpi 
    478                   zkz(ji,jj) = zkz(ji,jj) + fse3w(ji,jj,jk) * MAX(0.e0, rn2(ji,jj,jk)) * rau0 * zav_tide(ji,jj,jk) * wmask(ji,jj,jk) 
    479                END DO 
    480             END DO 
     462               zkz(:,:) = zkz(:,:) + e3w_n(:,:,jk) * MAX(0.e0, rn2(:,:,jk)) * rau0 * zav_tide(:,:,jk) * wmask(:,:,jk) 
    481463         END DO 
    482464         ! Here zkz should be equal to en_tmx ==> multiply by en_tmx/zkz 
     
    497479         END DO 
    498480         WRITE(numout,*) '          Min de zkz ', ztpc, ' Max = ', maxval(zkz(:,:) ) 
    499  
     481         ! 
    500482         DO jk = 2, jpkm1 
    501             DO jj = 1, jpj 
    502                DO ji = 1, jpi 
    503                   zav_tide(ji,jj,jk) = zav_tide(ji,jj,jk) * MIN( zkz(ji,jj), 30./6. ) * wmask(ji,jj,jk)  !kz max = 300 cm2/s 
    504                END DO 
    505             END DO 
    506          END DO 
    507          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 
    508486         zpc(:,:,:) = Max(0.e0,rn2(:,:,:)) * zav_tide(:,:,:) 
    509487         DO jk= 1, jpk 
    510488            DO jj = 1, jpj 
    511489               DO ji = 1, jpi 
    512                   ztpc = ztpc + fse3w(ji,jj,jk) * e1t(ji,jj) * e2t(ji,jj) * zpc(ji,jj,jk) * wmask(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) 
    513491               END DO 
    514492            END DO 
    515493         END DO 
     494         IF( lk_mpp )   CALL mpp_sum( ztpc ) 
    516495         ztpc= rau0 * 1/(rn_tfe * rn_me) * ztpc 
    517496         WRITE(numout,*) '          2 Total power consumption of the tidally driven part of Kz : ztpc = ', ztpc * 1.e-12 ,'TW' 
    518  
     497!!gm bug mpp  in these diagnostics 
    519498         DO jk = 1, jpk 
    520             ze_z =                  SUM( e1t(:,:) * e2t(:,:) * zav_tide(:,:,jk)    * tmask_i(:,:) )   & 
    521                &     / MAX( 1.e-20, SUM( e1t(:,:) * e2t(:,:) * wmask (:,:,jk) * tmask_i(:,:) ) ) 
    522             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 
    523502            DO jj = 1, jpj 
    524503               DO ji = 1, jpi 
    525                   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) ) 
    526505               END DO 
    527506            END DO 
     
    530509         END DO 
    531510 
    532          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' 
    533512         WRITE(numout,*)  
    534513         WRITE(numout,*) '          Initial profile of tidal vertical mixing' 
     
    539518               END DO 
    540519            END DO 
    541             ze_z =                  SUM( e1t(:,:) * e2t(:,:) * zkz(:,:)     * tmask_i(:,:) )   & 
    542                &     / MAX( 1.e-20, SUM( e1t(:,:) * e2t(:,:) * wmask (:,:,jk) * tmask_i(:,:) ) ) 
     520            ze_z =                  SUM( e1e2t(:,:) * zkz  (:,:)    * tmask_i(:,:) )   & 
     521               &     / MAX( 1.e-20, SUM( e1e2t(:,:) * wmask(:,:,jk) * tmask_i(:,:) ) ) 
    543522            WRITE(numout,*) '                jk= ', jk,'   ', ze_z * 1.e4,' cm2/s' 
    544523         END DO 
    545524         DO jk = 1, jpk 
    546525            zkz(:,:) = az_tmx(:,:,jk) /rn_n2min 
    547             ze_z =                  SUM( e1t(:,:) * e2t(:,:) * zkz(:,:)     * tmask_i(:,:) )   & 
    548                &     / MAX( 1.e-20, SUM( e1t(:,:) * e2t(:,:) * wmask (:,:,jk) * tmask_i(:,:) ) ) 
     526            ze_z =                  SUM( e1e2t(:,:) * zkz  (:,:)    * tmask_i(:,:) )   & 
     527               &     / MAX( 1.e-20, SUM( e1e2t(:,:) * wmask(:,:,jk) * tmask_i(:,:) ) ) 
    549528            WRITE(numout,*)  
    550529            WRITE(numout,*) '          N2 min - jk= ', jk,'   ', ze_z * 1.e4,' cm2/s min= ',MINVAL(zkz)*1.e4,   & 
    551530               &       'max= ', MAXVAL(zkz)*1.e4, ' cm2/s' 
    552531         END DO 
     532!!gm  end bug mpp 
    553533         ! 
    554534      ENDIF 
Note: See TracChangeset for help on using the changeset viewer.