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 2625 for branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/dynkeg.F90 – NEMO

Ignore:
Timestamp:
2011-02-27T17:36:24+01:00 (13 years ago)
Author:
gm
Message:

dynamic mem: #785 ; OPA_SRC mpp compilation: suppression of the USE in_out_manager in lib_mpp + style in DYN

File:
1 edited

Legend:

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

    r2590 r2625  
    2929   !! NEMO/OPA 3.3 , NEMO Consortium (2010) 
    3030   !! $Id$  
    31    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
     31   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
    3232   !!---------------------------------------------------------------------- 
    33  
    3433CONTAINS 
    3534 
     
    5251      !!             - save this trends (l_trddyn=T) for post-processing 
    5352      !!---------------------------------------------------------------------- 
    54       USE oce, ONLY :   ztrdu => ta   ! use ta as 3D workspace    
    55       USE oce, ONLY :   ztrdv => sa   ! use sa as 3D workspace    
    56       USE wrk_nemo, ONLY: wrk_use, wrk_release 
    57       USE wrk_nemo, ONLY: zhke => wrk_3d_1 
     53      USE wrk_nemo, ONLY:   wrk_use, wrk_release 
     54      USE oce     , ONLY:   ztrdu => ta       , ztrdv => sa   ! (ta,sa) used as 3D workspace    
     55      USE wrk_nemo, ONLY:   zhke  => wrk_3d_1                 ! 3D workspace 
    5856      !! 
    5957      INTEGER, INTENT( in ) ::   kt   ! ocean time-step index 
     
    6361      !!---------------------------------------------------------------------- 
    6462 
    65       IF(.NOT. wrk_use(3,1))THEN 
    66          CALL ctl_stop('dyn_key: requested workspace array is unavailable.') 
    67       END IF 
     63      IF(.NOT. wrk_use(3,1) ) THEN 
     64         CALL ctl_stop('dyn_key: requested workspace array is unavailable.')   ;   RETURN 
     65      ENDIF 
    6866 
    6967      IF( kt == nit000 ) THEN 
     
    8886                  &         + vn(ji  ,jj  ,jk) * vn(ji  ,jj  ,jk)  ) 
    8987               zhke(ji,jj,jk) = zv + zu 
     88!!gm simplier coding  ==>>   ~ faster 
     89!    don't forget to suppress local zu zv scalars 
     90!               zhke(ji,jj,jk) = 0.25 * (   un(ji-1,jj  ,jk) * un(ji-1,jj  ,jk)   & 
     91!                  &                      + un(ji  ,jj  ,jk) * un(ji  ,jj  ,jk)   & 
     92!                  &                      + vn(ji  ,jj-1,jk) * vn(ji  ,jj-1,jk)   & 
     93!                  &                      + vn(ji  ,jj  ,jk) * vn(ji  ,jj  ,jk)   ) 
     94!!gm end <<== 
    9095            END DO   
    9196         END DO   
     
    96101            END DO  
    97102         END DO 
     103!!gm idea to be tested  ==>>   is it faster on scalar computers ? 
     104!         DO jj = 2, jpjm1       ! add the gradient of kinetic energy to the general momentum trends 
     105!            DO ji = fs_2, fs_jpim1   ! vector opt. 
     106!               ua(ji,jj,jk) = ua(ji,jj,jk) - 0.25 * ( + un(ji+1,jj  ,jk) * un(ji+1,jj  ,jk)   & 
     107!                  &                                   + vn(ji+1,jj-1,jk) * vn(ji+1,jj-1,jk)   & 
     108!                  &                                   + vn(ji+1,jj  ,jk) * vn(ji+1,jj  ,jk)   & 
     109!                  ! 
     110!                  &                                   - un(ji-1,jj  ,jk) * un(ji-1,jj  ,jk)   & 
     111!                  &                                   - vn(ji  ,jj-1,jk) * vn(ji  ,jj-1,jk)   & 
     112!                  &                                   - vn(ji  ,jj  ,jk) * vn(ji  ,jj  ,jk)   ) / e1u(ji,jj) 
     113!                  ! 
     114!               va(ji,jj,jk) = va(ji,jj,jk) - 0.25 * (   un(ji-1,jj+1,jk) * un(ji-1,jj+1,jk)   & 
     115!                  &                                   + un(ji  ,jj+1,jk) * un(ji  ,jj+1,jk)   & 
     116!                  &                                   + vn(ji  ,jj+1,jk) * vn(ji  ,jj+1,jk)   & 
     117!                  ! 
     118!                  &                                   - un(ji-1,jj  ,jk) * un(ji-1,jj  ,jk)   & 
     119!                  &                                   - un(ji  ,jj  ,jk) * un(ji  ,jj  ,jk)   & 
     120!                  &                                   - vn(ji  ,jj  ,jk) * vn(ji  ,jj  ,jk)   ) / e2v(ji,jj) 
     121!            END DO  
     122!         END DO 
     123!!gm en idea            <<== 
    98124         !                                             ! =============== 
    99125      END DO                                           !   End of slab 
     
    109135         &                       tab3d_2=va, clinfo2=       ' Va: ', mask2=vmask, clinfo3='dyn' ) 
    110136      ! 
    111       IF(.NOT. wrk_release(3,1))THEN 
    112          CALL ctl_stop('dyn_key: failed to release workspace array.') 
    113       END IF 
    114  
     137      IF(.NOT. wrk_release(3, 1) )   CALL ctl_stop('dyn_key: failed to release workspace array') 
     138      ! 
    115139   END SUBROUTINE dyn_keg 
    116140 
Note: See TracChangeset for help on using the changeset viewer.