Changeset 5328


Ignore:
Timestamp:
2015-06-01T15:07:18+02:00 (5 years ago)
Author:
pabouttier
Message:

Remove previous performances enhancement due to SETTE tests failure

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynkeg.F90

    r5324 r5328  
    77   !!            7.0  !  1997-05  (G. Madec)  Split dynber into dynkeg and dynhpg 
    88   !!  NEMO      1.0  !  2002-07  (G. Madec)  F90: Free form and module 
    9    !!            3.6  !  2015-05  (N. Ducousso, G. Madec)  add Hollingsworth scheme as an option 
     9   !!            3.6  !  2015-05  (N. Ducousso, G. Madec)  add Hollingsworth scheme as an option  
    1010   !!---------------------------------------------------------------------- 
    11  
     11    
    1212   !!---------------------------------------------------------------------- 
    1313   !!   dyn_keg      : update the momentum trend with the horizontal tke 
     
    2929 
    3030   PUBLIC   dyn_keg    ! routine called by step module 
    31  
     31    
    3232   INTEGER, PARAMETER, PUBLIC  ::   nkeg_C2  = 0   !: 2nd order centered scheme (standard scheme) 
    3333   INTEGER, PARAMETER, PUBLIC  ::   nkeg_HW  = 1   !: Hollingsworth et al., QJRMS, 1983 
    3434   ! 
    3535   REAL(wp) ::   r1_48 = 1._wp / 48._wp   !: =1/(4*2*6) 
    36  
     36    
    3737   !! * Substitutions 
    3838#  include "vectopt_loop_substitute.h90" 
    3939   !!---------------------------------------------------------------------- 
    4040   !! NEMO/OPA 3.6 , NEMO Consortium (2015) 
    41    !! $Id$ 
     41   !! $Id$  
    4242   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
    4343   !!---------------------------------------------------------------------- 
     
    4949      !! 
    5050      !! ** Purpose :   Compute the now momentum trend due to the horizontal 
    51       !!      gradient of the horizontal kinetic energy and add it to the 
     51      !!      gradient of the horizontal kinetic energy and add it to the  
    5252      !!      general momentum trend. 
    5353      !! 
    54       !! ** Method  : * kscheme = nkeg_C2 : 2nd order centered scheme that 
    55       !!      conserve kinetic energy. Compute the now horizontal kinetic energy 
     54      !! ** Method  : * kscheme = nkeg_C2 : 2nd order centered scheme that  
     55      !!      conserve kinetic energy. Compute the now horizontal kinetic energy  
    5656      !!         zhke = 1/2 [ mi-1( un^2 ) + mj-1( vn^2 ) ] 
    5757      !!              * kscheme = nkeg_HW : Hollingsworth correction following 
     
    5959      !!         zhke = 1/6 [ mi-1(  2 * un^2 + ((un(j+1)+un(j-1))/2)^2  ) 
    6060      !!                    + mj-1(  2 * vn^2 + ((vn(i+1)+vn(i-1))/2)^2  ) ] 
    61       !! 
     61      !!       
    6262      !!      Take its horizontal gradient and add it to the general momentum 
    6363      !!      trend (ua,va). 
     
    7272      !!---------------------------------------------------------------------- 
    7373      INTEGER, INTENT( in ) ::   kt        ! ocean time-step index 
    74       INTEGER, INTENT( in ) ::   kscheme   ! =0/1   type of KEG scheme 
     74      INTEGER, INTENT( in ) ::   kscheme   ! =0/1   type of KEG scheme  
    7575      ! 
    7676      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    7777      REAL(wp) ::   zu, zv       ! temporary scalars 
    78       REAL(wp), POINTER, DIMENSION(:,: :: zhke 
    79       REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrdu, ztrdv 
     78      REAL(wp), POINTER, DIMENSION(:,:,:) :: zhke 
     79      REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrdu, ztrdv  
    8080      !!---------------------------------------------------------------------- 
    8181      ! 
    8282      IF( nn_timing == 1 )   CALL timing_start('dyn_keg') 
    8383      ! 
    84       CALL wrk_alloc( jpi,jpj,   zhke ) 
     84      CALL wrk_alloc( jpi,jpj,jpk,   zhke ) 
    8585      ! 
    8686      IF( kt == nit000 ) THEN 
     
    9292      IF( l_trddyn ) THEN           ! Save ua and va trends 
    9393         CALL wrk_alloc( jpi,jpj,jpk,   ztrdu, ztrdv ) 
    94          ztrdu(:,:,:) = ua(:,:,:) 
    95          ztrdv(:,:,:) = va(:,:,:) 
     94         ztrdu(:,:,:) = ua(:,:,:)  
     95         ztrdv(:,:,:) = va(:,:,:)  
    9696      ENDIF 
    97  
    98       zhke(:,:) = 0._wp 
    99  
    100       DO jk = 1, jpkm1 
    101  
    102          SELECT CASE ( kscheme )             !== Horizontal kinetic energy at T-point  ==! 
    103          ! 
    104          CASE ( nkeg_C2 )                          !--  Standard scheme  --! 
    105           
     97       
     98      zhke(:,:,jpk) = 0._wp 
     99       
     100      SELECT CASE ( kscheme )             !== Horizontal kinetic energy at T-point  ==! 
     101      ! 
     102      CASE ( nkeg_C2 )                          !--  Standard scheme  --! 
     103         DO jk = 1, jpkm1 
    106104            DO jj = 2, jpj 
    107105               DO ji = fs_2, jpi   ! vector opt. 
     
    110108                  zv =    vn(ji  ,jj-1,jk) * vn(ji  ,jj-1,jk)   & 
    111109                     &  + vn(ji  ,jj  ,jk) * vn(ji  ,jj  ,jk) 
    112                   zhke(ji,jj) = 0.25_wp * ( zv + zu ) 
    113                END DO 
     110                  zhke(ji,jj,jk) = 0.25_wp * ( zv + zu ) 
     111               END DO   
    114112            END DO 
     113         END DO 
    115114         ! 
    116          CASE ( nkeg_HW )                          !--  Hollingsworth scheme  --! 
    117  
    118             DO jj = 2, jpjm1 
     115      CASE ( nkeg_HW )                          !--  Hollingsworth scheme  --! 
     116         DO jk = 1, jpkm1 
     117            DO jj = 2, jpjm1        
    119118               DO ji = fs_2, jpim1   ! vector opt. 
    120119                  zu = 8._wp * ( un(ji-1,jj  ,jk) * un(ji-1,jj  ,jk)    & 
     
    127126                     &  +      ( vn(ji-1,jj-1,jk) + vn(ji+1,jj-1,jk) ) * ( vn(ji-1,jj-1,jk) + vn(ji+1,jj-1,jk) )   & 
    128127                     &  +      ( vn(ji-1,jj  ,jk) + vn(ji+1,jj  ,jk) ) * ( vn(ji-1,jj  ,jk) + vn(ji+1,jj  ,jk) ) 
    129                   zhke(ji,jj) = r1_48 * ( zv + zu ) 
    130                END DO 
     128                  zhke(ji,jj,jk) = r1_48 * ( zv + zu ) 
     129               END DO   
    131130            END DO 
    132             CALL lbc_lnk( zhke, 'T', 1. ) 
    133             ! 
    134          END SELECT 
     131         END DO 
     132         CALL lbc_lnk( zhke, 'T', 1. ) 
    135133         ! 
     134      END SELECT 
     135      ! 
     136      DO jk = 1, jpkm1                    !==  grad( KE ) added to the general momentum trends  ==! 
    136137         DO jj = 2, jpjm1 
    137138            DO ji = fs_2, fs_jpim1   ! vector opt. 
    138                ua(ji,jj,jk) = ua(ji,jj,jk) - ( zhke(ji+1,jj  ) - zhke(ji,jj) ) / e1u(ji,jj) 
    139                va(ji,jj,jk) = va(ji,jj,jk) - ( zhke(ji  ,jj+1) - zhke(ji,jj) ) / e2v(ji,jj) 
    140             END DO 
     139               ua(ji,jj,jk) = ua(ji,jj,jk) - ( zhke(ji+1,jj  ,jk) - zhke(ji,jj,jk) ) / e1u(ji,jj) 
     140               va(ji,jj,jk) = va(ji,jj,jk) - ( zhke(ji  ,jj+1,jk) - zhke(ji,jj,jk) ) / e2v(ji,jj) 
     141            END DO  
    141142         END DO 
    142  
    143143      END DO 
    144144      ! 
     
    153153         &                       tab3d_2=va, clinfo2=       ' Va: ', mask2=vmask, clinfo3='dyn' ) 
    154154      ! 
    155       CALL wrk_dealloc( jpi,jpj,   zhke ) 
     155      CALL wrk_dealloc( jpi,jpj,jpk,   zhke ) 
    156156      ! 
    157157      IF( nn_timing == 1 )   CALL timing_stop('dyn_keg') 
Note: See TracChangeset for help on using the changeset viewer.