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 5836 for trunk/NEMOGCM/NEMO/OPA_SRC/ZDF – NEMO

Ignore:
Timestamp:
2015-10-26T15:49:40+01:00 (8 years ago)
Author:
cetlod
Message:

merge the simplification branch onto the trunk, see ticket #1612

Location:
trunk/NEMOGCM/NEMO/OPA_SRC/ZDF
Files:
1 deleted
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/OPA_SRC/ZDF/zdf_oce.F90

    r5656 r5836  
    1616   PUBLIC  zdf_oce_alloc    ! Called in nemogcm.F90 
    1717 
    18 #if defined key_zdfcst   ||   defined key_esopa 
     18#if defined key_zdfcst 
    1919   LOGICAL, PARAMETER, PUBLIC ::   lk_zdfcst        = .TRUE.         !: constant vertical mixing flag 
    2020#else 
     
    4545   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   avt_k , avm_k  ! not enhanced Kz 
    4646   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   avmu_k, avmv_k ! not enhanced Kz 
    47    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   en             !: now turbulent kinetic energy   [m2/s2] 
     47   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   en              !: now turbulent kinetic energy   [m2/s2] 
    4848 
    4949   !!---------------------------------------------------------------------- 
     
    6262         &     avtb(jpk) , bfrva(jpi,jpj) , avtb_2d(jpi,jpj) ,      & 
    6363         &     tfrua(jpi, jpj), tfrva(jpi, jpj)              ,      & 
    64          &     avmu  (jpi,jpj,jpk), avm   (jpi,jpj,jpk),            & 
    65          &     avmv  (jpi,jpj,jpk), avt   (jpi,jpj,jpk),            & 
    66          &     avt_k (jpi,jpj,jpk), avm_k (jpi,jpj,jpk),            &  
    67          &     avmu_k(jpi,jpj,jpk), avmv_k(jpi,jpj,jpk),            &  
     64         &     avmu  (jpi,jpj,jpk), avm   (jpi,jpj,jpk)      ,      & 
     65         &     avmv  (jpi,jpj,jpk), avt   (jpi,jpj,jpk)      ,      & 
     66         &     avt_k (jpi,jpj,jpk), avm_k (jpi,jpj,jpk)      ,      &  
     67         &     avmu_k(jpi,jpj,jpk), avmv_k(jpi,jpj,jpk)      ,      & 
    6868         &     en    (jpi,jpj,jpk), STAT = zdf_oce_alloc ) 
    6969         ! 
  • trunk/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfddm.F90

    r5120 r5836  
    99   !!            3.6  ! 2013-04  (G. Madec, F. Roquet) zrau compute locally using interpolation of alpha & beta 
    1010   !!---------------------------------------------------------------------- 
    11 #if defined key_zdfddm   ||   defined key_esopa 
     11#if defined key_zdfddm 
    1212   !!---------------------------------------------------------------------- 
    1313   !!   'key_zdfddm' :                                     double diffusion 
     
    162162         ! ------------------ 
    163163         ! Constant eddy coefficient: reset to the background value 
    164 !CDIR NOVERRCHK 
    165164         DO jj = 1, jpj 
    166 !CDIR NOVERRCHK 
    167165            DO ji = 1, jpi 
    168166               zinr = 1._wp / zrau(ji,jj) 
  • trunk/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfevd.F90

    r4990 r5836  
    77   !! History :  OPA  !  1997-06  (G. Madec, A. Lazar)  Original code 
    88   !!   NEMO     1.0  !  2002-06  (G. Madec)  F90: Free form and module 
    9    !!             -   !  2005-06  (C. Ethe) KPP parameterization 
    109   !!            3.2  !  2009-03  (M. Leclair, G. Madec, R. Benshila) test on both before & after 
    1110   !!---------------------------------------------------------------------- 
    1211 
    1312   !!---------------------------------------------------------------------- 
    14    !!   zdf_evd      : increase the momentum and tracer Kz at the location of 
    15    !!                  statically unstable portion of the water column (ln_zdfevd=T) 
     13   !!   zdf_evd       : increase the momentum and tracer Kz at the location of 
     14   !!                   statically unstable portion of the water column (ln_zdfevd=T) 
    1615   !!---------------------------------------------------------------------- 
    1716   USE oce             ! ocean dynamics and tracers variables 
    1817   USE dom_oce         ! ocean space and time domain variables 
    1918   USE zdf_oce         ! ocean vertical physics variables 
    20    USE zdfkpp          ! KPP vertical mixing 
     19   ! 
    2120   USE in_out_manager  ! I/O manager 
    2221   USE iom             ! for iom_put 
    2322   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
     23   USE wrk_nemo        ! work arrays 
    2424   USE timing          ! Timing 
    2525 
     
    5353      !! References :   Lazar, A., these de l'universite Paris VI, France, 1997 
    5454      !!---------------------------------------------------------------------- 
    55       USE oce,   zavt_evd => ua , zavm_evd => va  ! (ua,va) used ua workspace 
    56       ! 
    5755      INTEGER, INTENT( in ) ::   kt   ! ocean time-step indexocean time step 
    5856      ! 
    5957      INTEGER ::   ji, jj, jk   ! dummy loop indices 
     58      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zavt_evd, zavm_evd 
    6059      !!---------------------------------------------------------------------- 
    6160      ! 
     
    6867         IF(lwp) WRITE(numout,*) 
    6968      ENDIF 
    70  
     69      ! 
     70      CALL wrk_alloc( jpi,jpj,jpk,   zavt_evd, zavm_evd )  
     71      ! 
    7172      zavt_evd(:,:,:) = avt(:,:,:)           ! set avt prior to evd application 
    72  
     73      ! 
    7374      SELECT CASE ( nn_evdm ) 
    7475      ! 
     
    8081            DO jj = 2, jpj             ! no vector opt. 
    8182               DO ji = 2, jpi 
    82 #if defined key_zdfkpp 
    83                   ! no evd mixing in the boundary layer with KPP 
    84                   IF(  MIN( rn2(ji,jj,jk), rn2b(ji,jj,jk) ) <= -1.e-12  .AND.  fsdepw(ji,jj,jk) > hkpp(ji,jj)  ) THEN 
    85 #else 
    8683                  IF(  MIN( rn2(ji,jj,jk), rn2b(ji,jj,jk) ) <= -1.e-12 ) THEN 
    87 #endif 
    8884                     avt (ji  ,jj  ,jk) = rn_avevd * tmask(ji  ,jj  ,jk) 
    8985                     avm (ji  ,jj  ,jk) = rn_avevd * tmask(ji  ,jj  ,jk) 
     
    107103            DO jj = 1, jpj             ! loop over the whole domain (no lbc_lnk call) 
    108104               DO ji = 1, jpi 
    109 #if defined key_zdfkpp 
    110                   ! no evd mixing in the boundary layer with KPP 
    111                   IF(  MIN( rn2(ji,jj,jk), rn2b(ji,jj,jk) ) <= -1.e-12  .AND.  fsdepw(ji,jj,jk) > hkpp(ji,jj)  )   &           
    112 #else 
    113105                  IF(  MIN( rn2(ji,jj,jk), rn2b(ji,jj,jk) ) <= -1.e-12 )   & 
    114 #endif 
    115106                     avt(ji,jj,jk) = rn_avevd * tmask(ji,jj,jk) 
    116107               END DO 
     
    123114      CALL iom_put( "avt_evd", zavt_evd )              ! output this change 
    124115      ! 
     116      CALL wrk_dealloc( jpi,jpj,jpk,   zavt_evd, zavm_evd )  
     117      ! 
    125118      IF( nn_timing == 1 )  CALL timing_stop('zdf_evd') 
    126119      ! 
  • trunk/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfgls.F90

    r5656 r5836  
    88   !!             3.3  !  2010-10  (C. Bricaud)  Add in the reference 
    99   !!---------------------------------------------------------------------- 
    10 #if defined key_zdfgls   ||   defined key_esopa 
     10#if defined key_zdfgls 
    1111   !!---------------------------------------------------------------------- 
    1212   !!   'key_zdfgls'                 Generic Length Scale vertical physics 
     
    116116      !!---------------------------------------------------------------------- 
    117117      ALLOCATE( mxln(jpi,jpj,jpk), zwall(jpi,jpj,jpk) ,     & 
    118          &      ustars2(jpi,jpj), ustarb2(jpi,jpj)                      , STAT= zdf_gls_alloc ) 
     118         &      ustars2(jpi,jpj) , ustarb2(jpi,jpj)   , STAT= zdf_gls_alloc ) 
    119119         ! 
    120120      IF( lk_mpp             )   CALL mpp_sum ( zdf_gls_alloc ) 
     
    154154      IF( nn_timing == 1 )  CALL timing_start('zdf_gls') 
    155155      ! 
    156       CALL wrk_alloc( jpi,jpj, zdep, zkar, zflxs, zhsro ) 
    157       CALL wrk_alloc( jpi,jpj,jpk, eb, mxlb, shear, eps, zwall_psi, z_elem_a, z_elem_b, z_elem_c, psi  ) 
     156      CALL wrk_alloc( jpi,jpj,       zdep, zkar, zflxs, zhsro ) 
     157      CALL wrk_alloc( jpi,jpj,jpk,   eb, mxlb, shear, eps, zwall_psi, z_elem_a, z_elem_b, z_elem_c, psi  ) 
    158158       
    159159      ! Preliminary computing 
     
    169169 
    170170      ! Compute surface and bottom friction at T-points 
    171 !CDIR NOVERRCHK           
    172171      DO jj = 2, jpjm1           
    173 !CDIR NOVERRCHK          
    174172         DO ji = fs_2, fs_jpim1   ! vector opt.          
    175173            ! 
     
    360358         !                      ! en(ibot) = u*^2 / Co2 and mxln(ibot) = rn_lmin 
    361359         !                      ! Balance between the production and the dissipation terms 
    362 !CDIR NOVERRCHK 
    363          DO jj = 2, jpjm1 
    364 !CDIR NOVERRCHK 
     360         DO jj = 2, jpjm1 
    365361            DO ji = fs_2, fs_jpim1   ! vector opt. 
    366362               ibot   = mbkt(ji,jj) + 1      ! k   bottom level of w-point 
     
    383379      CASE ( 1 )             ! Neumman boundary condition 
    384380         !                       
    385 !CDIR NOVERRCHK 
    386          DO jj = 2, jpjm1 
    387 !CDIR NOVERRCHK 
     381         DO jj = 2, jpjm1 
    388382            DO ji = fs_2, fs_jpim1   ! vector opt. 
    389383               ibot   = mbkt(ji,jj) + 1      ! k   bottom level of w-point 
     
    588582         !                      ! en(ibot) = u*^2 / Co2 and mxln(ibot) = vkarmn * rn_bfrz0 
    589583         !                      ! Balance between the production and the dissipation terms 
    590 !CDIR NOVERRCHK 
    591          DO jj = 2, jpjm1 
    592 !CDIR NOVERRCHK 
     584         DO jj = 2, jpjm1 
    593585            DO ji = fs_2, fs_jpim1   ! vector opt. 
    594586               ibot   = mbkt(ji,jj) + 1      ! k   bottom level of w-point 
     
    611603      CASE ( 1 )             ! Neumman boundary condition 
    612604         !                       
    613 !CDIR NOVERRCHK 
    614          DO jj = 2, jpjm1 
    615 !CDIR NOVERRCHK 
     605         DO jj = 2, jpjm1 
    616606            DO ji = fs_2, fs_jpim1   ! vector opt. 
    617607               ibot   = mbkt(ji,jj) + 1      ! k   bottom level of w-point 
     
    834824      avmv_k(:,:,:) = avmv(:,:,:) 
    835825      ! 
    836       CALL wrk_dealloc( jpi,jpj, zdep, zkar, zflxs, zhsro ) 
    837       CALL wrk_dealloc( jpi,jpj,jpk, eb, mxlb, shear, eps, zwall_psi, z_elem_a, z_elem_b, z_elem_c, psi ) 
     826      CALL wrk_dealloc( jpi,jpj,       zdep, zkar, zflxs, zhsro ) 
     827      CALL wrk_dealloc( jpi,jpj,jpk,   eb, mxlb, shear, eps, zwall_psi, z_elem_a, z_elem_b, z_elem_c, psi ) 
    838828      ! 
    839829      IF( nn_timing == 1 )  CALL timing_stop('zdf_gls') 
  • trunk/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfini.F90

    r5386 r5836  
    66   !! History :  8.0  ! 1997-06  (G. Madec)  Original code from inimix 
    77   !!            1.0  ! 2002-08  (G. Madec)  F90 : free form 
    8    !!             -   ! 2005-06  (C. Ethe) KPP parameterization 
     8   !!             -   ! 2005-06  (C. Ethe) KPP scheme 
    99   !!             -   ! 2009-07  (G. Madec) add avmb, avtb in restart for cen2 advection 
     10   !!            3.7  ! 2014-12  (G. Madec) remove KPP scheme 
    1011   !!---------------------------------------------------------------------- 
    1112 
     
    1415   !!---------------------------------------------------------------------- 
    1516   USE par_oce         ! mesh and scale factors 
    16    USE ldftra_oce      ! ocean active tracers: lateral physics 
    17    USE ldfdyn_oce      ! ocean dynamics lateral physics 
    1817   USE zdf_oce         ! TKE vertical mixing           
    19    USE lib_mpp         ! distribued memory computing 
     18   USE sbc_oce         ! surface module (only for nn_isf in the option compatibility test) 
    2019   USE zdftke          ! TKE vertical mixing 
    2120   USE zdfgls          ! GLS vertical mixing 
    22    USE zdfkpp          ! KPP vertical mixing           
     21   USE zdfric          ! Richardson vertical mixing    
    2322   USE zdfddm          ! double diffusion mixing       
    2423   USE zdfevd          ! enhanced vertical diffusion   
    25    USE zdfric          ! Richardson vertical mixing    
    2624   USE tranpc          ! convection: non penetrative adjustment 
    2725   USE ldfslp          ! iso-neutral slopes 
    28  
     26   ! 
    2927   USE in_out_manager  ! I/O manager 
    3028   USE iom             ! IOM library 
     29   USE lib_mpp         ! distribued memory computing 
    3130 
    3231   IMPLICIT NONE 
     
    5049      !! ** Method  :   Read namelist namzdf, control logicals  
    5150      !!---------------------------------------------------------------------- 
    52       INTEGER ::   ioptio       ! temporary scalar 
    53       INTEGER ::   ios 
     51      INTEGER ::   ioptio, ios       ! local integers 
    5452      !! 
    5553      NAMELIST/namzdf/ rn_avm0, rn_avt0, nn_avb, nn_havtb, ln_zdfexp, nn_zdfexp,   & 
     
    111109         ioptio = ioptio+1 
    112110      ENDIF 
    113       IF( lk_zdfkpp ) THEN 
    114          IF(lwp) WRITE(numout,*) '      KPP dependent eddy coefficients' 
    115          ioptio = ioptio+1 
    116       ENDIF 
    117       IF( ioptio == 0 .OR. ioptio > 1 .AND. .NOT. lk_esopa )   & 
     111      IF( ioptio == 0 .OR. ioptio > 1 )   & 
    118112         &   CALL ctl_stop( ' one and only one vertical diffusion option has to be defined ' ) 
    119       IF( ( lk_zdfric .OR. lk_zdfgls .OR. lk_zdfkpp ) .AND. ln_isfcav )   & 
     113      IF( ( lk_zdfric .OR. lk_zdfgls ) .AND. ln_isfcav )   & 
    120114         &   CALL ctl_stop( ' only zdfcst and zdftke were tested with ice shelves cavities ' ) 
    121115      ! 
     
    143137         IF(lwp) WRITE(numout,*) '      use the GLS closure scheme' 
    144138      ENDIF 
    145       IF( lk_zdfkpp ) THEN 
    146          IF(lwp) WRITE(numout,*) '      use the KPP closure scheme' 
    147          IF(lk_mpp) THEN 
    148             IF(lwp) WRITE(numout,cform_err) 
    149             IF(lwp) WRITE(numout,*) 'The KPP scheme is not ready to run in MPI' 
    150          ENDIF 
    151       ENDIF 
    152       IF ( ioptio > 1 .AND. .NOT. lk_esopa )   CALL ctl_stop( ' chose between ln_zdfnpc and ln_zdfevd' ) 
    153       IF( ioptio == 0 .AND. .NOT.( lk_zdftke .OR. lk_zdfgls .OR. lk_zdfkpp ) )           & 
    154          CALL ctl_stop( ' except for TKE, GLS or KPP physics, a convection scheme is',   & 
     139      IF ( ioptio > 1 )   CALL ctl_stop( ' chose between ln_zdfnpc and ln_zdfevd' ) 
     140      IF( ioptio == 0 .AND. .NOT.( lk_zdftke .OR. lk_zdfgls ) )           & 
     141         CALL ctl_stop( ' except for TKE or GLS physics, a convection scheme is',   & 
    155142         &              ' required: ln_zdfevd or ln_zdfnpc logicals' ) 
    156143 
  • trunk/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfric.F90

    r4624 r5836  
    1313   !!            3.3.1! 2011-09  (P. Oddo) Mixed layer depth parameterization 
    1414   !!---------------------------------------------------------------------- 
    15 #if defined key_zdfric   ||   defined key_esopa 
     15#if defined key_zdfric 
    1616   !!---------------------------------------------------------------------- 
    1717   !!   'key_zdfric'                                             Kz = f(Ri) 
  • trunk/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftke.F90

    r5803 r5836  
    2828   !!            3.6  !  2014-11  (P. Mathiot) add ice shelf capability 
    2929   !!---------------------------------------------------------------------- 
    30 #if defined key_zdftke   ||   defined key_esopa 
     30#if defined key_zdftke 
    3131   !!---------------------------------------------------------------------- 
    3232   !!   'key_zdftke'                                   TKE vertical physics 
     
    102102#  include "vectopt_loop_substitute.h90" 
    103103   !!---------------------------------------------------------------------- 
    104    !! NEMO/OPA 4.0 , NEMO Consortium (2011) 
     104   !! NEMO/OPA 3.7 , NEMO Consortium (2015) 
    105105   !! $Id$ 
    106106   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     
    117117         &      e_pdl(jpi,jpj,jpk) , e_ric(jpi,jpj,jpk) ,                          & 
    118118#endif 
    119          &      apdlr(jpi,jpj,jpk) , htau  (jpi,jpj)    , dissl(jpi,jpj,jpk) ,     &  
    120          &      STAT= zdf_tke_alloc      ) 
     119         &      htau  (jpi,jpj)    , dissl(jpi,jpj,jpk) ,     &  
     120         &      apdlr(jpi,jpj,jpk) ,                                           STAT= zdf_tke_alloc      ) 
    121121         ! 
    122122      IF( lk_mpp             )   CALL mpp_sum ( zdf_tke_alloc ) 
     
    232232      REAL(wp) ::   zzd_up, zzd_lw                  !    -         - 
    233233!!bfr      REAL(wp) ::   zebot                           !    -         - 
    234       INTEGER , POINTER, DIMENSION(:,:  ) :: imlc 
    235       REAL(wp), POINTER, DIMENSION(:,:  ) :: zhlc 
    236       REAL(wp), POINTER, DIMENSION(:,:,:) :: zpelc, zdiag, zd_up, zd_lw, z3du, z3dv 
     234      INTEGER , POINTER, DIMENSION(:,:  ) ::   imlc 
     235      REAL(wp), POINTER, DIMENSION(:,:  ) ::   zhlc 
     236      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zpelc, zdiag, zd_up, zd_lw, z3du, z3dv 
    237237      REAL(wp)                            ::   zri  !   local Richardson number 
    238238      !!-------------------------------------------------------------------- 
     
    240240      IF( nn_timing == 1 )  CALL timing_start('tke_tke') 
    241241      ! 
    242       CALL wrk_alloc( jpi,jpj, imlc )    ! integer 
    243       CALL wrk_alloc( jpi,jpj, zhlc )  
    244       CALL wrk_alloc( jpi,jpj,jpk, zpelc, zdiag, zd_up, zd_lw, z3du, z3dv )  
     242      CALL wrk_alloc( jpi,jpj,       imlc )    ! integer 
     243      CALL wrk_alloc( jpi,jpj,       zhlc )  
     244      CALL wrk_alloc( jpi,jpj,jpk,   zpelc, zdiag, zd_up, zd_lw, z3du, z3dv )  
    245245      ! 
    246246      zbbrau = rn_ebb / rau0       ! Local constant initialisation 
     
    256256         DO jj = 2, jpjm1            ! en(mikt(ji,jj))   = rn_emin 
    257257            DO ji = fs_2, fs_jpim1   ! vector opt. 
    258                en(ji,jj,mikt(ji,jj))=rn_emin * tmask(ji,jj,1) 
     258               en(ji,jj,mikt(ji,jj)) = rn_emin * tmask(ji,jj,1) 
    259259            END DO 
    260260         END DO 
     
    277277      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    278278      !                     en(bot)   = (rn_ebb0/rau0)*0.5*sqrt(u_botfr^2+v_botfr^2) (min value rn_emin) 
    279 !CDIR NOVERRCHK 
    280279!!    DO jj = 2, jpjm1 
    281 !CDIR NOVERRCHK 
    282280!!       DO ji = fs_2, fs_jpim1   ! vector opt. 
    283281!!          ztx2 = bfrua(ji-1,jj) * ub(ji-1,jj,mbku(ji-1,jj)) + & 
     
    318316         END DO 
    319317         zcof = 0.016 / SQRT( zrhoa * zcdrag ) 
    320 !CDIR NOVERRCHK 
    321318         DO jk = 2, jpkm1         !* TKE Langmuir circulation source term added to en 
    322 !CDIR NOVERRCHK 
    323             DO jj = 2, jpjm1 
    324 !CDIR NOVERRCHK 
     319            DO jj = 2, jpjm1 
    325320               DO ji = fs_2, fs_jpim1   ! vector opt. 
    326321                  zus  = zcof * SQRT( taum(ji,jj) )           ! Stokes drift 
     
    376371         ! 
    377372      ENDIF 
    378          !          
     373      !          
    379374      DO jk = 2, jpkm1           !* Matrix and right hand side in en 
    380375         DO jj = 2, jpjm1 
     
    408403         END DO 
    409404      END DO 
    410       ! 
    411       ! Second recurrence : Lk = RHSk - Lk / Dk-1 * Lk-1 
    412       DO jj = 2, jpjm1 
     405      DO jj = 2, jpjm1                             ! Second recurrence : Lk = RHSk - Lk / Dk-1 * Lk-1 
    413406         DO ji = fs_2, fs_jpim1   ! vector opt. 
    414407            zd_lw(ji,jj,2) = en(ji,jj,2) - zd_lw(ji,jj,2) * en(ji,jj,1)    ! Surface boudary conditions on tke 
     
    422415         END DO 
    423416      END DO 
    424       ! 
    425       ! thrid recurrence : Ek = ( Lk - Uk * Ek+1 ) / Dk 
    426       DO jj = 2, jpjm1 
     417      DO jj = 2, jpjm1                             ! thrid recurrence : Ek = ( Lk - Uk * Ek+1 ) / Dk 
    427418         DO ji = fs_2, fs_jpim1   ! vector opt. 
    428419            en(ji,jj,jpkm1) = zd_lw(ji,jj,jpkm1) / zdiag(ji,jj,jpkm1) 
     
    465456         END DO 
    466457      ELSEIF( nn_etau == 3 ) THEN       !* penetration belox the mixed layer (HF variability) 
    467 !CDIR NOVERRCHK 
    468458         DO jk = 2, jpkm1 
    469 !CDIR NOVERRCHK 
    470             DO jj = 2, jpjm1 
    471 !CDIR NOVERRCHK 
     459            DO jj = 2, jpjm1 
    472460               DO ji = fs_2, fs_jpim1   ! vector opt. 
    473461                  ztx2 = utau(ji-1,jj  ) + utau(ji,jj) 
     
    484472      CALL lbc_lnk( en, 'W', 1. )      ! Lateral boundary conditions (sign unchanged) 
    485473      ! 
    486       CALL wrk_dealloc( jpi,jpj, imlc )    ! integer 
    487       CALL wrk_dealloc( jpi,jpj, zhlc )  
    488       CALL wrk_dealloc( jpi,jpj,jpk, zpelc, zdiag, zd_up, zd_lw, z3du, z3dv )  
     474      CALL wrk_dealloc( jpi,jpj,       imlc )    ! integer 
     475      CALL wrk_dealloc( jpi,jpj,       zhlc )  
     476      CALL wrk_dealloc( jpi,jpj,jpk,   zpelc, zdiag, zd_up, zd_lw, z3du, z3dv )  
    489477      ! 
    490478      IF( nn_timing == 1 )  CALL timing_stop('tke_tke') 
     
    530518      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    531519      REAL(wp) ::   zrn2, zraug, zcoef, zav     ! local scalars 
    532       REAL(wp) ::   zdku, zri, zsqen     !   -      - 
     520      REAL(wp) ::   zdku, zri, zsqen            !   -      - 
    533521      REAL(wp) ::   zdkv, zemxl, zemlm, zemlp   !   -      - 
    534522      REAL(wp), POINTER, DIMENSION(:,:,:) :: zmpdl, zmxlm, zmxld 
     
    560548      ENDIF 
    561549      ! 
    562 !CDIR NOVERRCHK 
    563550      DO jk = 2, jpkm1              ! interior value : l=sqrt(2*e/n^2) 
    564 !CDIR NOVERRCHK 
    565          DO jj = 2, jpjm1 
    566 !CDIR NOVERRCHK 
     551         DO jj = 2, jpjm1 
    567552            DO ji = fs_2, fs_jpim1   ! vector opt. 
    568553               zrn2 = MAX( rn2(ji,jj,jk), rsmall ) 
    569                zmxlm(ji,jj,jk) = MAX(  rmxl_min,  SQRT( 2._wp * en(ji,jj,jk) / zrn2 ) ) 
     554               zmxlm(ji,jj,jk) = MAX(  rmxl_min,  SQRT( 2._wp * en(ji,jj,jk) / zrn2 )  ) 
    570555            END DO 
    571556         END DO 
     
    574559      !                     !* Physical limits for the mixing length 
    575560      ! 
    576       zmxld(:,:,1 ) = zmxlm(:,:,1)   ! surface set to the minimum value  
     561      zmxld(:,:, 1 ) = zmxlm(:,:,1)   ! surface set to the minimum value  
    577562      zmxld(:,:,jpk) = rmxl_min       ! last level  set to the minimum value 
    578563      ! 
    579564      SELECT CASE ( nn_mxl ) 
    580565      ! 
     566 !!gm Not sure of that coding for ISF.... 
    581567      ! where wmask = 0 set zmxlm == fse3w 
    582568      CASE ( 0 )           ! bounded by the distance to surface and bottom 
     
    637623            END DO 
    638624         END DO 
    639 !CDIR NOVERRCHK 
    640625         DO jk = 2, jpkm1 
    641 !CDIR NOVERRCHK 
    642             DO jj = 2, jpjm1 
    643 !CDIR NOVERRCHK 
     626            DO jj = 2, jpjm1 
    644627               DO ji = fs_2, fs_jpim1   ! vector opt. 
    645628                  zemlm = MIN ( zmxld(ji,jj,jk),  zmxlm(ji,jj,jk) ) 
     
    661644      !                     !  Vertical eddy viscosity and diffusivity  (avmu, avmv, avt) 
    662645      !                     !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    663 !CDIR NOVERRCHK 
    664646      DO jk = 1, jpkm1            !* vertical eddy viscosity & diffivity at w-points 
    665 !CDIR NOVERRCHK 
    666          DO jj = 2, jpjm1 
    667 !CDIR NOVERRCHK 
     647         DO jj = 2, jpjm1 
    668648            DO ji = fs_2, fs_jpim1   ! vector opt. 
    669649               zsqen = SQRT( en(ji,jj,jk) ) 
     
    694674# if defined key_c1d 
    695675                  e_pdl(ji,jj,jk) = apdlr(ji,jj,jk) * wmask(ji,jj,jk)    ! c1d configuration : save masked Prandlt number 
     676!!gm bug NO zri here.... 
     677!!gm remove the specific diag for c1d ! 
    696678                  e_ric(ji,jj,jk) = zri * wmask(ji,jj,jk)                            ! c1d config. : save Ri 
    697679# endif 
  • trunk/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftmx.F90

    r5130 r5836  
    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.