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/OPA_SRC/ZDF/zdfiwm.F90 – 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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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   )    )   & 
Note: See TracChangeset for help on using the changeset viewer.