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/LDF/ldfslp.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/LDF/ldfslp.F90

    r6352 r6748  
    135135      z1_slpmax = 1._wp / rn_slpmax 
    136136      ! 
     137 
     138!$OMP PARALLEL WORKSHARE 
    137139      zww(:,:,:) = 0._wp 
    138140      zwz(:,:,:) = 0._wp 
    139       ! 
     141!$OMP END PARALLEL WORKSHARE 
     142      ! 
     143!$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    140144      DO jk = 1, jpk             !==   i- & j-gradient of density   ==! 
    141145         DO jj = 1, jpjm1 
     
    147151      END DO 
    148152      IF( ln_zps ) THEN                           ! partial steps correction at the bottom ocean level 
     153!$OMP PARALLEL DO schedule(static) private(jj, ji) 
    149154         DO jj = 1, jpjm1 
    150155            DO ji = 1, jpim1 
     
    155160      ENDIF 
    156161      IF( ln_zps .AND. ln_isfcav ) THEN           ! partial steps correction at the bottom ocean level 
     162!$OMP PARALLEL DO schedule(static) private(jj, ji) 
    157163         DO jj = 1, jpjm1 
    158164            DO ji = 1, jpim1 
     
    164170      ! 
    165171      zdzr(:,:,1) = 0._wp        !==   Local vertical density gradient at T-point   == !   (evaluated from N^2) 
     172!$OMP PARALLEL DO schedule(static) private(jk) 
    166173      DO jk = 2, jpkm1 
    167174         !                                ! zdzr = d/dz(prd)= - ( prd ) / grav * mk(pn2) -- at t point 
     
    182189      ! 
    183190      IF ( ln_isfcav ) THEN 
     191!$OMP PARALLEL DO schedule(static) private(jj,ji) 
    184192         DO jj = 2, jpjm1 
    185193            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    191199         END DO 
    192200      ELSE 
     201!$OMP PARALLEL DO schedule(static) private(jj,ji) 
    193202         DO jj = 2, jpjm1 
    194203            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    198207         END DO 
    199208      END IF 
    200  
     209!$OMP PARALLEL DO schedule(static) private(jk, jj, ji, zau, zav, zbu, zbv, zfj, zfi, zdepu, zdepv) 
    201210      DO jk = 2, jpkm1                            !* Slopes at u and v points 
    202211         DO jj = 2, jpjm1 
     
    239248      ! 
    240249      !                                            !* horizontal Shapiro filter 
     250!$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    241251      DO jk = 2, jpkm1 
    242252         DO jj = 2, jpjm1, MAX(1, jpj-3)                        ! rows jj=2 and =jpjm1 only 
     
    283293      ! ===========================      | wslpj = mij( d/dj( prd ) / d/dz( prd ) 
    284294      ! 
     295!$OMP PARALLEL DO schedule(static) private(jk, jj, ji, zbw, zfk, zck, zbi, zbj, zai, zaj, zci, zcj) 
    285296      DO jk = 2, jpkm1 
    286297         DO jj = 2, jpjm1 
     
    321332      ! 
    322333      !                                           !* horizontal Shapiro filter 
     334!$OMP PARALLEL DO schedule(static) private(jk, jj, ji, zcofw, zck) 
    323335      DO jk = 2, jpkm1 
    324336         DO jj = 2, jpjm1, MAX(1, jpj-3)                        ! rows jj=2 and =jpjm1 only 
     
    429441         ! 
    430442         ip = jl   ;   jp = jl                ! guaranteed nonzero gradients ( absolute value larger than repsln) 
     443!$OMP PARALLEL DO schedule(static) private(jk,jj,ji,zdit,zdis,zdjt,zdjs,zdxrho_raw,zdyrho_raw) 
    431444         DO jk = 1, jpkm1                     ! done each pair of triad 
    432445            DO jj = 1, jpjm1                  ! NB: not masked ==>  a minimum value is set 
     
    445458         ! 
    446459         IF( ln_zps .AND. l_grad_zps ) THEN     ! partial steps: correction of i- & j-grad on bottom 
     460!$OMP PARALLEL DO schedule(static) private(jj,ji,iku,zdit,zdis,zdxrho_raw,zdyrho_raw) 
    447461            DO jj = 1, jpjm1 
    448462               DO ji = 1, jpim1 
     
    676690      ! 
    677691      !                                            !==   surface mixed layer mask   ! 
     692!$OMP PARALLEL DO schedule(static) private(jk, jj, ji, ik) 
    678693      DO jk = 1, jpk                               ! =1 inside the mixed layer, =0 otherwise 
    679694         DO jj = 1, jpj 
     
    698713      !----------------------------------------------------------------------- 
    699714      ! 
     715!$OMP PARALLEL DO schedule(static) private(jj, ji, iku, ikv, zbu, zbv, zau, zav, ik, ikm1, zbw, zci, zcj, zai, zaj, zbi, zbj)  
    700716      DO jj = 2, jpjm1 
    701717         DO ji = 2, jpim1 
     
    791807         ! Direction of lateral diffusion (tracers and/or momentum) 
    792808         ! ------------------------------ 
    793          uslp (:,:,:) = 0._wp   ;   uslpml (:,:) = 0._wp      ! set the slope to zero (even in s-coordinates) 
    794          vslp (:,:,:) = 0._wp   ;   vslpml (:,:) = 0._wp 
    795          wslpi(:,:,:) = 0._wp   ;   wslpiml(:,:) = 0._wp 
    796          wslpj(:,:,:) = 0._wp   ;   wslpjml(:,:) = 0._wp 
    797  
     809 
     810!$OMP PARALLEL DO schedule(static) private(jk, jj, ji)    
     811        DO jk = 1, jpk 
     812           DO jj = 1, jpj 
     813              DO ji = 1, jpi 
     814                 uslp (ji,jj,jk) = 0._wp 
     815                 vslp (ji,jj,jk) = 0._wp 
     816                 wslpi(ji,jj,jk) = 0._wp 
     817                 wslpj(ji,jj,jk) = 0._wp 
     818              END DO 
     819           END DO 
     820        END DO 
     821!$OMP PARALLEL DO schedule(static) private(jj, ji)        
     822        DO jj = 1, jpj 
     823            DO ji = 1, jpi 
     824               uslpml (ji,jj) = 0._wp 
     825               vslpml (ji,jj) = 0._wp 
     826               wslpiml(ji,jj) = 0._wp 
     827               wslpjml(ji,jj) = 0._wp 
     828             END DO 
     829        END DO 
     830          
    798831         !!gm I no longer understand this..... 
    799832!!gm         IF( (ln_traldf_hor .OR. ln_dynldf_hor) .AND. .NOT. (.NOT.ln_linssh .AND. ln_rstart) ) THEN 
Note: See TracChangeset for help on using the changeset viewer.