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 8055 for branches/2017/wrk_OMP_test_for_Silvia/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfddm.F90 – NEMO

Ignore:
Timestamp:
2017-05-20T13:49:38+02:00 (7 years ago)
Author:
gm
Message:

wrk_OMP: 2nd step: add OMP processor distribution in ZDF package

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/wrk_OMP_test_for_Silvia/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfddm.F90

    r7990 r8055  
    3131 
    3232   !! * Substitutions 
    33 #  include "vectopt_loop_substitute.h90" 
     33#  include "domain_substitute.h90"    
    3434   !!---------------------------------------------------------------------- 
    3535   !! NEMO/OPA 3.7 , NEMO Consortium (2014) 
     
    3939CONTAINS 
    4040 
    41    SUBROUTINE zdf_ddm( kt ) 
     41   SUBROUTINE zdf_ddm( ARG_2D, kt, p_avm, p_avt, p_avs ) 
    4242      !!---------------------------------------------------------------------- 
    4343      !!                  ***  ROUTINE zdf_ddm  *** 
     
    6969      !! References :   Merryfield et al., JPO, 29, 1124-1142, 1999. 
    7070      !!---------------------------------------------------------------------- 
    71       INTEGER, INTENT(in) ::   kt   ! ocean time-step indexocean time step 
     71      INTEGER, INTENT(in   ) ::   ARG_2D   ! inner domain start-end i-indices 
     72      INTEGER, INTENT(in   ) ::   kt       ! ocean time-step indexocean time step 
     73      REAL(wp), DIMENSION(:,:,:), INTENT(inout) ::   p_avm   !  Kz on momentum    (w-points) 
     74      REAL(wp), DIMENSION(:,:,:), INTENT(inout) ::   p_avt   !  Kz on temperature (w-points) 
     75      REAL(wp), DIMENSION(:,:,:), INTENT(  out) ::   p_avs   !  Kz on salinity    (w-points) 
    7276      ! 
    7377      INTEGER  ::   ji, jj , jk     ! dummy loop indices 
     
    7781      REAL(wp) ::   zavft, zavfs    !   -      - 
    7882      REAL(wp) ::   zavdt, zavds    !   -      - 
    79       REAL(wp), DIMENSION(jpi,jpj) ::   zrau, zmsks, zmskf, zmskd1, zmskd2, zmskd3 
     83      REAL(wp), DIMENSION(WRK_2D) ::   zrau, zmsks, zmskf, zmskd1, zmskd2, zmskd3 
    8084      !!---------------------------------------------------------------------- 
    8185      ! 
     
    9195!!gm                            and many acces in memory 
    9296          
    93          DO jj = 1, jpj                                ! R=zrau = (alpha / beta) (dk[t] / dk[s]) 
    94             DO ji = 1, jpi 
     97         DO jj = k_Jstr, k_Jend        !==  R=zrau = (alpha / beta) (dk[t] / dk[s])  ==! 
     98            DO ji = k_Jstr, k_Iend 
    9599               zrw =   ( gdepw_n(ji,jj,jk  ) - gdept_n(ji,jj,jk) )   & 
    96100!!gm please, use e3w_n below  
     
    109113         END DO 
    110114 
    111          DO jj = 1, jpj                                     ! indicators: 
    112             DO ji = 1, jpi 
     115         DO jj = k_Jstr, k_Jend          !==  indicators  ==! 
     116            DO ji = k_Jstr, k_Iend 
    113117               ! stability indicator: msks=1 if rn2>0; 0 elsewhere 
    114118               IF( rn2(ji,jj,jk) + 1.e-12  <= 0. ) THEN   ;   zmsks(ji,jj) = 0._wp 
     
    135139         END DO 
    136140         ! mask zmsk in order to have avt and avs masked 
    137          zmsks(:,:) = zmsks(:,:) * wmask(:,:,jk) 
     141         zmsks(WRK_2D) = zmsks(WRK_2D) * wmask(WRK_2D,jk) 
    138142 
    139143 
     
    141145         ! ------------------ 
    142146         ! Constant eddy coefficient: reset to the background value 
    143          DO jj = 1, jpj 
    144             DO ji = 1, jpi 
     147         DO jj = k_Jstr, k_Jend 
     148            DO ji = k_Jstr, k_Iend 
    145149               zinr = 1._wp / zrau(ji,jj) 
    146150               ! salt fingering 
     
    154158                  &                             +  0.15 * zrau(ji,jj)          * zmskd2(ji,jj)  ) 
    155159               ! add to the eddy viscosity coef. previously computed 
    156                avs(ji,jj,jk) = avt(ji,jj,jk) + zavfs + zavds 
    157                avt(ji,jj,jk) = avt(ji,jj,jk) + zavft + zavdt 
    158                avm(ji,jj,jk) = avm(ji,jj,jk) + MAX( zavft + zavdt, zavfs + zavds ) 
     160               p_avs(ji,jj,jk) = p_avt(ji,jj,jk) + zavfs + zavds 
     161               p_avt(ji,jj,jk) = p_avt(ji,jj,jk) + zavft + zavdt 
     162               p_avm(ji,jj,jk) = p_avm(ji,jj,jk) + MAX( zavft + zavdt, zavfs + zavds ) 
    159163            END DO 
    160164         END DO 
Note: See TracChangeset for help on using the changeset viewer.