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 6020 for branches/UKMO/icebergs_restart_single_file/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftmx.F90 – NEMO

Ignore:
Timestamp:
2015-12-08T12:39:53+01:00 (8 years ago)
Author:
timgraham
Message:

Merged with head of trunk

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/icebergs_restart_single_file/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftmx.F90

    r6019 r6020  
    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 
     
    5454#  include "vectopt_loop_substitute.h90" 
    5555   !!---------------------------------------------------------------------- 
    56    !! NEMO/OPA 4.0 , NEMO Consortium (2011) 
     56   !! NEMO/OPA 3.7 , NEMO Consortium (2014) 
    5757   !! $Id$ 
    5858   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     
    105105      !!              Koch-Larrouy et al. 2007, GRL. 
    106106      !!---------------------------------------------------------------------- 
    107       USE oce, zav_tide  =>   ua    ! use ua as workspace 
    108       !! 
    109107      INTEGER, INTENT(in) ::   kt   ! ocean time-step  
    110       !! 
     108      ! 
    111109      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    112110      REAL(wp) ::   ztpc         ! scalar workspace 
    113       REAL(wp), POINTER, DIMENSION(:,:) ::   zkz 
     111      REAL(wp), POINTER, DIMENSION(:,:)   ::   zkz 
     112      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zav_tide 
    114113      !!---------------------------------------------------------------------- 
    115114      ! 
    116115      IF( nn_timing == 1 )  CALL timing_start('zdf_tmx') 
    117116      ! 
    118       CALL wrk_alloc( jpi,jpj, zkz ) 
    119  
     117      CALL wrk_alloc( jpi,jpj,       zkz ) 
     118      CALL wrk_alloc( jpi,jpj,jpk,   zav_tide ) 
     119      ! 
    120120      !                          ! ----------------------- ! 
    121121      !                          !  Standard tidal mixing  !  (compute zav_tide) 
     
    136136 
    137137      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 
     138         zav_tide(:,:,jk) = zav_tide(:,:,jk) * MIN( zkz(:,:), 30./6. ) * wmask(:,:,jk)  !kz max = 300 cm2/s 
    143139      END DO 
    144140 
    145141      IF( kt == nit000 ) THEN       !* check at first time-step: diagnose the energy consumed by zav_tide 
    146          ztpc = 0.e0 
     142         ztpc = 0._wp 
    147143         DO jk= 1, jpk 
    148144            DO jj= 1, jpj 
    149145               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) 
     146                  ztpc = ztpc + fse3w(ji,jj,jk) * e1e2t(ji,jj)                  & 
     147                     &        * MAX( 0.e0, rn2(ji,jj,jk) ) * zav_tide(ji,jj,jk) * tmask(ji,jj,jk) * tmask_i(ji,jj) 
    152148               END DO 
    153149            END DO 
    154150         END DO 
    155151         ztpc= rau0 / ( rn_tfe * rn_me ) * ztpc 
     152         IF( lk_mpp )   CALL mpp_sum( ztpc ) 
    156153         IF(lwp) WRITE(numout,*)  
    157154         IF(lwp) WRITE(numout,*) '          N Total power consumption by av_tide    : ztpc = ', ztpc * 1.e-12 ,'TW' 
     
    167164      !                          ! ----------------------- ! 
    168165      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 
     166         avt(:,:,jk) = avt(:,:,jk) + zav_tide(:,:,jk) * wmask(:,:,jk) 
     167         avm(:,:,jk) = avm(:,:,jk) + zav_tide(:,:,jk) * wmask(:,:,jk) 
    178168         DO jj = 2, jpjm1 
    179169            DO ji = fs_2, fs_jpim1  ! vector opt. 
     
    190180      IF(ln_ctl)   CALL prt_ctl(tab3d_1=zav_tide , clinfo1=' tmx - av_tide: ', tab3d_2=avt, clinfo2=' avt: ', ovlap=1, kdim=jpk) 
    191181      ! 
    192       CALL wrk_dealloc( jpi,jpj, zkz ) 
     182      CALL wrk_dealloc( jpi,jpj,       zkz ) 
     183      CALL wrk_dealloc( jpi,jpj,jpk,   zav_tide ) 
    193184      ! 
    194185      IF( nn_timing == 1 )  CALL timing_stop('zdf_tmx') 
     
    239230      DO jk = 1, jpkm1              
    240231         zdn2dz     (:,:,jk) = rn2(:,:,jk) - rn2(:,:,jk+1)           ! Vertical profile of dN2/dz 
    241 !CDIR NOVERRCHK 
    242232         zempba_3d_1(:,:,jk) = SQRT(  MAX( 0.e0, rn2(:,:,jk) )  )    !    -        -    of N 
    243233         zempba_3d_2(:,:,jk) =        MAX( 0.e0, rn2(:,:,jk) )       !    -        -    of N^2 
     
    248238      zsum2(:,:) = 0.e0 
    249239      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)                
     240         zsum1(:,:) = zsum1(:,:) + zempba_3d_1(:,:,jk) * fse3w(:,:,jk) * wmask(:,:,jk) 
     241         zsum2(:,:) = zsum2(:,:) + zempba_3d_2(:,:,jk) * fse3w(:,:,jk) * wmask(:,:,jk)                
    252242      END DO 
    253243      DO jj = 1, jpj 
     
    285275      zkz(:,:) = 0.e0               ! Associated potential energy consummed over the whole water column 
    286276      DO jk = 2, jpkm1 
    287          zkz(:,:) = zkz(:,:) + fse3w(:,:,jk) * MAX( 0.e0, rn2(:,:,jk) ) * rau0 * zavt_itf(:,:,jk) * tmask(:,:,jk) * tmask(:,:,jk-1) 
     277         zkz(:,:) = zkz(:,:) + fse3w(:,:,jk) * MAX( 0.e0, rn2(:,:,jk) ) * rau0 * zavt_itf(:,:,jk) * wmask(:,:,jk) 
    288278      END DO 
    289279 
     
    295285 
    296286      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 
     287         zavt_itf(:,:,jk) = zavt_itf(:,:,jk) * MIN( zkz(:,:), 120./10. ) * wmask(:,:,jk)   ! kz max = 120 cm2/s 
    298288      END DO 
    299289 
     
    303293            DO jj= 1, jpj 
    304294               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) 
     295                  ztpc = ztpc + e1e2t(ji,jj) * fse3w(ji,jj,jk) * MAX( 0.e0, rn2(ji,jj,jk) )   & 
     296                     &                       * zavt_itf(ji,jj,jk) * tmask(ji,jj,jk) * tmask_i(ji,jj) 
    307297               END DO 
    308298            END DO 
    309299         END DO 
     300         IF( lk_mpp )   CALL mpp_sum( ztpc ) 
    310301         ztpc= rau0 * ztpc / ( rn_me * rn_tfe_itf ) 
    311302         IF(lwp) WRITE(numout,*) '          N Total power consumption by zavt_itf: ztpc = ', ztpc * 1.e-12 ,'TW' 
     
    361352      !!              Koch-Larrouy et al. 2007, GRL. 
    362353      !!---------------------------------------------------------------------- 
    363       USE oce     ,         zav_tide =>  ua         ! ua used as workspace 
    364       !! 
    365354      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    366355      INTEGER  ::   inum         ! local integer 
    367356      INTEGER  ::   ios 
    368357      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 
     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, zav_tide  ! power consumption 
    374363      !! 
    375364      NAMELIST/namzdf_tmx/ rn_htmx, rn_n2min, rn_tfe, rn_me, ln_tmx_itf, rn_tfe_itf 
     
    378367      IF( nn_timing == 1 )  CALL timing_start('zdf_tmx_init') 
    379368      ! 
    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 
     369      CALL wrk_alloc( jpi,jpj,       zem2, zek1, zkz, zfact, zhdep ) 
     370      CALL wrk_alloc( jpi,jpj,jpk,   zpc, zav_tide ) 
     371      ! 
     372      REWIND( numnam_ref )             ! Namelist namzdf_tmx in reference namelist : Tidal Mixing 
    384373      READ  ( numnam_ref, namzdf_tmx, IOSTAT = ios, ERR = 901) 
    385374901   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 
     375      ! 
     376      REWIND( numnam_cfg )             ! Namelist namzdf_tmx in configuration namelist : Tidal Mixing 
    388377      READ  ( numnam_cfg, namzdf_tmx, IOSTAT = ios, ERR = 902 ) 
    389378902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namzdf_tmx in configuration namelist', lwp ) 
    390379      IF(lwm) WRITE ( numond, namzdf_tmx ) 
    391  
    392       IF(lwp) THEN                   ! Control print 
     380      ! 
     381      IF(lwp) THEN                     ! Control print 
    393382         WRITE(numout,*) 
    394383         WRITE(numout,*) 'zdf_tmx_init : tidal mixing' 
     
    402391         WRITE(numout,*) '      ITF tidal dissipation efficiency      = ', rn_tfe_itf 
    403392      ENDIF 
    404  
    405       !                              ! allocate tmx arrays 
     393      !                                ! allocate tmx arrays 
    406394      IF( zdf_tmx_alloc() /= 0 )   CALL ctl_stop( 'STOP', 'zdf_tmx_init : unable to allocate tmx arrays' ) 
    407395 
    408       IF( ln_tmx_itf ) THEN          ! read the Indonesian Through Flow mask 
     396      IF( ln_tmx_itf ) THEN            ! read the Indonesian Through Flow mask 
    409397         CALL iom_open('mask_itf',inum) 
    410398         CALL iom_get (inum, jpdom_data, 'tmaskitf',mask_itf,1) !  
    411399         CALL iom_close(inum) 
    412400      ENDIF 
    413  
    414       ! read M2 tidal energy flux : W/m2  ( zem2 < 0 ) 
     401      !                                ! read M2 tidal energy flux : W/m2  ( zem2 < 0 ) 
    415402      CALL iom_open('M2rowdrg',inum) 
    416403      CALL iom_get (inum, jpdom_data, 'field',zem2,1) !  
    417404      CALL iom_close(inum) 
    418  
    419       ! read K1 tidal energy flux : W/m2  ( zek1 < 0 ) 
     405      !                                ! read K1 tidal energy flux : W/m2  ( zek1 < 0 ) 
    420406      CALL iom_open('K1rowdrg',inum) 
    421407      CALL iom_get (inum, jpdom_data, 'field',zek1,1) !  
    422408      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) 
     409      !                                ! Total tidal energy ( M2, S2 and K1  with S2=(1/2)^2 * M2 ) 
     410      !                                ! only the energy available for mixing is taken into account, 
     411      !                                ! (mixing efficiency tidal dissipation efficiency) 
    427412      en_tmx(:,:) = - rn_tfe * rn_me * ( zem2(:,:) * 1.25 + zek1(:,:) ) * ssmask(:,:) 
    428413 
    429414!============ 
    430415!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 
     416!!gm : you are right, but tidal mixing acts in deep ocean (H>500m) where e3 is O(100m) 
     417!!     the error is thus ~1% which I feel comfortable with, compared to uncertainties in tidal energy dissipation. 
     418      !                                ! Vertical structure (az_tmx) 
     419      DO jj = 1, jpj                         ! part independent of the level 
    433420         DO ji = 1, jpi 
    434421            zhdep(ji,jj) = gdepw_0(ji,jj,mbkt(ji,jj)+1)       ! depth of the ocean 
     
    437424         END DO 
    438425      END DO 
    439       DO jk= 1, jpk                 ! complete with the level-dependent part 
     426      DO jk= 1, jpk                          ! complete with the level-dependent part 
    440427         DO jj = 1, jpj 
    441428            DO ji = 1, jpi 
     
    445432      END DO 
    446433!=========== 
    447  
     434      ! 
    448435      IF( nprint == 1 .AND. lwp ) THEN 
    449436         ! Control print 
     
    454441            zav_tide(:,:,jk) = az_tmx(:,:,jk) / MAX( rn_n2min, rn2(:,:,jk) ) 
    455442         END DO 
    456  
    457          ztpc = 0.e0 
     443         ! 
     444         ztpc = 0._wp 
    458445         zpc(:,:,:) = MAX(rn_n2min,rn2(:,:,:)) * zav_tide(:,:,:) 
    459446         DO jk= 2, jpkm1 
    460447            DO jj = 1, jpj 
    461448               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) 
     449                  ztpc = ztpc + fse3w(ji,jj,jk) * e1e2t(ji,jj) * zpc(ji,jj,jk) * wmask(ji,jj,jk) * tmask_i(ji,jj) 
    463450               END DO 
    464451            END DO 
    465452         END DO 
     453         IF( lk_mpp )   CALL mpp_sum( ztpc ) 
    466454         ztpc= rau0 * 1/(rn_tfe * rn_me) * ztpc 
    467  
     455         ! 
    468456         WRITE(numout,*)  
    469457         WRITE(numout,*) '          Total power consumption of the tidally driven part of Kz : ztpc = ', ztpc * 1.e-12 ,'TW' 
    470  
    471  
     458         ! 
    472459         ! control print 2 
    473460         zav_tide(:,:,:) = MIN( zav_tide(:,:,:), 60.e-4 )    
    474          zkz(:,:) = 0.e0 
     461         zkz(:,:) = 0._wp 
    475462         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 
     463               zkz(:,:) = zkz(:,:) + fse3w(:,:,jk) * MAX(0.e0, rn2(:,:,jk)) * rau0 * zav_tide(:,:,jk) * wmask(:,:,jk) 
    481464         END DO 
    482465         ! Here zkz should be equal to en_tmx ==> multiply by en_tmx/zkz 
     
    497480         END DO 
    498481         WRITE(numout,*) '          Min de zkz ', ztpc, ' Max = ', maxval(zkz(:,:) ) 
    499  
     482         ! 
    500483         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 
     484            zav_tide(:,:,jk) = zav_tide(:,:,jk) * MIN( zkz(:,:), 30./6. ) * wmask(:,:,jk)  !kz max = 300 cm2/s 
     485         END DO 
     486         ztpc = 0._wp 
    508487         zpc(:,:,:) = Max(0.e0,rn2(:,:,:)) * zav_tide(:,:,:) 
    509488         DO jk= 1, jpk 
    510489            DO jj = 1, jpj 
    511490               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) 
     491                  ztpc = ztpc + fse3w(ji,jj,jk) * e1e2t(ji,jj) * zpc(ji,jj,jk) * wmask(ji,jj,jk) * tmask_i(ji,jj) 
    513492               END DO 
    514493            END DO 
    515494         END DO 
     495         IF( lk_mpp )   CALL mpp_sum( ztpc ) 
    516496         ztpc= rau0 * 1/(rn_tfe * rn_me) * ztpc 
    517497         WRITE(numout,*) '          2 Total power consumption of the tidally driven part of Kz : ztpc = ', ztpc * 1.e-12 ,'TW' 
    518  
     498!!gm bug mpp  in these diagnostics 
    519499         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 
     500            ze_z =                  SUM( e1e2t(:,:) * zav_tide(:,:,jk) * tmask_i(:,:) )   & 
     501               &     / MAX( 1.e-20, SUM( e1e2t(:,:) * wmask  (:,:,jk) * tmask_i(:,:) ) ) 
     502            ztpc = 1.e50 
    523503            DO jj = 1, jpj 
    524504               DO ji = 1, jpi 
    525                   IF( zav_tide(ji,jj,jk) /= 0.e0 )   ztpc =Min( ztpc, zav_tide(ji,jj,jk) ) 
     505                  IF( zav_tide(ji,jj,jk) /= 0.e0 )   ztpc = MIN( ztpc, zav_tide(ji,jj,jk) ) 
    526506               END DO 
    527507            END DO 
     
    530510         END DO 
    531511 
    532          WRITE(numout,*) '          e_tide : ', SUM( e1t*e2t*en_tmx ) / ( rn_tfe * rn_me ) * 1.e-12, 'TW' 
     512         WRITE(numout,*) '          e_tide : ', SUM( e1e2t*en_tmx ) / ( rn_tfe * rn_me ) * 1.e-12, 'TW' 
    533513         WRITE(numout,*)  
    534514         WRITE(numout,*) '          Initial profile of tidal vertical mixing' 
     
    539519               END DO 
    540520            END DO 
    541             ze_z =                  SUM( e1t(:,:) * e2t(:,:) * zkz(:,:)     * tmask_i(:,:) )   & 
    542                &     / MAX( 1.e-20, SUM( e1t(:,:) * e2t(:,:) * wmask (:,:,jk) * tmask_i(:,:) ) ) 
     521            ze_z =                  SUM( e1e2t(:,:) * zkz  (:,:)    * tmask_i(:,:) )   & 
     522               &     / MAX( 1.e-20, SUM( e1e2t(:,:) * wmask(:,:,jk) * tmask_i(:,:) ) ) 
    543523            WRITE(numout,*) '                jk= ', jk,'   ', ze_z * 1.e4,' cm2/s' 
    544524         END DO 
    545525         DO jk = 1, jpk 
    546526            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(:,:) ) ) 
     527            ze_z =                  SUM( e1e2t(:,:) * zkz  (:,:)    * tmask_i(:,:) )   & 
     528               &     / MAX( 1.e-20, SUM( e1e2t(:,:) * wmask(:,:,jk) * tmask_i(:,:) ) ) 
    549529            WRITE(numout,*)  
    550530            WRITE(numout,*) '          N2 min - jk= ', jk,'   ', ze_z * 1.e4,' cm2/s min= ',MINVAL(zkz)*1.e4,   & 
    551531               &       'max= ', MAXVAL(zkz)*1.e4, ' cm2/s' 
    552532         END DO 
     533!!gm  end bug mpp 
    553534         ! 
    554535      ENDIF 
Note: See TracChangeset for help on using the changeset viewer.