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/LBC/lib_mpp.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/LBC/lib_mpp.F90

    r6748 r7037  
    400400         !                                        !* Cyclic east-west 
    401401         IF( nbondi == 2 .AND. (nperio == 1 .OR. nperio == 4 .OR. nperio == 6) ) THEN 
     402!$OMP PARALLEL WORKSHARE 
    402403            ptab( 1 ,:,:) = ptab(jpim1,:,:) 
    403404            ptab(jpi,:,:) = ptab(  2  ,:,:) 
     405!$OMP END PARALLEL WORKSHARE 
    404406         ELSE                                     !* closed 
    405             IF( .NOT. cd_type == 'F' )   ptab(     1       :jpreci,:,:) = zland    ! south except F-point 
     407            IF( .NOT. cd_type == 'F' ) THEN 
     408!$OMP PARALLEL WORKSHARE 
     409                ptab(     1       :jpreci,:,:) = zland    ! south except F-point 
     410!$OMP END PARALLEL WORKSHARE 
     411            END IF 
     412!$OMP PARALLEL WORKSHARE 
    406413                                         ptab(nlci-jpreci+1:jpi   ,:,:) = zland    ! north 
     414!$OMP END PARALLEL WORKSHARE 
    407415         ENDIF 
    408416         !                                   ! North-South boundaries (always closed) 
    409          IF( .NOT. cd_type == 'F' )   ptab(:,     1       :jprecj,:) = zland       ! south except F-point 
     417         IF( .NOT. cd_type == 'F' ) THEN 
     418!$OMP PARALLEL WORKSHARE 
     419            ptab(:,     1       :jprecj,:) = zland       ! south except F-point 
     420!$OMP END PARALLEL WORKSHARE 
     421         END IF           
     422!$OMP PARALLEL WORKSHARE 
    410423                                      ptab(:,nlcj-jprecj+1:jpj   ,:) = zland       ! north 
     424!$OMP END PARALLEL WORKSHARE 
    411425         ! 
    412426      ENDIF 
     
    419433      CASE ( -1, 0, 1 )                ! all exept 2 (i.e. close case) 
    420434         iihom = nlci-nreci 
    421          DO jl = 1, jpreci 
    422             zt3ew(:,jl,:,1) = ptab(jpreci+jl,:,:) 
    423             zt3we(:,jl,:,1) = ptab(iihom +jl,:,:) 
     435!$OMP PARALLEL DO schedule(static) private(jk, jj, jl) 
     436         DO jk = 1, jpk 
     437            DO jj = 1, jpj 
     438               DO jl = 1, jpreci 
     439                  zt3ew(jj,jl,jk,1) = ptab(jpreci+jl,jj,jk) 
     440                  zt3we(jj,jl,jk,1) = ptab(iihom +jl,jj,jk) 
     441               END DO 
     442            END DO 
    424443         END DO 
    425444      END SELECT 
     
    451470      SELECT CASE ( nbondi ) 
    452471      CASE ( -1 ) 
    453          DO jl = 1, jpreci 
    454             ptab(iihom+jl,:,:) = zt3ew(:,jl,:,2) 
    455          END DO 
    456       CASE ( 0 ) 
    457          DO jl = 1, jpreci 
    458             ptab(jl      ,:,:) = zt3we(:,jl,:,2) 
    459             ptab(iihom+jl,:,:) = zt3ew(:,jl,:,2) 
    460          END DO 
    461       CASE ( 1 ) 
    462          DO jl = 1, jpreci 
    463             ptab(jl      ,:,:) = zt3we(:,jl,:,2) 
     472!$OMP PARALLEL DO schedule(static) private(jk, jj, jl) 
     473         DO jk = 1, jpk 
     474            DO jl = 1, jpreci 
     475               DO jj = 1, jpj 
     476                  ptab(iihom+jl,jj,jk) = zt3ew(jj,jl,jk,2) 
     477               END DO 
     478            END DO 
     479         END DO 
     480      CASE ( 0 ) 
     481!$OMP PARALLEL DO schedule(static) private(jk, jj, jl) 
     482         DO jk = 1, jpk 
     483            DO jl = 1, jpreci 
     484               DO jj = 1, jpj 
     485                  ptab(jl      ,jj,jk) = zt3we(jj,jl,jk,2) 
     486                  ptab(iihom+jl,jj,jk) = zt3ew(jj,jl,jk,2) 
     487               END DO 
     488            END DO 
     489         END DO 
     490      CASE ( 1 ) 
     491!$OMP PARALLEL DO schedule(static) private(jk, jj, jl) 
     492         DO jk = 1, jpk 
     493            DO jl = 1, jpreci 
     494               DO jj = 1, jpj 
     495                  ptab(jl      ,jj,jk) = zt3we(jj,jl,jk,2) 
     496               END DO 
     497            END DO 
    464498         END DO 
    465499      END SELECT 
     
    471505      IF( nbondj /= 2 ) THEN      ! Read Dirichlet lateral conditions 
    472506         ijhom = nlcj-nrecj 
    473          DO jl = 1, jprecj 
    474             zt3sn(:,jl,:,1) = ptab(:,ijhom +jl,:) 
    475             zt3ns(:,jl,:,1) = ptab(:,jprecj+jl,:) 
     507!$OMP PARALLEL DO schedule(static) private(jk, ji, jl) 
     508         DO jk = 1, jpk 
     509            DO jl = 1, jprecj 
     510               DO ji = 1, jpi 
     511                  zt3sn(ji,jl,jk,1) = ptab(ji,ijhom +jl,jk) 
     512                  zt3ns(ji,jl,jk,1) = ptab(ji,jprecj+jl,jk) 
     513               END DO 
     514            END DO 
    476515         END DO 
    477516      ENDIF 
     
    503542      SELECT CASE ( nbondj ) 
    504543      CASE ( -1 ) 
    505          DO jl = 1, jprecj 
    506             ptab(:,ijhom+jl,:) = zt3ns(:,jl,:,2) 
    507          END DO 
    508       CASE ( 0 ) 
    509          DO jl = 1, jprecj 
    510             ptab(:,jl      ,:) = zt3sn(:,jl,:,2) 
    511             ptab(:,ijhom+jl,:) = zt3ns(:,jl,:,2) 
    512          END DO 
    513       CASE ( 1 ) 
    514          DO jl = 1, jprecj 
    515             ptab(:,jl,:) = zt3sn(:,jl,:,2) 
     544!$OMP PARALLEL DO schedule(static) private(jk, ji, jl) 
     545         DO jk = 1, jpk 
     546            DO jl = 1, jprecj 
     547               DO ji = 1, jpi 
     548                  ptab(ji,ijhom+jl,jk) = zt3ns(ji,jl,jk,2) 
     549               END DO 
     550            END DO 
     551         END DO 
     552      CASE ( 0 ) 
     553!$OMP PARALLEL DO schedule(static) private(jk, ji, jl) 
     554         DO jk = 1, jpk 
     555            DO jl = 1, jprecj 
     556               DO ji = 1, jpi 
     557                  ptab(ji,jl      ,jk) = zt3sn(ji,jl,jk,2) 
     558                  ptab(ji,ijhom+jl,jk) = zt3ns(ji,jl,jk,2) 
     559               END DO 
     560            END DO 
     561         END DO 
     562      CASE ( 1 ) 
     563!$OMP PARALLEL DO schedule(static) private(jk, ji, jl) 
     564         DO jk = 1, jpk 
     565            DO jl = 1, jprecj 
     566               DO ji = 1, jpi 
     567                  ptab(ji,jl,jk) = zt3sn(ji,jl,jk,2) 
     568               END DO 
     569            END DO 
    516570         END DO 
    517571      END SELECT 
     
    902956      CASE ( -1, 0, 1 )                ! all exept 2 (i.e. close case) 
    903957         iihom = nlci-nreci 
    904          DO jl = 1, jpreci 
    905             zt2ew(:,jl,1) = pt2d(jpreci+jl,:) 
    906             zt2we(:,jl,1) = pt2d(iihom +jl,:) 
     958!$OMP PARALLEL DO schedule(static) private(jj,jl) 
     959         DO jj = 1, jpj 
     960            DO jl = 1, jpreci 
     961               zt2ew(jj,jl,1) = pt2d(jpreci+jl,jj) 
     962               zt2we(jj,jl,1) = pt2d(iihom +jl,jj) 
     963            END DO 
    907964         END DO 
    908965      END SELECT 
     
    934991      SELECT CASE ( nbondi ) 
    935992      CASE ( -1 ) 
     993!$OMP PARALLEL DO schedule(static) private(jj,jl) 
    936994         DO jl = 1, jpreci 
    937             pt2d(iihom+jl,:) = zt2ew(:,jl,2) 
    938          END DO 
    939       CASE ( 0 ) 
     995            DO jj = 1, jpj 
     996               pt2d(iihom+jl,jj) = zt2ew(jj,jl,2) 
     997            END DO 
     998         END DO 
     999      CASE ( 0 ) 
     1000!$OMP PARALLEL DO schedule(static) private(jj,jl) 
    9401001         DO jl = 1, jpreci 
    941             pt2d(jl      ,:) = zt2we(:,jl,2) 
    942             pt2d(iihom+jl,:) = zt2ew(:,jl,2) 
    943          END DO 
    944       CASE ( 1 ) 
     1002            DO jj = 1, jpj 
     1003               pt2d(jl      ,jj) = zt2we(jj,jl,2) 
     1004               pt2d(iihom+jl,jj) = zt2ew(jj,jl,2) 
     1005            END DO 
     1006         END DO 
     1007      CASE ( 1 ) 
     1008!$OMP PARALLEL DO schedule(static) private(jj,jl) 
    9451009         DO jl = 1, jpreci 
    946             pt2d(jl      ,:) = zt2we(:,jl,2) 
     1010            DO jj = 1, jpj 
     1011               pt2d(jl      ,jj) = zt2we(jj,jl,2) 
     1012            END DO 
    9471013         END DO 
    9481014      END SELECT 
     
    9551021      IF( nbondj /= 2 ) THEN      ! Read Dirichlet lateral conditions 
    9561022         ijhom = nlcj-nrecj 
     1023!$OMP PARALLEL DO schedule(static) private(ji,jl) 
    9571024         DO jl = 1, jprecj 
    958             zt2sn(:,jl,1) = pt2d(:,ijhom +jl) 
    959             zt2ns(:,jl,1) = pt2d(:,jprecj+jl) 
     1025            DO ji = 1, jpi 
     1026               zt2sn(ji,jl,1) = pt2d(ji,ijhom +jl) 
     1027               zt2ns(ji,jl,1) = pt2d(ji,jprecj+jl) 
     1028            END DO 
    9601029         END DO 
    9611030      ENDIF 
     
    9871056      SELECT CASE ( nbondj ) 
    9881057      CASE ( -1 ) 
     1058!$OMP PARALLEL DO schedule(static) private(ji,jl) 
    9891059         DO jl = 1, jprecj 
    990             pt2d(:,ijhom+jl) = zt2ns(:,jl,2) 
    991          END DO 
    992       CASE ( 0 ) 
     1060            DO ji = 1, jpi 
     1061               pt2d(ji,ijhom+jl) = zt2ns(ji,jl,2) 
     1062            END DO 
     1063         END DO 
     1064      CASE ( 0 ) 
     1065!$OMP PARALLEL DO schedule(static) private(ji,jl) 
    9931066         DO jl = 1, jprecj 
    994             pt2d(:,jl      ) = zt2sn(:,jl,2) 
    995             pt2d(:,ijhom+jl) = zt2ns(:,jl,2) 
    996          END DO 
    997       CASE ( 1 ) 
     1067            DO ji = 1, jpi 
     1068               pt2d(ji,jl      ) = zt2sn(ji,jl,2) 
     1069               pt2d(ji,ijhom+jl) = zt2ns(ji,jl,2) 
     1070            END DO 
     1071         END DO 
     1072      CASE ( 1 ) 
     1073!$OMP PARALLEL DO schedule(static) private(ji,jl) 
    9981074         DO jl = 1, jprecj 
    999             pt2d(:,jl      ) = zt2sn(:,jl,2) 
     1075            DO ji = 1, jpi 
     1076               pt2d(ji,jl      ) = zt2sn(ji,jl,2) 
     1077            END DO 
    10001078         END DO 
    10011079      END SELECT 
Note: See TracChangeset for help on using the changeset viewer.