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/DYN/dynzad.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/DYN/dynzad.F90

    r6140 r7698  
    7777      IF( l_trddyn )   THEN         ! Save ua and va trends 
    7878         CALL wrk_alloc( jpi, jpj, jpk, ztrdu, ztrdv )  
    79          ztrdu(:,:,:) = ua(:,:,:)  
    80          ztrdv(:,:,:) = va(:,:,:)  
     79!$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
     80        DO jk = 1, jpk 
     81           DO jj = 1, jpj 
     82              DO ji = 1, jpi 
     83                 ztrdu(ji,jj,jk) = ua(ji,jj,jk) 
     84                 ztrdv(ji,jj,jk) = va(ji,jj,jk) 
     85              END DO 
     86           END DO 
     87        END DO 
    8188      ENDIF 
    8289       
     90!$OMP PARALLEL 
    8391      DO jk = 2, jpkm1              ! Vertical momentum advection at level w and u- and v- vertical 
     92!$OMP DO schedule(static) private(jj, ji) 
    8493         DO jj = 2, jpj                   ! vertical fluxes  
    8594            DO ji = fs_2, jpi             ! vector opt. 
     
    8796            END DO 
    8897         END DO 
     98!$OMP DO schedule(static) private(jj, ji) 
    8999         DO jj = 2, jpjm1                 ! vertical momentum advection at w-point 
    90100            DO ji = fs_2, fs_jpim1        ! vector opt. 
     
    94104         END DO    
    95105      END DO 
     106!$OMP END PARALLEL 
    96107      ! 
    97108      ! Surface and bottom advective fluxes set to zero 
    98109      IF ( ln_isfcav ) THEN 
     110!$OMP PARALLEL DO schedule(static) private(jj, ji) 
    99111         DO jj = 2, jpjm1 
    100112            DO ji = fs_2, fs_jpim1           ! vector opt. 
     
    106118         END DO 
    107119      ELSE 
     120!$OMP PARALLEL DO schedule(static) private(jj, ji) 
    108121         DO jj = 2, jpjm1         
    109122            DO ji = fs_2, fs_jpim1           ! vector opt. 
     
    116129      END IF 
    117130 
     131!$OMP PARALLEL DO schedule(static) private(jk, jj, ji, zua, zva) 
    118132      DO jk = 1, jpkm1              ! Vertical momentum advection at u- and v-points 
    119133         DO jj = 2, jpjm1 
     
    130144 
    131145      IF( l_trddyn ) THEN           ! save the vertical advection trends for diagnostic 
    132          ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 
    133          ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 
     146!$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
     147           DO jk = 1, jpk 
     148              DO jj = 1, jpj 
     149                 DO ji = 1, jpi 
     150                    ztrdu(ji,jj,jk) = ua(ji,jj,jk) - ztrdu(ji,jj,jk) 
     151                    ztrdv(ji,jj,jk) = va(ji,jj,jk) - ztrdv(ji,jj,jk) 
     152                 END DO 
     153              END DO 
     154           END DO 
    134155         CALL trd_dyn( ztrdu, ztrdv, jpdyn_zad, kt ) 
    135156         CALL wrk_dealloc( jpi, jpj, jpk, ztrdu, ztrdv )  
Note: See TracChangeset for help on using the changeset viewer.