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 6748 for branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf_imp.F90 – NEMO

Ignore:
Timestamp:
2016-06-28T11:53:56+02:00 (8 years ago)
Author:
mocavero
Message:

GYRE hybrid parallelization

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf_imp.F90

    r6140 r6748  
    112112      ! 
    113113      IF( ln_bfrimp ) THEN 
     114!$OMP PARALLEL DO schedule(static) private(jj, ji, ikbu, ikbv) 
    114115         DO jj = 2, jpjm1 
    115116            DO ji = 2, jpim1 
     
    121122         END DO 
    122123         IF ( ln_isfcav ) THEN 
     124!$OMP PARALLEL DO schedule(static) private(jj, ji, ikbu, ikbv) 
    123125            DO jj = 2, jpjm1 
    124126               DO ji = 2, jpim1 
     
    172174      ! non zero value at the ocean bottom depending on the bottom friction used. 
    173175      ! 
     176!$OMP PARALLEL DO schedule(static) private(jk, jj, ji, ze3ua, zzwi, zzws) 
    174177      DO jk = 1, jpkm1        ! Matrix 
    175178         DO jj = 2, jpjm1  
     
    207210      ! 
    208211      DO jk = 2, jpkm1        !==  First recurrence : Dk = Dk - Lk * Uk-1 / Dk-1   (increasing k)  == 
     212!$OMP PARALLEL DO schedule(static) private(jj, ji) 
    209213         DO jj = 2, jpjm1    
    210214            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    214218      END DO 
    215219      ! 
     220!$OMP PARALLEL DO schedule(static) private(jj, ji, ze3ua) 
    216221      DO jj = 2, jpjm1        !==  second recurrence:    SOLk = RHSk - Lk / Dk-1  Lk-1  ==! 
    217222         DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    222227      END DO 
    223228      DO jk = 2, jpkm1 
     229!$OMP PARALLEL DO schedule(static) private(jj, ji) 
    224230         DO jj = 2, jpjm1 
    225231            DO ji = fs_2, fs_jpim1 
     
    229235      END DO 
    230236      ! 
    231       DO jj = 2, jpjm1        !==  thrid recurrence : SOLk = ( Lk - Uk * Ek+1 ) / Dk  ==! 
     237!$OMP PARALLEL DO schedule(static) private(jj, ji) 
     238        DO jj = 2, jpjm1        !==  thrid recurrence : SOLk = ( Lk - Uk * Ek+1 ) / Dk  ==! 
    232239         DO ji = fs_2, fs_jpim1   ! vector opt. 
    233240            ua(ji,jj,jpkm1) = ua(ji,jj,jpkm1) / zwd(ji,jj,jpkm1) 
     
    235242      END DO 
    236243      DO jk = jpk-2, 1, -1 
    237          DO jj = 2, jpjm1 
     244!$OMP PARALLEL DO schedule(static) private(jj, ji) 
     245        DO jj = 2, jpjm1 
    238246            DO ji = fs_2, fs_jpim1 
    239247               ua(ji,jj,jk) = ( ua(ji,jj,jk) - zws(ji,jj,jk) * ua(ji,jj,jk+1) ) / zwd(ji,jj,jk) 
     
    248256      ! non zero value at the ocean bottom depending on the bottom friction used 
    249257      ! 
     258!$OMP PARALLEL DO schedule(static) private(jk, jj, ji, ze3va, zzwi, zzws) 
    250259      DO jk = 1, jpkm1        ! Matrix 
    251260         DO jj = 2, jpjm1    
     
    260269         END DO 
    261270      END DO 
     271!$OMP PARALLEL DO schedule(static) private(jj, ji) 
    262272      DO jj = 2, jpjm1        ! Surface boundary conditions 
    263273         DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    283293      ! 
    284294      DO jk = 2, jpkm1        !==  First recurrence : Dk = Dk - Lk * Uk-1 / Dk-1   (increasing k)  == 
     295!$OMP PARALLEL DO schedule(static) private(jj, ji) 
    285296         DO jj = 2, jpjm1    
    286297            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    290301      END DO 
    291302      ! 
     303!$OMP PARALLEL DO schedule(static) private(jj, ji, ze3va) 
    292304      DO jj = 2, jpjm1        !==  second recurrence:    SOLk = RHSk - Lk / Dk-1  Lk-1  ==! 
    293305         DO ji = fs_2, fs_jpim1   ! vector opt.           
     
    298310      END DO 
    299311      DO jk = 2, jpkm1 
     312!$OMP PARALLEL DO schedule(static) private(jj, ji) 
    300313         DO jj = 2, jpjm1 
    301314            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    305318      END DO 
    306319      ! 
     320!$OMP PARALLEL DO schedule(static) private(jj, ji) 
    307321      DO jj = 2, jpjm1        !==  third recurrence : SOLk = ( Lk - Uk * SOLk+1 ) / Dk  ==! 
    308322         DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    311325      END DO 
    312326      DO jk = jpk-2, 1, -1 
     327!$OMP PARALLEL DO schedule(static) private(jj, ji) 
    313328         DO jj = 2, jpjm1 
    314329            DO ji = fs_2, fs_jpim1 
     
    322337      !!gm  I almost sure it is !!!! 
    323338      IF( ln_bfrimp ) THEN 
     339!$OMP PARALLEL DO schedule(static) private(jj, ji, ikbu, ikbv) 
    324340        DO jj = 2, jpjm1 
    325341           DO ji = 2, jpim1 
     
    331347        END DO 
    332348        IF (ln_isfcav) THEN 
     349!$OMP PARALLEL DO schedule(static) private(jj, ji, ikbu, ikbv) 
    333350           DO jj = 2, jpjm1 
    334351              DO ji = 2, jpim1 
Note: See TracChangeset for help on using the changeset viewer.