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 7698 for trunk/NEMOGCM/NEMO/OPA_SRC/DOM/dommsk.F90 – NEMO

Ignore:
Timestamp:
2017-02-18T10:02:03+01:00 (7 years ago)
Author:
mocavero
Message:

update trunk with OpenMP parallelization

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/OPA_SRC/DOM/dommsk.F90

    r7646 r7698  
    4747   !!---------------------------------------------------------------------- 
    4848   !! NEMO/OPA 3.2 , LODYC-IPSL  (2009) 
    49    !! $Id$  
     49   !! $Id$ 
    5050   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
    5151   !!---------------------------------------------------------------------- 
     
    137137      ! ---------------------------- 
    138138      ! 
    139       tmask(:,:,:) = 0._wp 
     139!$OMP PARALLEL 
     140!$OMP DO schedule(static) private(jk, jj, ji) 
     141      DO jk = 1, jpk 
     142         DO jj = 1, jpj 
     143            DO ji = 1, jpi 
     144               tmask(ji,jj,jk) = 0._wp 
     145            END DO 
     146         END DO 
     147      END DO 
     148!$OMP DO schedule(static) private(jj, ji, iktop, ikbot) 
    140149      DO jj = 1, jpj 
    141150         DO ji = 1, jpi 
     
    147156         END DO   
    148157      END DO   
     158!$OMP END PARALLEL 
    149159!SF  add here lbc_lnk: bug not still understood : cause now domain configuration is read ! 
    150160!!gm I don't understand why...   
     
    161171      ! ------------------------ 
    162172      IF ( ln_bdy .AND. ln_mask_file ) THEN 
     173!$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    163174         DO jk = 1, jpkm1 
    164175            DO jj = 1, jpj 
     
    173184      ! ---------------------------------------- 
    174185      ! NB: at this point, fmask is designed for free slip lateral boundary condition 
     186!$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    175187      DO jk = 1, jpk 
    176188         DO jj = 1, jpjm1 
     
    192204      ! Ocean/land mask at wu-, wv- and w points    (computed from tmask) 
    193205      !----------------------------------------- 
    194       wmask (:,:,1) = tmask(:,:,1)     ! surface 
    195       wumask(:,:,1) = umask(:,:,1) 
    196       wvmask(:,:,1) = vmask(:,:,1) 
     206!$OMP PARALLEL 
     207!$OMP DO schedule(static) private(jj, ji) 
     208      DO jj = 1, jpj 
     209         DO ji = 1, jpi 
     210            wmask (ji,jj,1) = tmask(ji,jj,1)     ! surface 
     211            wumask(ji,jj,1) = umask(ji,jj,1) 
     212            wvmask(ji,jj,1) = vmask(ji,jj,1) 
     213         END DO 
     214      END DO 
     215!$OMP DO schedule(static) private(jk,jj,ji) 
    197216      DO jk = 2, jpk                   ! interior values 
    198          wmask (:,:,jk) = tmask(:,:,jk) * tmask(:,:,jk-1) 
    199          wumask(:,:,jk) = umask(:,:,jk) * umask(:,:,jk-1)    
    200          wvmask(:,:,jk) = vmask(:,:,jk) * vmask(:,:,jk-1) 
    201       END DO 
     217         DO jj = 1, jpj 
     218            DO ji = 1, jpi 
     219               wmask (ji,jj,jk) = tmask(ji,jj,jk) * tmask(ji,jj,jk-1) 
     220               wumask(ji,jj,jk) = umask(ji,jj,jk) * umask(ji,jj,jk-1)    
     221               wvmask(ji,jj,jk) = vmask(ji,jj,jk) * vmask(ji,jj,jk-1) 
     222            END DO 
     223         END DO 
     224      END DO 
     225!$OMP END PARALLEL 
    202226 
    203227 
     
    216240      ! 
    217241      !                          ! halo mask : 0 on the halo and 1 elsewhere 
    218       tmask_h(:,:) = 1._wp                   
     242!$OMP PARALLEL DO schedule(static) private(jj, ji) 
     243      DO jj = 1, jpj 
     244         DO ji = 1, jpi 
     245            tmask_h(ji,jj) = 1._wp                   
     246         END DO 
     247      END DO 
    219248      tmask_h( 1 :iif,   :   ) = 0._wp      ! first columns 
    220249      tmask_h(iil:jpi,   :   ) = 0._wp      ! last  columns (including mpp extra columns) 
     
    241270      ! 
    242271      !                          ! interior mask : 2D ocean mask x halo mask  
    243       tmask_i(:,:) = ssmask(:,:) * tmask_h(:,:) 
     272!$OMP PARALLEL DO schedule(static) private(jj, ji) 
     273      DO jj = 1, jpj 
     274         DO ji = 1, jpi 
     275            tmask_i(ji,jj) = ssmask(ji,jj) * tmask_h(ji,jj) 
     276         END DO 
     277      END DO 
    244278 
    245279 
     
    250284         CALL wrk_alloc( jpi,jpj,   zwf ) 
    251285         ! 
     286!$OMP PARALLEL 
    252287         DO jk = 1, jpk 
    253             zwf(:,:) = fmask(:,:,jk)          
     288!$OMP DO schedule(static) private(jj, ji) 
     289            DO jj = 1, jpj 
     290               DO ji = 1, jpi 
     291                  zwf(ji,jj) = fmask(ji,jj,jk)          
     292               END DO 
     293            END DO 
     294!$OMP DO schedule(static) private(jj, ji) 
    254295            DO jj = 2, jpjm1 
    255296               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    260301               END DO 
    261302            END DO 
     303!$OMP DO schedule(static) private(jj) 
    262304            DO jj = 2, jpjm1 
    263305               IF( fmask(1,jj,jk) == 0._wp ) THEN 
     
    268310               ENDIF 
    269311            END DO          
     312!$OMP DO schedule(static) private(ji) 
    270313            DO ji = 2, jpim1 
    271314               IF( fmask(ji,1,jk) == 0._wp ) THEN 
     
    277320            END DO 
    278321         END DO 
     322!$OMP END PARALLEL 
    279323         ! 
    280324         CALL wrk_dealloc( jpi,jpj,   zwf ) 
Note: See TracChangeset for help on using the changeset viewer.