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 8279 for branches/2017/wrk_OMP_test_for_Silvia/NEMOGCM/NEMO – NEMO

Ignore:
Timestamp:
2017-07-04T17:46:48+02:00 (7 years ago)
Author:
mocavero
Message:

Implementation of OMP coarse-grained parallelization on ZDF new package

Location:
branches/2017/wrk_OMP_test_for_Silvia/NEMOGCM/NEMO/OPA_SRC
Files:
1 added
10 edited

Legend:

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

    r8055 r8279  
    9595!!gm                            and many acces in memory 
    9696          
    97          DO jj = k_Jstr, k_Jend        !==  R=zrau = (alpha / beta) (dk[t] / dk[s])  ==! 
    98             DO ji = k_Jstr, k_Iend 
     97         DO jj = tnldj, tnlej        !==  R=zrau = (alpha / beta) (dk[t] / dk[s])  ==! 
     98            DO ji = tnldi, tnlei 
    9999               zrw =   ( gdepw_n(ji,jj,jk  ) - gdept_n(ji,jj,jk) )   & 
    100100!!gm please, use e3w_n below  
     
    113113         END DO 
    114114 
    115          DO jj = k_Jstr, k_Jend          !==  indicators  ==! 
    116             DO ji = k_Jstr, k_Iend 
     115         DO jj = tnldj, tnlej          !==  indicators  ==! 
     116            DO ji = tnldi, tnlei 
    117117               ! stability indicator: msks=1 if rn2>0; 0 elsewhere 
    118118               IF( rn2(ji,jj,jk) + 1.e-12  <= 0. ) THEN   ;   zmsks(ji,jj) = 0._wp 
     
    145145         ! ------------------ 
    146146         ! Constant eddy coefficient: reset to the background value 
    147          DO jj = k_Jstr, k_Jend 
    148             DO ji = k_Jstr, k_Iend 
     147         DO jj = tnldj, tnlej 
     148            DO ji = tnldi, tnlei 
    149149               zinr = 1._wp / zrau(ji,jj) 
    150150               ! salt fingering 
  • branches/2017/wrk_OMP_test_for_Silvia/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfevd.F90

    r8055 r8279  
    9898         ! 
    9999         DO jk = 1, jpkm1  
    100             DO jj = k_Jstr, k_Jend 
    101                DO ji = k_Jstr, k_Iend 
     100            DO jj = tnldj, tnlej 
     101               DO ji = tnldi, tnlei 
    102102                  IF(  MIN( rn2(ji,jj,jk), rn2b(ji,jj,jk) ) <= -1.e-12 ) THEN 
    103103                     p_avt(ji,jj,jk) = rn_evd * wmask(ji,jj,jk) 
  • branches/2017/wrk_OMP_test_for_Silvia/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfgls.F90

    r8055 r8279  
    159159      ! Preliminary computing 
    160160 
    161       ustars2 = 0._wp   ;   ustarb2 = 0._wp   ;   psi  = 0._wp   ;   zwall_psi = 0._wp 
     161      ustars2(WRK_2D) = 0._wp   ;   ustarb2(WRK_2D) = 0._wp   ;   psi  = 0._wp   ;   zwall_psi = 0._wp 
    162162 
    163163 
    164164      ! Compute surface and bottom friction at T-points 
    165       DO jj = k_Jstr, k_Jend  
    166          DO ji = k_Istr, k_Iend 
     165      DO jj = tnldj, tnlej  
     166         DO ji = tnldi, tnlei 
    167167            ! 
    168168            ! surface friction 
     
    195195      ! 
    196196      DO jk = 2, jpkm1              !==  Compute dissipation rate  ==! 
    197          DO jj = k_Jstr, k_Jend  
    198             DO ji = k_Istr, k_Iend 
     197         DO jj = tnldj, tnlej  
     198            DO ji = tnldi, tnlei 
    199199               eps(ji,jj,jk)  = rc03 * en(ji,jj,jk) * SQRT( en(ji,jj,jk) ) / hmxl_n(ji,jj,jk) 
    200200            END DO 
     
    208208      IF( nn_clos == 0 ) THEN    ! Mellor-Yamada 
    209209         DO jk = 2, jpkm1 
    210             DO jj = k_Jstr, k_Jend  
    211                DO ji = k_Istr, k_Iend 
     210            DO jj = tnldj, tnlej  
     211               DO ji = tnldi, tnlei 
    212212                  zup   = hmxl_n(ji,jj,jk) * gdepw_n(ji,jj,mbkt(ji,jj)+1) 
    213213                  zdown = vkarmn * gdepw_n(ji,jj,jk) * ( -gdepw_n(ji,jj,jk) + gdepw_n(ji,jj,mbkt(ji,jj)+1) ) 
     
    233233 
    234234      DO jk = 2, jpkm1 
    235          DO jj = k_Jstr, k_Jend  
    236             DO ji = k_Istr, k_Iend 
     235         DO jj = tnldj, tnlej  
     236            DO ji = tnldi, tnlei 
    237237               ! 
    238238               buoy = - p_avt(ji,jj,jk) * rn2(ji,jj,jk)       ! stratif. destruction 
     
    329329         !                      ! en(ibot) = u*^2 / Co2 and hmxl_n(ibot) = rn_lmin 
    330330         !                      ! Balance between the production and the dissipation terms 
    331          DO jj = k_Jstr, k_Jend  
    332             DO ji = k_Istr, k_Iend 
     331         DO jj = tnldj, tnlej  
     332            DO ji = tnldi, tnlei 
    333333               ibot   = mbkt(ji,jj) + 1      ! k   bottom level of w-point 
    334334               ibotm1 = mbkt(ji,jj)          ! k-1 bottom level of w-point but >=1 
     
    350350      CASE ( 1 )             ! Neumman boundary condition 
    351351         !                       
    352          DO jj = k_Jstr, k_Jend  
    353             DO ji = k_Istr, k_Iend 
     352         DO jj = tnldj, tnlej  
     353            DO ji = tnldi, tnlei 
    354354               ibot   = mbkt(ji,jj) + 1      ! k   bottom level of w-point 
    355355               ibotm1 = mbkt(ji,jj)          ! k-1 bottom level of w-point but >=1 
     
    373373      ! 
    374374      DO jk = 2, jpkm1                             ! First recurrence : Dk = Dk - Lk * Uk-1 / Dk-1 
    375          DO jj = k_Jstr, k_Jend  
    376             DO ji = k_Istr, k_Iend 
     375         DO jj = tnldj, tnlej  
     376            DO ji = tnldi, tnlei 
    377377               z_elem_b(ji,jj,jk) = z_elem_b(ji,jj,jk) - z_elem_a(ji,jj,jk) * z_elem_c(ji,jj,jk-1) / z_elem_b(ji,jj,jk-1) 
    378378            END DO 
     
    380380      END DO 
    381381      DO jk = 2, jpk                               ! Second recurrence : Lk = RHSk - Lk / Dk-1 * Lk-1 
    382          DO jj = k_Jstr, k_Jend  
    383             DO ji = k_Istr, k_Iend 
     382         DO jj = tnldj, tnlej  
     383            DO ji = tnldi, tnlei 
    384384               z_elem_a(ji,jj,jk) = en(ji,jj,jk) - z_elem_a(ji,jj,jk) / z_elem_b(ji,jj,jk-1) * z_elem_a(ji,jj,jk-1) 
    385385            END DO 
     
    387387      END DO 
    388388      DO jk = jpk-1, 2, -1                         ! thrid recurrence : Ek = ( Lk - Uk * Ek+1 ) / Dk 
    389          DO jj = k_Jstr, k_Jend  
    390             DO ji = k_Istr, k_Iend 
     389         DO jj = tnldj, tnlej  
     390            DO ji = tnldi, tnlei 
    391391               en(ji,jj,jk) = ( z_elem_a(ji,jj,jk) - z_elem_c(ji,jj,jk) * en(ji,jj,jk+1) ) / z_elem_b(ji,jj,jk) 
    392392            END DO 
     
    406406      CASE( 0 )               ! k-kl  (Mellor-Yamada) 
    407407         DO jk = 2, jpkm1 
    408             DO jj = k_Jstr, k_Jend  
    409                DO ji = k_Istr, k_Iend 
     408            DO jj = tnldj, tnlej  
     409               DO ji = tnldi, tnlei 
    410410                  psi(ji,jj,jk)  = eb(ji,jj,jk) * hmxl_b(ji,jj,jk) 
    411411               END DO 
     
    415415      CASE( 1 )               ! k-eps 
    416416         DO jk = 2, jpkm1 
    417             DO jj = k_Jstr, k_Jend  
    418                DO ji = k_Istr, k_Iend 
     417            DO jj = tnldj, tnlej  
     418               DO ji = tnldi, tnlei 
    419419                  psi(ji,jj,jk)  = eps(ji,jj,jk) 
    420420               END DO 
     
    424424      CASE( 2 )               ! k-w 
    425425         DO jk = 2, jpkm1 
    426             DO jj = k_Jstr, k_Jend  
    427                DO ji = k_Istr, k_Iend 
     426            DO jj = tnldj, tnlej  
     427               DO ji = tnldi, tnlei 
    428428                  psi(ji,jj,jk)  = SQRT( eb(ji,jj,jk) ) / ( rc0 * hmxl_b(ji,jj,jk) ) 
    429429               END DO 
     
    433433      CASE( 3 )               ! generic 
    434434         DO jk = 2, jpkm1 
    435             DO jj = k_Jstr, k_Jend  
    436                DO ji = k_Istr, k_Iend 
     435            DO jj = tnldj, tnlej  
     436               DO ji = tnldi, tnlei 
    437437                  psi(ji,jj,jk)  = rc02 * eb(ji,jj,jk) * hmxl_b(ji,jj,jk)**rnn  
    438438               END DO 
     
    450450 
    451451      DO jk = 2, jpkm1 
    452          DO jj = k_Jstr, k_Jend  
    453             DO ji = k_Istr, k_Iend 
     452         DO jj = tnldj, tnlej  
     453            DO ji = tnldi, tnlei 
    454454               ! 
    455455               ! psi / k 
     
    548548         !                      ! en(ibot) = u*^2 / Co2 and hmxl_n(ibot) = vkarmn * rn_bfrz0 
    549549         !                      ! Balance between the production and the dissipation terms 
    550          DO jj = k_Jstr, k_Jend  
    551             DO ji = k_Istr, k_Iend 
     550         DO jj = tnldj, tnlej  
     551            DO ji = tnldi, tnlei 
    552552               ibot   = mbkt(ji,jj) + 1      ! k   bottom level of w-point 
    553553               ibotm1 = mbkt(ji,jj)          ! k-1 bottom level of w-point but >=1 
     
    569569      CASE ( 1 )             ! Neumman boundary condition 
    570570         !                       
    571          DO jj = k_Jstr, k_Jend  
    572             DO ji = k_Istr, k_Iend 
     571         DO jj = tnldj, tnlej  
     572            DO ji = tnldi, tnlei 
    573573               ibot   = mbkt(ji,jj) + 1      ! k   bottom level of w-point 
    574574               ibotm1 = mbkt(ji,jj)          ! k-1 bottom level of w-point but >=1 
     
    600600      ! 
    601601      DO jk = 2, jpkm1                             ! First recurrence : Dk = Dk - Lk * Uk-1 / Dk-1 
    602          DO jj = k_Jstr, k_Jend  
    603             DO ji = k_Istr, k_Iend 
     602         DO jj = tnldj, tnlej  
     603            DO ji = tnldi, tnlei 
    604604               z_elem_b(ji,jj,jk) = z_elem_b(ji,jj,jk) - z_elem_a(ji,jj,jk) * z_elem_c(ji,jj,jk-1) / z_elem_b(ji,jj,jk-1) 
    605605            END DO 
     
    607607      END DO 
    608608      DO jk = 2, jpk                               ! Second recurrence : Lk = RHSk - Lk / Dk-1 * Lk-1 
    609          DO jj = k_Jstr, k_Jend  
    610             DO ji = k_Istr, k_Iend 
     609         DO jj = tnldj, tnlej  
     610            DO ji = tnldi, tnlei 
    611611               z_elem_a(ji,jj,jk) = psi(ji,jj,jk) - z_elem_a(ji,jj,jk) / z_elem_b(ji,jj,jk-1) * z_elem_a(ji,jj,jk-1) 
    612612            END DO 
     
    614614      END DO 
    615615      DO jk = jpk-1, 2, -1                         ! Third recurrence : Ek = ( Lk - Uk * Ek+1 ) / Dk 
    616          DO jj = k_Jstr, k_Jend  
    617             DO ji = k_Istr, k_Iend 
     616         DO jj = tnldj, tnlej  
     617            DO ji = tnldi, tnlei 
    618618               psi(ji,jj,jk) = ( z_elem_a(ji,jj,jk) - z_elem_c(ji,jj,jk) * psi(ji,jj,jk+1) ) / z_elem_b(ji,jj,jk) 
    619619            END DO 
     
    628628      CASE( 0 )               ! k-kl  (Mellor-Yamada) 
    629629         DO jk = 1, jpkm1 
    630             DO jj = k_Jstr, k_Jend  
    631                DO ji = k_Istr, k_Iend 
     630            DO jj = tnldj, tnlej  
     631               DO ji = tnldi, tnlei 
    632632                  eps(ji,jj,jk) = rc03 * en(ji,jj,jk) * en(ji,jj,jk) * SQRT( en(ji,jj,jk) ) / MAX( psi(ji,jj,jk), rn_epsmin) 
    633633               END DO 
     
    637637      CASE( 1 )               ! k-eps 
    638638         DO jk = 1, jpkm1 
    639             DO jj = k_Jstr, k_Jend  
    640                DO ji = k_Istr, k_Iend 
     639            DO jj = tnldj, tnlej  
     640               DO ji = tnldi, tnlei 
    641641                  eps(ji,jj,jk) = psi(ji,jj,jk) 
    642642               END DO 
     
    646646      CASE( 2 )               ! k-w 
    647647         DO jk = 1, jpkm1 
    648             DO jj = k_Jstr, k_Jend  
    649                DO ji = k_Istr, k_Iend 
     648            DO jj = tnldj, tnlej  
     649               DO ji = tnldi, tnlei 
    650650                  eps(ji,jj,jk) = rc04 * en(ji,jj,jk) * psi(ji,jj,jk)  
    651651               END DO 
     
    658658         zex2  = -1._wp / rnn 
    659659         DO jk = 1, jpkm1 
    660             DO jj = k_Jstr, k_Jend  
    661                DO ji = k_Istr, k_Iend 
     660            DO jj = tnldj, tnlej  
     661               DO ji = tnldi, tnlei 
    662662                  eps(ji,jj,jk) = zcoef * en(ji,jj,jk)**zex1 * psi(ji,jj,jk)**zex2 
    663663               END DO 
     
    670670      ! -------------------------------------------------- 
    671671      DO jk = 1, jpkm1 ! Note that this set boundary conditions on hmxl_n at the same time 
    672          DO jj = k_Jstr, k_Jend  
    673             DO ji = k_Istr, k_Iend 
     672         DO jj = tnldj, tnlej  
     673            DO ji = tnldi, tnlei 
    674674               ! limitation 
    675675               eps   (ji,jj,jk)  = MAX( eps(ji,jj,jk), rn_epsmin ) 
     
    690690      CASE ( 0 , 1 )             ! Galperin or Kantha-Clayson stability functions 
    691691         DO jk = 2, jpkm1 
    692             DO jj = k_Jstr, k_Jend  
    693                DO ji = k_Istr, k_Iend 
     692            DO jj = tnldj, tnlej  
     693               DO ji = tnldi, tnlei 
    694694                  ! zcof =  l²/q² 
    695695                  zcof = hmxl_b(ji,jj,jk) * hmxl_b(ji,jj,jk) / ( 2._wp*eb(ji,jj,jk) ) 
     
    711711      CASE ( 2, 3 )               ! Canuto stability functions 
    712712         DO jk = 2, jpkm1 
    713             DO jj = k_Jstr, k_Jend  
    714                DO ji = k_Istr, k_Iend 
     713            DO jj = tnldj, tnlej  
     714               DO ji = tnldi, tnlei 
    715715                  ! zcof =  l²/q² 
    716716                  zcof = hmxl_b(ji,jj,jk)*hmxl_b(ji,jj,jk) / ( 2._wp * eb(ji,jj,jk) ) 
     
    745745 
    746746!!gm should be done for ISF (top boundary cond.) 
    747       DO jj = k_Jstr, k_Jend  
    748          DO ji = k_Istr, k_Iend 
     747      DO jj = tnldj, tnlej  
     748         DO ji = tnldi, tnlei 
    749749            zstm(ji,jj,mbkt(ji,jj)+1) = zstm(ji,jj,mbkt(ji,jj)) 
    750750         END DO 
     
    754754      ! The computation below could be restrained to jk=2 to jpkm1 if GOTM style Dirichlet conditions are used 
    755755      DO jk = 1, jpk 
    756          DO jj = k_Jstr, k_Jend  
    757             DO ji = k_Istr, k_Iend 
     756         DO jj = tnldj, tnlej  
     757            DO ji = tnldi, tnlei 
    758758               zsqen         = SQRT( 2._wp * en(ji,jj,jk) ) * hmxl_n(ji,jj,jk) 
    759759               zav           = zsqen * zstt(ji,jj,jk) 
  • branches/2017/wrk_OMP_test_for_Silvia/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfiwm.F90

    r8055 r8279  
    150150      !                        !* Critical slope mixing: distribute energy over the time-varying ocean depth, 
    151151      !                                                 using an exponential decay from the seafloor. 
    152       DO jj = k_Jstr, k_Jend 
    153          DO ji = k_Istr, k_Iend     ! part independent of the level 
     152      DO jj = tnldj, tnlej 
     153         DO ji = tnldi, tnlei     ! part independent of the level 
    154154            zhdep(ji,jj) = gdepw_0(ji,jj,mbkt(ji,jj)+1)       ! depth of the ocean 
    155155            zfact(ji,jj) = rau0 * (  1._wp - EXP( -zhdep(ji,jj) / hcri_iwm(ji,jj) )  ) 
     
    158158      END DO 
    159159      DO jk = 2, jpkm1              ! complete with the level-dependent part 
    160          DO jj = k_Jstr, k_Jend 
    161             DO ji = k_Istr, k_Iend 
     160         DO jj = tnldj, tnlej 
     161            DO ji = tnldi, tnlei 
    162162               emix_iwm(ji,jj,jk) = zfact(ji,jj) * wmask(ji,jj,jk)                              &  
    163163                  &   * (  EXP( ( gde3w_n(ji,jj,jk  ) - zhdep(ji,jj) ) / hcri_iwm(ji,jj) )      & 
     
    185185         ! 
    186186         WHERE( zfact(WRK_2D) /= 0 )   zfact(WRK_2D) = epyc_iwm(WRK_2D) / ( rau0 * zfact(WRK_2D) ) 
    187 !         DO jj = k_Jstr, k_Jend 
    188 !            DO ji = k_Istr, k_Iend 
     187!         DO jj = tnldj, tnlej 
     188!            DO ji = tnldi, tnlei 
    189189!               IF( zfact(ji,jj) /= 0 )   zfact(ji,jj) = epyc_iwm(ji,jj) / ( rau0 * zfact(ji,jj) ) 
    190190!            END DO 
     
    203203         ! 
    204204         WHERE( zfact(WRK_2D) /= 0 )   zfact(WRK_2D) = epyc_iwm(WRK_2D) / ( rau0 * zfact(WRK_2D) ) 
    205 !         DO jj = k_Jstr, k_Jend 
    206 !            DO ji = k_Istr, k_Iend 
     205!         DO jj = tnldj, tnlej 
     206!            DO ji = tnldi, tnlei 
    207207!               IF( zfact(ji,jj) /= 0 )   zfact(ji,jj) = epyc_iwm(ji,jj) / ( rau0 * zfact(ji,jj) ) 
    208208!            END DO 
     
    224224!         zfact(WRK_2D)    = zfact(WRK_2D) + e3w_n(WRK_2D,jk) * SQRT(  MAX( 0._wp, rn2(WRK_2D,jk) )  ) 
    225225!         zwkb (WRK_2D,jk) = zfact(WRK_2D) 
    226          DO jj = k_Jstr, k_Jend 
    227             DO ji = k_Istr, k_Iend 
     226         DO jj = tnldj, tnlej 
     227            DO ji = tnldi, tnlei 
    228228               zztemp = zfact(ji,jj) + e3w_n(ji,jj,jk) * SQRT(  MAX( 0._wp, rn2(ji,jj,jk) )  ) 
    229229               zfact(ji,jj)    = zztemp 
     
    234234      ! 
    235235      DO jk = 2, jpkm1 
    236          DO jj = k_Jstr, k_Jend 
    237             DO ji = k_Istr, k_Iend 
     236         DO jj = tnldj, tnlej 
     237            DO ji = tnldi, tnlei 
    238238               IF( zfact(ji,jj) /= 0 )   zwkb(ji,jj,jk) = zhdep(ji,jj) * ( zfact(ji,jj) - zwkb(ji,jj,jk) )   & 
    239239                  &                                     * wmask(ji,jj,jk) / zfact(ji,jj) 
     
    245245      zweight(WRK_3D) = 0._wp 
    246246      DO jk = 2, jpkm1 
    247          zweight(WRK_2D,jk) = MAX( 0._wp, rn2(WRK_2D,jk) ) * hbot_iwm(:,:)     & 
     247         zweight(WRK_2D,jk) = MAX( 0._wp, rn2(WRK_2D,jk) ) * hbot_iwm(WRK_2D)  & 
    248248            &               * (  EXP( -zwkb(WRK_2D,jk  ) / hbot_iwm(WRK_2D) )  & 
    249249            &                  - EXP( -zwkb(WRK_2D,jk-1) / hbot_iwm(WRK_2D) )  ) 
     
    256256      ! 
    257257      WHERE( zfact(WRK_2D) /= 0 )   zfact(WRK_2D) = ebot_iwm(WRK_2D) / ( rau0 * zfact(WRK_2D) ) 
    258 !      DO jj = k_Jstr, k_Jend 
    259 !         DO ji = k_Istr, k_Iend 
     258!      DO jj = tnldj, tnlej 
     259!         DO ji = tnldi, tnlei 
    260260!            IF( zfact(ji,jj) /= 0 )   zfact(ji,jj) = ebot_iwm(ji,jj) / ( rau0 * zfact(ji,jj) ) 
    261261!         END DO 
     
    290290      IF( ln_mevar ) THEN              ! Variable mixing efficiency case : modify zav_wave in the 
    291291         DO jk = 2, jpkm1              ! energetic (Reb > 480) and buoyancy-controlled (Reb <10.224 ) regimes 
    292             DO jj = k_Jstr, k_Jend 
    293                DO ji = k_Istr, k_Iend 
     292            DO jj = tnldj, tnlej 
     293               DO ji = tnldi, tnlei 
    294294                  IF( zReb(ji,jj,jk) > 480.00_wp ) THEN 
    295295                     zav_wave(ji,jj,jk) = 3.6515_wp * znu_w(ji,jj,jk) * SQRT( zReb(ji,jj,jk) ) 
     
    310310!!gm used of glosum 3D.... 
    311311         DO jk = 2, jpkm1 
    312             DO jj = k_Jstr, k_Jend 
    313                DO ji = k_Istr, k_Iend 
     312            DO jj = tnldj, tnlej 
     313               DO ji = tnldi, tnlei 
    314314                  zztemp = zztemp + e3w_n(ji,jj,jk) * e1e2t(ji,jj)   & 
    315315                     &         * MAX( 0._wp, rn2(ji,jj,jk) ) * zav_wave(ji,jj,jk) * wmask(ji,jj,jk) * tmask_i(ji,jj) 
     
    317317            END DO 
    318318         END DO 
    319          IF( lk_mpp )   CALL mpp_sum( zztemp ) 
     319!         IF( lk_mpp )   CALL mpp_sum( zztemp ) 
    320320         zztemp = rau0 * zztemp ! Global integral of rauo * Kz * N^2 = power contributing to mixing  
    321321         ! 
     
    335335      IF( ln_tsdiff ) THEN          !* Option for differential mixing of salinity and temperature 
    336336         DO jk = 2, jpkm1              ! Calculate S/T diffusivity ratio as a function of Reb 
    337             DO jj = k_Jstr, k_Jend 
    338                DO ji = k_Istr, k_Iend 
     337            DO jj = tnldj, tnlej 
     338               DO ji = tnldi, tnlei 
    339339                  zav_ratio(ji,jj,jk) = ( 0.505_wp + 0.495_wp *                                                                  & 
    340340                      &   TANH(    0.92_wp * (   LOG10(  MAX( 1.e-20_wp, zReb(ji,jj,jk) * 5._wp * r1_6 )  ) - 0.60_wp   )    )   & 
  • branches/2017/wrk_OMP_test_for_Silvia/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfphy.F90

    r8055 r8279  
    3232   USE lbclnk         ! lateral boundary conditions 
    3333   USE lib_mpp        ! distribued memory computing 
     34#if defined key_omp 
     35   USE dom_omp        ! omp threads decomposition of MPI subdomain 
     36#endif 
    3437 
    3538   IMPLICIT NONE 
     
    4750 
    4851   LOGICAL ::   l_zdfsh2   ! shear production term flag (=F for CST, =T otherwise (i.e. TKE, GLS, RIC)) 
     52   INTEGER :: ARG_2D 
    4953 
    5054   !! * Substitutions 
     
    216220      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
    217221      ! 
    218       INTEGER ::   ji, jj, jk   ! dummy loop indice 
     222      INTEGER :: jk   ! dummy loop indice 
    219223!!OMP      REAL(wp), DIMENSION(WRK_3D) ::   zsh2   ! shear production 
    220224      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   zsh2   ! shear production 
    221225      !! --------------------------------------------------------------------- 
    222226      !       
    223 !!OMP ===>>>>   Open-MP   to be defined elsewhere    
    224       ! 
    225       INTEGER ::   ARG_2D 
    226       ! 
     227      ! 
     228      IF (kt==nn_it000) THEN 
     229#ifdef key_omp 
     230         CALL tile_dec_2D 
     231#else 
    227232#if defined key_vectopt_loop 
    228       k_Istr = 1   ;   k_Iend = jpi 
     233         tnldi = 1   ;   tnlei = jpi 
    229234#else 
    230       k_Istr = 2   ;   k_Iend = jpim1 
     235         tnldi = 2   ;   tnlei = jpim1 
    231236#endif 
    232       k_Jstr = 2   ;   k_Jend = jpjm1 
    233       ! 
    234 !!OMP <<<<===   end 
    235        
     237         tnldj = 2   ;   tnlej = jpjm1 
     238#endif 
     239      END IF 
     240      ! 
     241      CALL zdf_bfr( kt )                        !* bottom friction (if quadratic) 
     242      ! 
     243!$OMP PARALLEL PRIVATE(zsh2) 
    236244      ALLOCATE( zsh2(WRK_3D) ) 
    237        
    238        
    239       ! 
    240       CALL zdf_bfr( kt )                        !* bottom friction (if quadratic) 
    241       ! 
    242  
    243245      !                          !==  Kz from chosen turbulent closure  ==!   (avm_k, avt_k) 
    244        
    245246      IF( l_zdfsh2 )   &                        !* shear production at w-points (energy conserving form) 
    246247         CALL zdf_sh2( ARG_2D, ub, vb, un, vn, avm_k,   &   ! <<== in  fields 
     
    248249 
    249250      ! 
     251!$OMP BARRIER 
    250252      SELECT CASE ( nzdf_phy )                  !* Vertical eddy viscosity and diffusivity coefficients at w-points 
    251253      CASE( np_RIC )   ;   CALL zdf_ric( ARG_2D, kt, gdept_n, zsh2, avm_k, avt_k )         ! Richardson number dependent Kz 
     
    257259!!gm         avm_k(WRK_3D) = rn_avm0 * wmask(WRK_3D) 
    258260      END SELECT 
     261      ! 
     262      DEALLOCATE( zsh2 ) 
    259263      !   
    260264      !                          !==  ocean Kz  ==!   (avt, avs, avm) 
     
    271275      ! 
    272276      IF( ln_zdfevd )   CALL zdf_evd( ARG_2D, kt, avm, avt )      !* convection: enhanced vertical eddy diffusivity 
    273       ! 
     277 
    274278      !                                         !* double diffusive mixing 
    275279      IF( ln_zdfddm ) THEN                            ! update avt and compute avs 
     
    282286      IF( ln_zdfswm )   CALL zdf_swm( ARG_2D, kt, avm, avt, avs )   ! surface  wave (Qiao et al. 2004)  
    283287      IF( ln_zdfiwm )   CALL zdf_iwm( ARG_2D, kt, avm, avt, avs )   ! internal wave (de Lavergne et al 2017) 
    284  
     288!$OMP END PARALLEL 
     289      ! 
    285290 
    286291      !                                         !* Lateral boundary conditions (sign unchanged) 
     
    301306      ENDIF 
    302307      ! 
    303       DEALLOCATE( zsh2 ) 
    304       ! 
    305308   END SUBROUTINE zdf_phy 
    306309 
  • branches/2017/wrk_OMP_test_for_Silvia/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfric.F90

    r8056 r8279  
    164164      !                       !==  avm and avt = F(Richardson number)  ==! 
    165165      DO jk = 2, jpkm1 
    166          DO jj = k_Jstr, k_Jend 
    167             DO ji = k_Jstr, k_Iend        ! coefficient = F(richardson number) (avm-weighted Ri) 
     166         DO jj = tnldj, tnlej 
     167            DO ji = tnldi, tnlei        ! coefficient = F(richardson number) (avm-weighted Ri) 
    168168               zcfRi = 1._wp / (  1._wp + rn_alp * MAX(  0._wp , p_avm(ji,jj,jk) * rn2(ji,jj,jk) / ( p_sh2(ji,jj,jk) + 1.e-20 ) )  ) 
    169169               zav   = rn_avmri * zcfRi**nn_ric 
     
    180180      IF( ln_mldw ) THEN      !==  set a minimum value in the Ekman layer  ==! 
    181181         ! 
    182          DO jj = k_Jstr, k_Jend     !* Ekman depth 
    183             DO ji = k_Jstr, k_Iend 
     182         DO jj = tnldj, tnlej     !* Ekman depth 
     183            DO ji = tnldi, tnlei 
    184184               zustar = SQRT( taum(ji,jj) * r1_rau0 ) 
    185185               zed    = rn_ekmfc * zustar / ( ABS( ff_t(ji,jj) ) + rsmall )     ! Ekman depth 
     
    188188         END DO 
    189189         DO jk = 2, jpkm1           !* minimum mixing coeff. within the Ekman layer 
    190             DO jj = k_Jstr, k_Jend 
    191                DO ji = k_Jstr, k_Iend 
     190            DO jj = tnldj, tnlej 
     191               DO ji = tnldi, tnlei 
    192192                  IF( pdept(ji,jj,jk) < zh_ekm(ji,jj) ) THEN 
    193193                     p_avm(ji,jj,jk) = MAX(  p_avm(ji,jj,jk), rn_wvmix  ) * wmask(ji,jj,jk) 
  • branches/2017/wrk_OMP_test_for_Silvia/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfsh2.F90

    r8055 r8279  
    6262      ! 
    6363      DO jk = 2, jpkm1 
    64          DO jj = k_Jstr-1, k_Jend      !* 2 x shear production at uw- and vw-points (energy conserving form) 
    65             DO ji = k_Istr-1, k_Iend 
     64         DO jj = tnldj-1, tnlej      !* 2 x shear production at uw- and vw-points (energy conserving form) 
     65            DO ji = tnldi-1, tnlei 
    6666               zsh2u(ji,jj) = ( p_avm(ji+1,jj,jk) + p_avm(ji,jj,jk) ) & 
    6767                  &         * (   pun(ji,jj,jk-1) -   pun(ji,jj,jk) ) & 
     
    7272            END DO 
    7373         END DO 
    74          DO jj = k_Jstr, k_Jend        !* shear production at w-point 
    75             DO ji = k_Jstr, k_Iend           ! coast mask: =2 at the coast ; =1 otherwise (NB: wmask useless as zsh2 are masked) 
     74         DO jj = tnldj, tnlej        !* shear production at w-point 
     75            DO ji = tnldi, tnlei           ! coast mask: =2 at the coast ; =1 otherwise (NB: wmask useless as zsh2 are masked) 
    7676               p_sh2(ji,jj,jk) = 0.25 * (   ( zsh2u(ji-1,jj) + zsh2u(ji,jj) ) * ( 2. - umask(ji-1,jj,jk) * umask(ji,jj,jk) )   & 
    7777                  &                       + ( zsh2v(ji,jj-1) + zsh2v(ji,jj) ) * ( 2. - vmask(ji,jj-1,jk) * vmask(ji,jj,jk) )   ) 
  • branches/2017/wrk_OMP_test_for_Silvia/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfswm.F90

    r8055 r8279  
    6464      zcoef = 1._wp * 0.353553_wp 
    6565      DO jk = 2, jpkm1 
    66          DO jj = k_Jstr, k_Jend 
    67             DO ji = k_Istr, k_Iend 
     66         DO jj = tnldj, tnlej 
     67            DO ji = tnldi, tnlei 
    6868               zqb = zcoef * hsw(ji,jj) * tsd2d(ji,jj) * EXP( -3. * wnum(ji,jj) * gdepw_n(ji,jj,jk) ) * wmask(ji,jj,jk) 
    6969               ! 
  • branches/2017/wrk_OMP_test_for_Silvia/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftke.F90

    r8056 r8279  
    220220      ! 
    221221      IF( nn_timing == 1 )  CALL timing_start('tke_tke') 
     222 
    222223      ! 
    223224      zbbrau = rn_ebb / rau0       ! Local constant initialisation 
     
    231232      !                     !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    232233      IF ( ln_isfcav ) THEN 
    233          DO jj = k_Jstr, k_Jend            ! en(mikt(ji,jj))   = rn_emin 
    234             DO ji = k_Istr, k_Iend 
     234         DO jj = tnldj, tnlej            ! en(mikt(ji,jj))   = rn_emin 
     235            DO ji = tnldi, tnlei 
    235236               en(ji,jj,mikt(ji,jj)) = rn_emin * tmask(ji,jj,1) 
    236237            END DO 
    237238         END DO 
    238239      END IF 
    239       DO jj = k_Jstr, k_Jend            ! en(1)   = rn_ebb taum / rau0  (min value rn_emin0) 
    240          DO ji = k_Istr, k_Iend 
     240      DO jj = tnldj, tnlej            ! en(1)   = rn_ebb taum / rau0  (min value rn_emin0) 
     241         DO ji = tnldi, tnlei 
    241242            en(ji,jj,1) = MAX( rn_emin0, zbbrau * taum(ji,jj) ) * tmask(ji,jj,1) 
    242243         END DO 
     
    254255      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    255256      !                     en(bot)   = (rn_ebb0/rau0)*0.5*sqrt(u_botfr^2+v_botfr^2) (min value rn_emin) 
    256 !!    DO jj = k_Jstr, k_Jend 
    257 !!       DO ji = k_Jstr, k_Iend 
     257!!    DO jj = tnldj, tnlej 
     258!!       DO ji = tnldj, tnlei 
    258259!!          ztx2 = bfrua(ji-1,jj) * ub(ji-1,jj,mbku(ji-1,jj)) + & 
    259260!!                 bfrua(ji  ,jj) * ub(ji  ,jj,mbku(ji  ,jj) ) 
     
    281282         imlc(WRK_2D) = mbkt(WRK_2D) + 1       ! Initialization to the number of w ocean point (=2 over land) 
    282283         DO jk = jpkm1, 2, -1 
    283             DO jj = k_Jstr, k_Jend               ! Last w-level at which zpelc>=0.5*us*us  
    284                DO ji = k_Istr, k_Iend            !      with us=0.016*wind(starting from jpk-1) 
     284            DO jj = tnldj, tnlej               ! Last w-level at which zpelc>=0.5*us*us  
     285               DO ji = tnldi, tnlei            !      with us=0.016*wind(starting from jpk-1) 
    285286                  zus  = zcof * taum(ji,jj) 
    286287                  IF( zpelc(ji,jj,jk) > zus )   imlc(ji,jj) = jk 
     
    289290         END DO 
    290291         !                               ! finite LC depth 
    291          DO jj = k_Jstr, k_Jend  
    292             DO ji = k_Istr, k_Iend 
     292         DO jj = tnldj, tnlej  
     293            DO ji = tnldi, tnlei 
    293294               zhlc(ji,jj) = pdepw(ji,jj,imlc(ji,jj)) 
    294295            END DO 
     
    296297         zcof = 0.016 / SQRT( zrhoa * zcdrag ) 
    297298         DO jk = 2, jpkm1         !* TKE Langmuir circulation source term added to en 
    298             DO jj = k_Jstr, k_Jend 
    299                DO ji = k_Istr, k_Iend 
     299            DO jj = tnldj, tnlej 
     300               DO ji = tnldi, tnlei 
    300301                  zus  = zcof * SQRT( taum(ji,jj) )           ! Stokes drift 
    301302                  !                                           ! vertical velocity due to LC 
     
    320321      IF( nn_pdl == 1 ) THEN      !* Prandtl number = F( Ri ) 
    321322         DO jk = 2, jpkm1 
    322             DO jj = k_Jstr, k_Jend 
    323                DO ji = k_Istr, k_Iend 
     323            DO jj = tnldj, tnlej 
     324               DO ji = tnldi, tnlei 
    324325                  !                             ! local Richardson number 
    325326                  zri = MAX( rn2b(ji,jj,jk), 0._wp ) * p_avm(ji,jj,jk) / ( p_sh2(ji,jj,jk) + rn_bshear ) 
     
    332333      !          
    333334      DO jk = 2, jpkm1           !* Matrix and right hand side in en 
    334          DO jj = k_Jstr, k_Jend 
    335             DO ji = k_Istr, k_Iend 
     335         DO jj = tnldj, tnlej 
     336            DO ji = tnldi, tnlei 
    336337               zcof   = zfact1 * tmask(ji,jj,jk) 
    337338               !                                   ! A minimum of 2.e-5 m2/s is imposed on TKE vertical 
     
    356357      !                          !* Matrix inversion from level 2 (tke prescribed at level 1) 
    357358      DO jk = 3, jpkm1                             ! First recurrence : Dk = Dk - Lk * Uk-1 / Dk-1 
    358          DO jj = k_Jstr, k_Jend 
    359             DO ji = k_Istr, k_Iend 
     359         DO jj = tnldj, tnlej 
     360            DO ji = tnldi, tnlei 
    360361               zdiag(ji,jj,jk) = zdiag(ji,jj,jk) - zd_lw(ji,jj,jk) * zd_up(ji,jj,jk-1) / zdiag(ji,jj,jk-1) 
    361362            END DO 
    362363         END DO 
    363364      END DO 
    364       DO jj = k_Jstr, k_Jend                             ! Second recurrence : Lk = RHSk - Lk / Dk-1 * Lk-1 
    365          DO ji = k_Istr, k_Iend 
     365      DO jj = tnldj, tnlej                             ! Second recurrence : Lk = RHSk - Lk / Dk-1 * Lk-1 
     366         DO ji = tnldi, tnlei 
    366367            zd_lw(ji,jj,2) = en(ji,jj,2) - zd_lw(ji,jj,2) * en(ji,jj,1)    ! Surface boudary conditions on tke 
    367368         END DO 
    368369      END DO 
    369370      DO jk = 3, jpkm1 
    370          DO jj = k_Jstr, k_Jend 
    371             DO ji = k_Istr, k_Iend 
     371         DO jj = tnldj, tnlej 
     372            DO ji = tnldi, tnlei 
    372373               zd_lw(ji,jj,jk) = en(ji,jj,jk) - zd_lw(ji,jj,jk) / zdiag(ji,jj,jk-1) *zd_lw(ji,jj,jk-1) 
    373374            END DO 
    374375         END DO 
    375376      END DO 
    376       DO jj = k_Jstr, k_Jend                             ! thrid recurrence : Ek = ( Lk - Uk * Ek+1 ) / Dk 
    377          DO ji = k_Istr, k_Iend 
     377      DO jj = tnldj, tnlej                             ! thrid recurrence : Ek = ( Lk - Uk * Ek+1 ) / Dk 
     378         DO ji = tnldi, tnlei 
    378379            en(ji,jj,jpkm1) = zd_lw(ji,jj,jpkm1) / zdiag(ji,jj,jpkm1) 
    379380         END DO 
    380381      END DO 
    381382      DO jk = jpk-2, 2, -1 
    382          DO jj = k_Jstr, k_Jend 
    383             DO ji = k_Istr, k_Iend 
     383         DO jj = tnldj, tnlej 
     384            DO ji = tnldi, tnlei 
    384385               en(ji,jj,jk) = ( zd_lw(ji,jj,jk) - zd_up(ji,jj,jk) * en(ji,jj,jk+1) ) / zdiag(ji,jj,jk) 
    385386            END DO 
     
    387388      END DO 
    388389      DO jk = 2, jpkm1                             ! set the minimum value of tke 
    389          DO jj = k_Jstr, k_Jend 
    390             DO ji = k_Istr, k_Iend 
     390         DO jj = tnldj, tnlej 
     391            DO ji = tnldi, tnlei 
    391392               en(ji,jj,jk) = MAX( en(ji,jj,jk), rn_emin ) * wmask(ji,jj,jk) 
    392393            END DO 
     
    402403      IF( nn_etau == 1 ) THEN           !* penetration below the mixed layer (rn_efr fraction) 
    403404         DO jk = 2, jpkm1 
    404             DO jj = k_Jstr, k_Jend 
    405                DO ji = k_Istr, k_Iend 
     405            DO jj = tnldj, tnlej 
     406               DO ji = tnldi, tnlei 
    406407                  en(ji,jj,jk) = en(ji,jj,jk) + rn_efr * en(ji,jj,1) * EXP( -pdepw(ji,jj,jk) / htau(ji,jj) )   & 
    407408                     &                                 * MAX(0.,1._wp - 2.*fr_i(ji,jj) )  * wmask(ji,jj,jk) * tmask(ji,jj,1) 
     
    410411         END DO 
    411412      ELSEIF( nn_etau == 2 ) THEN       !* act only at the base of the mixed layer (jk=nmln)  (rn_efr fraction) 
    412          DO jj = k_Jstr, k_Jend 
    413             DO ji = k_Istr, k_Iend 
     413         DO jj = tnldj, tnlej 
     414            DO ji = tnldi, tnlei 
    414415               jk = nmln(ji,jj) 
    415416               en(ji,jj,jk) = en(ji,jj,jk) + rn_efr * en(ji,jj,1) * EXP( -pdepw(ji,jj,jk) / htau(ji,jj) )   & 
     
    419420      ELSEIF( nn_etau == 3 ) THEN       !* penetration belox the mixed layer (HF variability) 
    420421         DO jk = 2, jpkm1 
    421             DO jj = k_Jstr, k_Jend 
    422                DO ji = k_Istr, k_Iend 
     422            DO jj = tnldj, tnlej 
     423               DO ji = tnldi, tnlei 
    423424                  ztx2 = utau(ji-1,jj  ) + utau(ji,jj) 
    424425                  zty2 = vtau(ji  ,jj-1) + vtau(ji,jj) 
     
    433434      ENDIF 
    434435      ! 
     436 
    435437      IF( nn_timing == 1 )  CALL timing_stop('tke_tke') 
    436438      ! 
     
    498500      IF( ln_mxl0 ) THEN            ! surface mixing length = F(stress) : l=vkarmn*2.e5*taum/(rau0*g) 
    499501         zraug = vkarmn * 2.e5_wp / ( rau0 * grav ) 
    500          DO jj = k_Jstr, k_Jend 
    501             DO ji = k_Istr, k_Iend 
     502         DO jj = tnldj, tnlej 
     503            DO ji = tnldi, tnlei 
    502504               zmxlm(ji,jj,1) = MAX( rn_mxl0, zraug * taum(ji,jj) * tmask(ji,jj,1) ) 
    503505            END DO 
     
    508510      ! 
    509511      DO jk = 2, jpkm1              ! interior value : l=sqrt(2*e/n^2) 
    510          DO jj = k_Jstr, k_Jend 
    511             DO ji = k_Istr, k_Iend 
     512         DO jj = tnldj, tnlej 
     513            DO ji = tnldi, tnlei 
    512514               zrn2 = MAX( rn2(ji,jj,jk), rsmall ) 
    513515               zmxlm(ji,jj,jk) = MAX(  rmxl_min,  SQRT( 2._wp * en(ji,jj,jk) / zrn2 )  ) 
     
    527529      CASE ( 0 )           ! bounded by the distance to surface and bottom 
    528530         DO jk = 2, jpkm1 
    529             DO jj = k_Jstr, k_Jend 
    530                DO ji = k_Istr, k_Iend 
     531            DO jj = tnldj, tnlej 
     532               DO ji = tnldi, tnlei 
    531533                  zemxl = MIN( pdepw(ji,jj,jk) - pdepw(ji,jj,mikt(ji,jj)), zmxlm(ji,jj,jk),   & 
    532534                  &            pdepw(ji,jj,mbkt(ji,jj)+1) - pdepw(ji,jj,jk) ) 
     
    540542      CASE ( 1 )           ! bounded by the vertical scale factor 
    541543         DO jk = 2, jpkm1 
    542             DO jj = k_Jstr, k_Jend 
    543                DO ji = k_Istr, k_Iend 
     544            DO jj = tnldj, tnlej 
     545               DO ji = tnldi, tnlei 
    544546                  zemxl = MIN( p_e3w(ji,jj,jk), zmxlm(ji,jj,jk) ) 
    545547                  zmxlm(ji,jj,jk) = zemxl 
     
    551553      CASE ( 2 )           ! |dk[xml]| bounded by e3t : 
    552554         DO jk = 2, jpkm1         ! from the surface to the bottom : 
    553             DO jj = k_Jstr, k_Jend 
    554                DO ji = k_Istr, k_Iend 
     555            DO jj = tnldj, tnlej 
     556               DO ji = tnldi, tnlei 
    555557                  zmxlm(ji,jj,jk) = MIN( zmxlm(ji,jj,jk-1) + p_e3t(ji,jj,jk-1), zmxlm(ji,jj,jk) ) 
    556558               END DO 
     
    558560         END DO 
    559561         DO jk = jpkm1, 2, -1     ! from the bottom to the surface : 
    560             DO jj = k_Jstr, k_Jend 
    561                DO ji = k_Istr, k_Iend 
     562            DO jj = tnldj, tnlej 
     563               DO ji = tnldi, tnlei 
    562564                  zemxl = MIN( zmxlm(ji,jj,jk+1) + p_e3t(ji,jj,jk+1), zmxlm(ji,jj,jk) ) 
    563565                  zmxlm(ji,jj,jk) = zemxl 
     
    569571      CASE ( 3 )           ! lup and ldown, |dk[xml]| bounded by e3t : 
    570572         DO jk = 2, jpkm1         ! from the surface to the bottom : lup 
    571             DO jj = k_Jstr, k_Jend 
    572                DO ji = k_Istr, k_Iend 
     573            DO jj = tnldj, tnlej 
     574               DO ji = tnldi, tnlei 
    573575                  zmxld(ji,jj,jk) = MIN( zmxld(ji,jj,jk-1) + p_e3t(ji,jj,jk-1), zmxlm(ji,jj,jk) ) 
    574576               END DO 
     
    576578         END DO 
    577579         DO jk = jpkm1, 2, -1     ! from the bottom to the surface : ldown 
    578             DO jj = k_Jstr, k_Jend 
    579                DO ji = k_Istr, k_Iend 
     580            DO jj = tnldj, tnlej 
     581               DO ji = tnldi, tnlei 
    580582                  zmxlm(ji,jj,jk) = MIN( zmxlm(ji,jj,jk+1) + p_e3t(ji,jj,jk+1), zmxlm(ji,jj,jk) ) 
    581583               END DO 
     
    583585         END DO 
    584586         DO jk = 2, jpkm1 
    585             DO jj = k_Jstr, k_Jend 
    586                DO ji = k_Istr, k_Iend 
     587            DO jj = tnldj, tnlej 
     588               DO ji = tnldi, tnlei 
    587589                  zemlm = MIN ( zmxld(ji,jj,jk),  zmxlm(ji,jj,jk) ) 
    588590                  zemlp = SQRT( zmxld(ji,jj,jk) * zmxlm(ji,jj,jk) ) 
     
    600602      !                     !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    601603      DO jk = 1, jpkm1            !* vertical eddy viscosity & diffivity at w-points 
    602          DO jj = k_Jstr, k_Jend 
    603             DO ji = k_Istr, k_Iend 
     604         DO jj = tnldj, tnlej 
     605            DO ji = tnldi, tnlei 
    604606               zsqen = SQRT( en(ji,jj,jk) ) 
    605607               zav   = rn_ediff * zmxlm(ji,jj,jk) * zsqen 
     
    614616      IF( nn_pdl == 1 ) THEN      !* Prandtl number case: update avt 
    615617         DO jk = 2, jpkm1 
    616             DO jj = k_Jstr, k_Jend 
    617                DO ji = k_Istr, k_Iend 
     618            DO jj = tnldj, tnlej 
     619               DO ji = tnldi, tnlei 
    618620                  p_avt(ji,jj,jk)   = MAX( apdlr(ji,jj,jk) * p_avt(ji,jj,jk), avtb_2d(ji,jj) * avtb(jk) ) * tmask(ji,jj,jk) 
    619621              END DO 
  • branches/2017/wrk_OMP_test_for_Silvia/NEMOGCM/NEMO/OPA_SRC/domain_substitute.h90

    r8055 r8279  
    44   !! ** purpose :   local Sub-Domain: arguments, dimension & semi-column loops 
    55   !!---------------------------------------------------------------------- 
    6 #define ARG_2D   k_Istr, k_Iend, k_Jstr, k_Jend 
     6#define ARG_2D   tnldi, tnlei, tnldj, tnlej 
    77 
    8 #define WRK_2D             k_Istr:k_Iend,k_Jstr:k_Jend 
    9 #define WRK_2De(s,e)       k_Istr s:k_Iend e,k_Jstr s:k_Jend e 
     8#define WRK_2D             tnldi:tnlei,tnldj:tnlej 
     9#define WRK_2De(s,e)       tnldi s:tnlei e,tnldj s:tnlej e 
    1010 
    11 #define WRK_3D             k_Istr:k_Iend,k_Jstr:k_Jend,1:jpk 
    12 #define WRK_3De(s,e,t,b)   k_Istr s:k_Iend e,k_Jstr s:k_Jend e,1 t:jpk t 
     11#define WRK_3D             tnldi:tnlei,tnldj:tnlej,1:jpk 
     12#define WRK_3De(s,e,t,b)   tnldi s:tnlei e,tnldj s:tnlej e,1 t:jpk t 
Note: See TracChangeset for help on using the changeset viewer.