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 9176 for branches/UKMO/dev_r5518_GO6_package_OMP/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_tvd.F90 – NEMO

Ignore:
Timestamp:
2018-01-04T13:30:03+01:00 (6 years ago)
Author:
andmirek
Message:

#2001: OMP directives

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r5518_GO6_package_OMP/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_tvd.F90

    r6795 r9176  
    120120         ! -------------------------------------------------------------------- 
    121121         ! upstream tracer flux in the i and j direction 
     122!$OMP PARALLEL DO PRIVATE(zfp_ui, zfm_ui, zfp_vj, zfm_vj) 
    122123         DO jk = 1, jpkm1 
    123124            DO jj = 1, jpjm1 
     
    133134            END DO 
    134135         END DO 
    135  
     136!$OMP END PARALLEL DO  
    136137         ! upstream tracer flux in the k direction 
    137138         ! Interior value 
     139!$OMP PARALLEL DO PRIVATE(zfp_wk, zfm_wk) 
    138140         DO jk = 2, jpkm1 
    139141            DO jj = 1, jpj 
     
    145147            END DO 
    146148         END DO 
     149!$OMP END PARALLEL DO 
    147150         ! Surface value 
    148151         IF( lk_vvl ) THEN    
     
    158161         ELSE                 
    159162            IF ( ln_isfcav ) THEN 
     163!$OMP PARALLEL DO  
    160164               DO jj = 1, jpj 
    161165                  DO ji = 1, jpi 
    162166                     zwz(ji,jj, mikt(ji,jj) ) = pwn(ji,jj,mikt(ji,jj)) * ptb(ji,jj,mikt(ji,jj),jn)   ! linear free surface  
    163167                  END DO 
    164                END DO    
     168               END DO 
     169!$OMP END PARALLEL DO    
    165170            ELSE 
    166171               zwz(:,:,1) = pwn(:,:,1) * ptb(:,:,1,jn)   ! linear free surface 
     
    169174 
    170175         ! total advective trend 
     176!$OMP PARALLEL DO PRIVATE(z2dtt, ztra) 
    171177         DO jk = 1, jpkm1 
    172178            z2dtt = p2dt(jk) 
     
    183189            END DO 
    184190         END DO 
     191!$OMP END PARALLEL DO 
    185192         !                             ! Lateral boundary conditions on zwi  (unchanged sign) 
    186193         CALL lbc_lnk( zwi, 'T', 1. )   
     
    200207         ! -------------------------------------------------- 
    201208         ! antidiffusive flux on i and j 
     209!$OMP PARALLEL DO 
    202210         DO jk = 1, jpkm1 
    203211            DO jj = 1, jpjm1 
     
    208216            END DO 
    209217         END DO 
    210        
     218!$OMP END PARALLEL DO 
    211219         ! antidiffusive flux on k 
    212220         ! Interior value 
     221!$OMP PARALLEL DO 
    213222         DO jk = 2, jpkm1                     
    214223            DO jj = 1, jpj 
     
    218227            END DO 
    219228         END DO 
     229!$OMP END PARALLEL DO 
    220230         ! surface value 
    221231         IF ( ln_isfcav ) THEN 
     
    238248         ! 5. final trend with corrected fluxes 
    239249         ! ------------------------------------ 
     250!$OMP PARALLEL DO PRIVATE(zbtr, ztra) 
    240251         DO jk = 1, jpkm1 
    241252            DO jj = 2, jpjm1 
     
    251262            END DO 
    252263         END DO 
    253  
     264!$OMP END PARALLEL DO 
    254265         !                                 ! trend diagnostics (contribution of upstream fluxes) 
    255266         IF( l_trd )  THEN  
     
    356367         ! -------------------------------------------------------------------- 
    357368         ! upstream tracer flux in the i and j direction 
     369!$OMP PARALLEL DO PRIVATE(zfp_ui, zfm_ui, zfp_vj, zfm_vj) 
    358370         DO jk = 1, jpkm1 
    359371            DO jj = 1, jpjm1 
     
    369381            END DO 
    370382         END DO 
    371  
     383!$OMP END PARALLEL DO 
    372384         ! upstream tracer flux in the k direction 
    373385         ! Interior value 
     386!$OMP PARALLEL DO PRIVATE(zfp_wk, zfm_wk) 
    374387         DO jk = 2, jpkm1 
    375388            DO jj = 1, jpj 
     
    381394            END DO 
    382395         END DO 
     396!$OMP END PARALLEL DO 
    383397         ! Surface value 
    384398         IF( lk_vvl ) THEN 
     
    394408         ELSE 
    395409            IF ( ln_isfcav ) THEN 
     410!$OMP PARALLEL DO  
    396411               DO jj = 1, jpj 
    397412                  DO ji = 1, jpi 
     
    399414                  END DO 
    400415               END DO 
     416!$OMP END PARALLEL DO 
    401417            ELSE 
    402418               zwz(:,:,1) = pwn(:,:,1) * ptb(:,:,1,jn)                                               ! linear free surface + no isf 
     
    405421 
    406422         ! total advective trend 
     423!$OMP PARALLEL DO PRIVATE(z2dtt, ztra) 
    407424         DO jk = 1, jpkm1 
    408425            z2dtt = p2dt(jk) 
     
    419436            END DO 
    420437         END DO 
     438!$OMP END PARALLEL DO 
    421439         !                             ! Lateral boundary conditions on zwi  (unchanged sign) 
    422440         CALL lbc_lnk( zwi, 'T', 1. )   
     
    437455         ! antidiffusive flux on i and j 
    438456         ! 
     457!$OMP PARALLEL DO  
    439458         DO jk = 1, jpkm1 
    440459            ! 
     
    463482            END DO 
    464483         END DO 
    465        
     484!$OMP END PARALLEL DO       
    466485         ! antidiffusive flux on k 
    467486         zwz(:,:,1) = 0._wp        ! Surface value 
     
    489508              jta = MOD(jta,3) + 1 
    490509            ENDIF 
     510!$OMP PARALLEL DO 
    491511            DO jk = 2, jpkm1          ! Interior value 
    492512               DO jj = 2, jpjm1 
     
    497517               END DO 
    498518            END DO 
    499  
     519!$OMP END PARALLEL DO 
    500520            jtaken = MOD( jtaken + 1 , 2 ) 
    501  
     521!$OMP PARALLEL DO PRIVATE (zbtr, ztra) 
    502522            DO jk = 2, jpkm1          ! Interior value 
    503523               DO jj = 2, jpjm1 
     
    510530               END DO 
    511531            END DO 
    512  
    513          END DO 
    514  
     532!$OMP END PARALLEL DO 
     533         END DO 
     534!$OMP PARALLEL DO  
    515535         DO jk = 2, jpkm1          ! Anti-diffusive vertical flux using average flux from the sub-timestepping 
    516536            DO jj = 2, jpjm1 
     
    520540            END DO 
    521541         END DO 
     542!$OMP END PARALLEL DO 
    522543         CALL lbc_lnk( zwx, 'U', -1. )   ;   CALL lbc_lnk( zwy, 'V', -1. )         ! Lateral bondary conditions 
    523544         CALL lbc_lnk( zwz, 'W',  1. ) 
     
    530551         ! 5. final trend with corrected fluxes 
    531552         ! ------------------------------------ 
     553!$OMP PARALLEL DO PRIVATE(zbtr, ztra) 
    532554         DO jk = 1, jpkm1 
    533555            DO jj = 2, jpjm1 
     
    543565            END DO 
    544566         END DO 
    545  
     567!$OMP END PARALLEL DO 
    546568         !                                 ! trend diagnostics (contribution of upstream fluxes) 
    547569         IF( l_trd )  THEN  
     
    612634         &        paft * tmask + zbig * ( 1._wp - tmask )  ) 
    613635 
     636!$OMP PARALLEL DO PRIVATE(ikm1, z2dtt, zup, zdo, zpos, zneg, zbt) 
    614637      DO jk = 1, jpkm1 
    615638         ikm1 = MAX(jk-1,1) 
     
    647670         END DO 
    648671      END DO 
     672!$OMP END PARALLEL DO 
    649673      CALL lbc_lnk( zbetup, 'T', 1. )   ;   CALL lbc_lnk( zbetdo, 'T', 1. )   ! lateral boundary cond. (unchanged sign) 
    650674 
    651675      ! 3. monotonic flux in the i & j direction (paa & pbb) 
    652676      ! ---------------------------------------- 
     677!$OMP PARALLEL DO PRIVATE(zau, zbu, zcu, zav, zbv, zcv, za, zb, zc) 
    653678      DO jk = 1, jpkm1 
    654679         DO jj = 2, jpjm1 
     
    673698         END DO 
    674699      END DO 
     700!$OMP END PARALLEL DO 
    675701      CALL lbc_lnk( paa, 'U', -1. )   ;   CALL lbc_lnk( pbb, 'V', -1. )   ! lateral boundary condition (changed sign) 
    676702      ! 
Note: See TracChangeset for help on using the changeset viewer.