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 7037 for branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_mus.F90 – NEMO

Ignore:
Timestamp:
2016-10-18T15:32:04+02:00 (8 years ago)
Author:
mocavero
Message:

ORCA2_LIM_PISCES hybrid version update

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_mus.F90

    r6140 r7037  
    101101         ! 
    102102         ALLOCATE( xind(jpi,jpj,jpk), STAT=ierr ) 
     103!$OMP PARALLEL WORKSHARE  
    103104         xind(:,:,:) = 1._wp              ! set equal to 1 where up-stream is not needed 
     105!$OMP END PARALLEL WORKSHARE  
    104106         ! 
    105107         IF( ld_msc_ups ) THEN            ! define the upstream indicator (if asked) 
    106108            ALLOCATE( upsmsk(jpi,jpj), STAT=ierr ) 
     109!$OMP PARALLEL 
     110!$OMP WORKSHARE  
    107111            upsmsk(:,:) = 0._wp                             ! not upstream by default 
     112!$OMP END WORKSHARE  
    108113            ! 
     114!$OMP DO schedule(static) private(jk) 
    109115            DO jk = 1, jpkm1 
    110116               xind(:,:,jk) = 1._wp                              &                 ! =>1 where up-stream is not needed 
     
    112118                  &                 upsmsk(:,:)                ) * tmask(:,:,jk)   ! =>0 in some user defined area 
    113119            END DO 
     120!$OMP END DO NOWAIT 
     121!$OMP END PARALLEL 
    114122         ENDIF  
    115123         ! 
     
    121129         ! 
    122130         !                                !-- first guess of the slopes 
     131!$OMP PARALLEL 
     132!$OMP WORKSHARE 
    123133         zwx(:,:,jpk) = 0._wp                   ! bottom values 
    124          zwy(:,:,jpk) = 0._wp   
     134         zwy(:,:,jpk) = 0._wp 
     135!$OMP END WORKSHARE 
     136!$OMP DO schedule(static) private(jk, jj, ji) 
    125137         DO jk = 1, jpkm1                       ! interior values 
    126138            DO jj = 1, jpjm1       
     
    131143           END DO 
    132144         END DO 
     145!$OMP END DO NOWAIT 
     146!$OMP END PARALLEL 
    133147         CALL lbc_lnk( zwx, 'U', -1. )          ! lateral boundary conditions   (changed sign) 
    134148         CALL lbc_lnk( zwy, 'V', -1. ) 
    135149         !                                !-- Slopes of tracer 
     150!$OMP PARALLEL 
     151!$OMP WORKSHARE 
    136152         zslpx(:,:,jpk) = 0._wp                 ! bottom values 
    137153         zslpy(:,:,jpk) = 0._wp 
     154!$OMP END WORKSHARE 
     155!$OMP DO schedule(static) private(jk, jj, ji) 
    138156         DO jk = 1, jpkm1                       ! interior values 
    139157            DO jj = 2, jpj 
     
    147165         END DO 
    148166         ! 
     167!$OMP DO schedule(static) private(jk, jj, ji) 
    149168         DO jk = 1, jpkm1                 !-- Slopes limitation 
    150169            DO jj = 2, jpj 
     
    160179         END DO 
    161180         ! 
     181!$OMP DO schedule(static) private(jk, jj, ji, z0u, zalpha, zu, zv, zzwx, zzwy, z0v) 
    162182         DO jk = 1, jpkm1                 !-- MUSCL horizontal advective fluxes 
    163183            DO jj = 2, jpjm1 
     
    180200            END DO 
    181201         END DO 
     202!$OMP END DO NOWAIT 
     203!$OMP END PARALLEL 
    182204         CALL lbc_lnk( zwx, 'U', -1. )   ;   CALL lbc_lnk( zwy, 'V', -1. )   ! lateral boundary conditions   (changed sign) 
    183205         ! 
     206!$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    184207         DO jk = 1, jpkm1                 !-- Tracer advective trend 
    185208            DO jj = 2, jpjm1       
     
    206229         ! 
    207230         !                                !-- first guess of the slopes 
     231!$OMP PARALLEL  
     232!$OMP WORKSHARE 
    208233         zwx(:,:, 1 ) = 0._wp                   ! surface & bottom boundary conditions 
    209234         zwx(:,:,jpk) = 0._wp 
     235!$OMP END WORKSHARE 
     236!$OMP DO schedule(static) private(jk) 
    210237         DO jk = 2, jpkm1                       ! interior values 
    211238            zwx(:,:,jk) = tmask(:,:,jk) * ( ptb(:,:,jk-1,jn) - ptb(:,:,jk,jn) ) 
    212239         END DO 
    213240         !                                !-- Slopes of tracer 
     241!$OMP END DO NOWAIT 
     242!$OMP WORKSHARE 
    214243         zslpx(:,:,1) = 0._wp                   ! surface values 
     244!$OMP END WORKSHARE 
     245!$OMP DO schedule(static) private(jk, jj, ji) 
    215246         DO jk = 2, jpkm1                       ! interior value 
    216247            DO jj = 1, jpj 
     
    221252            END DO 
    222253         END DO 
     254!$OMP DO schedule(static) private(jk, jj, ji) 
    223255         DO jk = 2, jpkm1                 !-- Slopes limitation 
    224256            DO jj = 1, jpj                      ! interior values 
     
    230262            END DO 
    231263         END DO 
     264!$OMP DO schedule(static) private(jk, jj, ji, z0w, zalpha, zw, zzwx, zzwy) 
    232265         DO jk = 1, jpk-2                 !-- vertical advective flux 
    233266            DO jj = 2, jpjm1       
     
    242275            END DO 
    243276         END DO 
     277!$OMP END DO NOWAIT 
     278!$OMP END PARALLEL 
    244279         IF( ln_linssh ) THEN                   ! top values, linear free surface only 
    245280            IF( ln_isfcav ) THEN                      ! ice-shelf cavities (top of the ocean) 
     281!$OMP PARALLEL DO schedule(static) private(jj, ji) 
    246282               DO jj = 1, jpj 
    247283                  DO ji = 1, jpi 
     
    250286               END DO    
    251287            ELSE                                      ! no cavities: only at the ocean surface 
     288!$OMP PARALLEL WORKSHARE 
    252289               zwx(:,:,1) = pwn(:,:,1) * ptb(:,:,1,jn) 
     290!$OMP END PARALLEL WORKSHARE 
    253291            ENDIF 
    254292         ENDIF 
    255293         ! 
     294!$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    256295         DO jk = 1, jpkm1                 !-- vertical advective trend 
    257296            DO jj = 2, jpjm1       
Note: See TracChangeset for help on using the changeset viewer.