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 7753 for trunk/NEMOGCM/NEMO/OPA_SRC/DYN – NEMO

Ignore:
Timestamp:
2017-03-03T12:46:59+01:00 (7 years ago)
Author:
mocavero
Message:

Reverting trunk to remove OpenMP

Location:
trunk/NEMOGCM/NEMO/OPA_SRC/DYN
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/OPA_SRC/DYN/divhor.F90

    r7698 r7753  
    7272      ENDIF 
    7373      ! 
    74 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    7574      DO jk = 1, jpkm1                                      !==  Horizontal divergence  ==! 
    7675         DO jj = 2, jpjm1 
  • trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynbfr.F90

    r7698 r7753  
    4747      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
    4848      !!  
    49       INTEGER  ::   jk, ji, jj       ! dummy loop indexes 
     49      INTEGER  ::   ji, jj       ! dummy loop indexes 
    5050      INTEGER  ::   ikbu, ikbv   ! local integers 
    5151      REAL(wp) ::   zm1_2dt      ! local scalar 
     
    6565        IF( l_trddyn ) THEN      ! trends: store the input trends 
    6666           CALL wrk_alloc( jpi,jpj,jpk,   ztrdu, ztrdv ) 
    67 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    68            DO jk = 1, jpk 
    69               DO jj = 1, jpj 
    70                  DO ji = 1, jpi 
    71                     ztrdu(ji,jj,jk) = ua(ji,jj,jk) 
    72                     ztrdv(ji,jj,jk) = va(ji,jj,jk) 
    73                  END DO 
    74               END DO 
    75            END DO 
     67           ztrdu(:,:,:) = ua(:,:,:) 
     68           ztrdv(:,:,:) = va(:,:,:) 
    7669        ENDIF 
    7770 
    7871 
    79 !$OMP PARALLEL DO schedule(static) private(jj, ji, ikbu, ikbv) 
    8072        DO jj = 2, jpjm1 
    8173           DO ji = 2, jpim1 
     
    9082        ! 
    9183        IF( ln_isfcav ) THEN        ! ocean cavities 
    92 !$OMP PARALLEL DO schedule(static) private(jj, ji, ikbu, ikbv) 
    9384           DO jj = 2, jpjm1 
    9485              DO ji = 2, jpim1 
     
    10899        ! 
    109100        IF( l_trddyn ) THEN      ! trends: send trends to trddyn for further diagnostics 
    110 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    111            DO jk = 1, jpk 
    112               DO jj = 1, jpj 
    113                  DO ji = 1, jpi 
    114                     ztrdu(ji,jj,jk) = ua(ji,jj,jk) - ztrdu(ji,jj,jk) 
    115                     ztrdv(ji,jj,jk) = va(ji,jj,jk) - ztrdv(ji,jj,jk) 
    116                  END DO 
    117               END DO 
    118            END DO 
     101           ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 
     102           ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 
    119103           CALL trd_dyn( ztrdu(:,:,:), ztrdv(:,:,:), jpdyn_bfr, kt ) 
    120104           CALL wrk_dealloc( jpi,jpj,jpk,   ztrdu, ztrdv ) 
  • trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynhpg.F90

    r7698 r7753  
    8484      !!---------------------------------------------------------------------- 
    8585      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
    86       INTEGER ::  jk, jj, ji 
    8786      REAL(wp), POINTER, DIMENSION(:,:,:) ::  ztrdu, ztrdv 
    8887      !!---------------------------------------------------------------------- 
     
    9291      IF( l_trddyn ) THEN                    ! Temporary saving of ua and va trends (l_trddyn) 
    9392         CALL wrk_alloc( jpi,jpj,jpk, ztrdu, ztrdv ) 
    94 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    95          DO jk = 1, jpk 
    96             DO jj = 1, jpj 
    97                DO ji = 1, jpi 
    98                   ztrdu(ji,jj,jk) = ua(ji,jj,jk) 
    99                   ztrdv(ji,jj,jk) = va(ji,jj,jk) 
    100                END DO 
    101             END DO 
    102          END DO 
     93         ztrdu(:,:,:) = ua(:,:,:) 
     94         ztrdv(:,:,:) = va(:,:,:) 
    10395      ENDIF 
    10496      ! 
     
    113105      ! 
    114106      IF( l_trddyn ) THEN      ! save the hydrostatic pressure gradient trends for momentum trend diagnostics 
    115 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    116          DO jk = 1, jpk 
    117             DO jj = 1, jpj 
    118                DO ji = 1, jpi 
    119                   ztrdu(ji,jj,jk) = ua(ji,jj,jk) - ztrdu(ji,jj,jk) 
    120                   ztrdv(ji,jj,jk) = va(ji,jj,jk) - ztrdv(ji,jj,jk) 
    121                END DO 
    122             END DO 
    123          END DO 
     107         ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 
     108         ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 
    124109         CALL trd_dyn( ztrdu, ztrdv, jpdyn_hpg, kt ) 
    125110         CALL wrk_dealloc( jpi,jpj,jpk, ztrdu, ztrdv ) 
     
    213198      !  
    214199      ! initialisation of ice shelf load 
    215       IF ( .NOT. ln_isfcav ) THEN 
    216 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    217          DO jj = 1, jpj 
    218             DO ji = 1, jpi 
    219                riceload(ji,jj)=0.0 
    220             END DO 
    221          END DO 
    222       END IF 
     200      IF ( .NOT. ln_isfcav ) riceload(:,:)=0.0 
    223201      IF (       ln_isfcav ) THEN 
    224202         CALL wrk_alloc( jpi,jpj, 2,  ztstop)  
     
    234212          
    235213         ! assume water displaced by the ice shelf is at T=-1.9 and S=34.4 (rude) 
    236 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    237          DO jj = 1, jpj 
    238             DO ji = 1, jpi 
    239                ztstop(ji,jj,1)=-1.9_wp 
    240                ztstop(ji,jj,2)=34.4_wp 
    241             END DO 
    242          END DO 
     214         ztstop(:,:,1)=-1.9_wp ; ztstop(:,:,2)=34.4_wp 
    243215 
    244216         ! compute density of the water displaced by the ice shelf  
     
    254226         ! divided by 2 later 
    255227         ziceload = 0._wp 
    256 !$OMP PARALLEL 
    257 !$OMP DO schedule(static) private(jj,ji,ikt,jk) 
    258228         DO jj = 1, jpj 
    259229            DO ji = 1, jpi 
     
    268238            END DO 
    269239         END DO 
    270 !$OMP DO schedule(static) private(jj, ji) 
    271          DO jj = 1, jpj 
    272             DO ji = 1, jpi 
    273                riceload(ji,jj)=ziceload(ji,jj)  ! need to be saved for diaar5 
    274             END DO 
    275          END DO 
    276 !$OMP END PARALLEL 
     240         riceload(:,:)=ziceload(:,:)  ! need to be saved for diaar5 
    277241 
    278242         CALL wrk_dealloc( jpi,jpj, 2,  ztstop)  
     
    318282 
    319283      ! Surface value 
    320 !$OMP PARALLEL 
    321 !$OMP DO schedule(static) private(ji,jj, zcoef1) 
    322284      DO jj = 2, jpjm1 
    323285         DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    335297      ! interior value (2=<jk=<jpkm1) 
    336298      DO jk = 2, jpkm1 
    337 !$OMP DO schedule(static) private(ji,jj, zcoef1) 
    338299         DO jj = 2, jpjm1 
    339300            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    352313            END DO 
    353314         END DO 
    354 !$OMP END DO NOWAIT 
    355       END DO 
    356 !$OMP END PARALLEL 
     315      END DO 
    357316      ! 
    358317      CALL wrk_dealloc( jpi,jpj,jpk,   zhpi, zhpj ) 
     
    392351 
    393352      !  Surface value (also valid in partial step case) 
    394 !$OMP PARALLEL 
    395 !$OMP DO schedule(static) private(ji,jj,zcoef1) 
    396353      DO jj = 2, jpjm1 
    397354         DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    408365      ! interior value (2=<jk=<jpkm1) 
    409366      DO jk = 2, jpkm1 
    410 !$OMP DO schedule(static) private(ji,jj, zcoef1) 
    411367         DO jj = 2, jpjm1 
    412368            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    428384 
    429385      ! partial steps correction at the last level  (use gru & grv computed in zpshde.F90) 
    430 !$OMP DO schedule(static) private(ji,jj,iku,ikv,zcoef2,zcoef3) 
    431386      DO jj = 2, jpjm1 
    432387         DO ji = 2, jpim1 
     
    449404         END DO 
    450405      END DO 
    451 !$OMP END PARALLEL 
    452406      ! 
    453407      CALL wrk_dealloc( jpi,jpj,jpk,   zhpi, zhpj ) 
  • trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynkeg.F90

    r7698 r7753  
    9696      IF( l_trddyn ) THEN           ! Save ua and va trends 
    9797         CALL wrk_alloc( jpi,jpj,jpk,   ztrdu, ztrdv ) 
    98 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    99          DO jk = 1, jpk 
    100             DO jj = 1, jpj 
    101                DO ji = 1, jpi 
    102                   ztrdu(ji,jj,jk) = ua(ji,jj,jk) 
    103                   ztrdv(ji,jj,jk) = va(ji,jj,jk) 
    104                END DO 
    105             END DO 
    106          END DO 
     98         ztrdu(:,:,:) = ua(:,:,:)  
     99         ztrdv(:,:,:) = va(:,:,:)  
    107100      ENDIF 
    108 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    109       DO jj = 1, jpj 
    110          DO ji = 1, jpi 
    111             zhke(ji,jj,jpk) = 0._wp 
    112          END DO 
    113       END DO 
     101       
     102      zhke(:,:,jpk) = 0._wp 
    114103       
    115104      IF (ln_bdy) THEN 
     
    144133      ! 
    145134      CASE ( nkeg_C2 )                          !--  Standard scheme  --! 
    146 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji, zu, zv) 
    147135         DO jk = 1, jpkm1 
    148136            DO jj = 2, jpj 
     
    158146         ! 
    159147      CASE ( nkeg_HW )                          !--  Hollingsworth scheme  --! 
    160 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji, zu, zv) 
    161148         DO jk = 1, jpkm1 
    162149            DO jj = 2, jpjm1        
     
    181168      IF (ln_bdy) THEN 
    182169         ! restore velocity masks at points outside boundary 
    183 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    184          DO jk = 1, jpk 
    185             DO jj = 1, jpj 
    186                DO ji = 1, jpi 
    187                   un(ji,jj,jk) = un(ji,jj,jk) * umask(ji,jj,jk) 
    188                   vn(ji,jj,jk) = vn(ji,jj,jk) * vmask(ji,jj,jk) 
    189                END DO  
    190             END DO 
    191          END DO 
    192       ENDIF 
    193  
    194       ! 
    195 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
     170         un(:,:,:) = un(:,:,:) * umask(:,:,:) 
     171         vn(:,:,:) = vn(:,:,:) * vmask(:,:,:) 
     172      ENDIF       
     173 
     174 
     175      ! 
    196176      DO jk = 1, jpkm1                    !==  grad( KE ) added to the general momentum trends  ==! 
    197177         DO jj = 2, jpjm1 
     
    204184      ! 
    205185      IF( l_trddyn ) THEN                 ! save the Kinetic Energy trends for diagnostic 
    206 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    207            DO jk = 1, jpk 
    208               DO jj = 1, jpj 
    209                  DO ji = 1, jpi 
    210                     ztrdu(ji,jj,jk) = ua(ji,jj,jk) - ztrdu(ji,jj,jk) 
    211                     ztrdv(ji,jj,jk) = va(ji,jj,jk) - ztrdv(ji,jj,jk) 
    212                  END DO 
    213               END DO 
    214            END DO 
     186         ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 
     187         ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 
    215188         CALL trd_dyn( ztrdu, ztrdv, jpdyn_keg, kt ) 
    216189         CALL wrk_dealloc( jpi,jpj,jpk,   ztrdu, ztrdv ) 
  • trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf.F90

    r7698 r7753  
    6161      !!---------------------------------------------------------------------- 
    6262      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
    63       INTEGER ::   jk, jj, ji 
    6463      ! 
    6564      REAL(wp), POINTER, DIMENSION(:,:,:) ::  ztrdu, ztrdv 
     
    7069      IF( l_trddyn )   THEN                      ! temporary save of momentum trends 
    7170         CALL wrk_alloc( jpi,jpj,jpk,   ztrdu, ztrdv ) 
    72 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    73          DO jk = 1, jpk 
    74             DO jj = 1, jpj 
    75                DO ji = 1, jpi 
    76                   ztrdu(ji,jj,jk) = ua(ji,jj,jk) 
    77                   ztrdv(ji,jj,jk) = va(ji,jj,jk) 
    78                END DO 
    79             END DO 
    80          END DO 
     71         ztrdu(:,:,:) = ua(:,:,:)  
     72         ztrdv(:,:,:) = va(:,:,:)  
    8173      ENDIF 
    8274 
     
    9082 
    9183      IF( l_trddyn ) THEN                        ! save the horizontal diffusive trends for further diagnostics 
    92 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    93            DO jk = 1, jpk 
    94               DO jj = 1, jpj 
    95                  DO ji = 1, jpi 
    96                     ztrdu(ji,jj,jk) = ua(ji,jj,jk) - ztrdu(ji,jj,jk) 
    97                     ztrdv(ji,jj,jk) = va(ji,jj,jk) - ztrdv(ji,jj,jk) 
    98                  END DO 
    99               END DO 
    100            END DO 
     84         ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 
     85         ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 
    10186         CALL trd_dyn( ztrdu, ztrdv, jpdyn_ldf, kt ) 
    10287         CALL wrk_dealloc( jpi,jpj,jpk,   ztrdu, ztrdv ) 
  • trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_lap_blp.F90

    r7698 r7753  
    7575      ! 
    7676      !                                                ! =============== 
    77 !$OMP PARALLEL 
    7877      DO jk = 1, jpkm1                                 ! Horizontal slab 
    7978         !                                             ! =============== 
    80 !$OMP DO schedule(static) private(jj, ji) 
    8179         DO jj = 2, jpj 
    8280            DO ji = fs_2, jpi   ! vector opt. 
     
    9593         END DO   
    9694         ! 
    97 !$OMP DO schedule(static) private(jj, ji) 
    9895         DO jj = 2, jpjm1                             ! - curl( curl) + grad( div ) 
    9996            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    109106         !                                             ! =============== 
    110107      END DO                                           !   End of slab 
    111 !$OMP END PARALLEL 
    112108      !                                                ! =============== 
    113109      CALL wrk_dealloc( jpi, jpj, zcur, zdiv )  
     
    132128      !!---------------------------------------------------------------------- 
    133129      INTEGER                         , INTENT(in   ) ::   kt         ! ocean time-step index 
    134       INTEGER                                         ::   jk, jj, ji 
    135130      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in   ) ::   pub, pvb   ! before velocity fields 
    136131      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) ::   pua, pva   ! momentum trend 
     
    149144      ENDIF 
    150145      ! 
    151 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    152       DO jk = 1, jpk 
    153          DO jj = 1, jpj 
    154             DO ji = 1, jpi 
    155                zulap(ji,jj,jk) = 0._wp 
    156                zvlap(ji,jj,jk) = 0._wp 
    157             END DO 
    158          END DO 
    159       END DO 
     146      zulap(:,:,:) = 0._wp 
     147      zvlap(:,:,:) = 0._wp 
    160148      ! 
    161149      CALL dyn_ldf_lap( kt, pub, pvb, zulap, zvlap, 1 )   ! rotated laplacian applied to ptb (output in zlap) 
  • trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynnxt.F90

    r7698 r7753  
    115115         ! Ensure below that barotropic velocities match time splitting estimate 
    116116         ! Compute actual transport and replace it with ts estimate at "after" time step 
    117 !$OMP PARALLEL 
    118 !$OMP DO schedule(static) private(jj, ji) 
    119          DO jj = 1, jpj 
    120             DO ji = 1, jpi 
    121                zue(ji,jj) = e3u_a(ji,jj,1) * ua(ji,jj,1) * umask(ji,jj,1) 
    122                zve(ji,jj) = e3v_a(ji,jj,1) * va(ji,jj,1) * vmask(ji,jj,1) 
    123             END DO 
     117         zue(:,:) = e3u_a(:,:,1) * ua(:,:,1) * umask(:,:,1) 
     118         zve(:,:) = e3v_a(:,:,1) * va(:,:,1) * vmask(:,:,1) 
     119         DO jk = 2, jpkm1 
     120            zue(:,:) = zue(:,:) + e3u_a(:,:,jk) * ua(:,:,jk) * umask(:,:,jk) 
     121            zve(:,:) = zve(:,:) + e3v_a(:,:,jk) * va(:,:,jk) * vmask(:,:,jk) 
    124122         END DO 
    125          DO jk = 2, jpkm1 
    126 !$OMP DO schedule(static) private(jj,ji) 
    127             DO jj = 1, jpj 
    128                DO ji = 1, jpi 
    129                   zue(ji,jj) = zue(ji,jj) + e3u_a(ji,jj,jk) * ua(ji,jj,jk) * umask(ji,jj,jk) 
    130                   zve(ji,jj) = zve(ji,jj) + e3v_a(ji,jj,jk) * va(ji,jj,jk) * vmask(ji,jj,jk) 
    131                END DO 
    132             END DO 
     123         DO jk = 1, jpkm1 
     124            ua(:,:,jk) = ( ua(:,:,jk) - zue(:,:) * r1_hu_a(:,:) + ua_b(:,:) ) * umask(:,:,jk) 
     125            va(:,:,jk) = ( va(:,:,jk) - zve(:,:) * r1_hv_a(:,:) + va_b(:,:) ) * vmask(:,:,jk) 
    133126         END DO 
    134 !$OMP DO schedule(static) private(jk,jj,ji) 
    135          DO jk = 1, jpkm1 
    136             DO jj = 1, jpj 
    137                DO ji = 1, jpi 
    138                   ua(ji,jj,jk) = ( ua(ji,jj,jk) - zue(ji,jj) * r1_hu_a(ji,jj) + ua_b(ji,jj) ) * umask(ji,jj,jk) 
    139                   va(ji,jj,jk) = ( va(ji,jj,jk) - zve(ji,jj) * r1_hv_a(ji,jj) + va_b(ji,jj) ) * vmask(ji,jj,jk) 
    140                END DO 
    141             END DO 
    142          END DO 
    143 !$OMP END PARALLEL 
    144127         ! 
    145128         IF( .NOT.ln_bt_fw ) THEN 
     
    148131            ! In the forward case, this is done below after asselin filtering    
    149132            ! so that asselin contribution is removed at the same time  
    150 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    151133            DO jk = 1, jpkm1 
    152                DO jj = 1, jpj 
    153                   DO ji = 1, jpi 
    154                      un(ji,jj,jk) = ( un(ji,jj,jk) - un_adv(ji,jj) + un_b(ji,jj) )*umask(ji,jj,jk) 
    155                      vn(ji,jj,jk) = ( vn(ji,jj,jk) - vn_adv(ji,jj) + vn_b(ji,jj) )*vmask(ji,jj,jk) 
    156                   END DO 
    157                END DO 
    158             END DO 
    159  
     134               un(:,:,jk) = ( un(:,:,jk) - un_adv(:,:) + un_b(:,:) )*umask(:,:,jk) 
     135               vn(:,:,jk) = ( vn(:,:,jk) - vn_adv(:,:) + vn_b(:,:) )*vmask(:,:,jk) 
     136            END DO   
    160137         ENDIF 
    161138      ENDIF 
     
    184161         ! 
    185162         IF( ln_dyn_trd ) THEN              ! 3D output: total momentum trends 
    186 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    187             DO jk = 1, jpk 
    188                DO jj = 1, jpj 
    189                   DO ji = 1, jpi 
    190                      zua(ji,jj,jk) = ( ua(ji,jj,jk) - ub(ji,jj,jk) ) * z1_2dt 
    191                      zva(ji,jj,jk) = ( va(ji,jj,jk) - vb(ji,jj,jk) ) * z1_2dt 
    192                   END DO 
    193                END DO 
    194             END DO 
     163            zua(:,:,:) = ( ua(:,:,:) - ub(:,:,:) ) * z1_2dt 
     164            zva(:,:,:) = ( va(:,:,:) - vb(:,:,:) ) * z1_2dt 
    195165            CALL iom_put( "utrd_tot", zua )        ! total momentum trends, except the asselin time filter 
    196166            CALL iom_put( "vtrd_tot", zva ) 
    197167         ENDIF 
    198168         ! 
    199 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    200          DO jk = 1, jpk 
    201             DO jj = 1, jpj 
    202                DO ji = 1, jpi 
    203                   zua(ji,jj,jk) = un(ji,jj,jk)             ! save the now velocity before the asselin filter 
    204                   zva(ji,jj,jk) = vn(ji,jj,jk)             ! (caution: there will be a shift by 1 timestep in the 
    205                         !                                  !  computation of the asselin filter trends) 
    206                END DO 
    207             END DO 
    208          END DO 
     169         zua(:,:,:) = un(:,:,:)             ! save the now velocity before the asselin filter 
     170         zva(:,:,:) = vn(:,:,:)             ! (caution: there will be a shift by 1 timestep in the 
     171         !                                  !  computation of the asselin filter trends) 
    209172      ENDIF 
    210173 
     
    212175      ! ------------------------------------------ 
    213176      IF( neuler == 0 .AND. kt == nit000 ) THEN        !* Euler at first time-step: only swap 
    214 !$OMP PARALLEL 
    215 !$OMP DO schedule(static) private(jk,jj,ji) 
    216177         DO jk = 1, jpkm1 
    217             DO jj = 1, jpj 
    218                DO ji = 1, jpi 
    219                   un(ji,jj,jk) = ua(ji,jj,jk)                          ! un <-- ua 
    220                   vn(ji,jj,jk) = va(ji,jj,jk) 
    221                END DO 
     178            un(:,:,jk) = ua(:,:,jk)                          ! un <-- ua 
     179            vn(:,:,jk) = va(:,:,jk) 
     180         END DO 
     181         IF(.NOT.ln_linssh ) THEN 
     182            DO jk = 1, jpkm1 
     183               e3t_b(:,:,jk) = e3t_n(:,:,jk) 
     184               e3u_b(:,:,jk) = e3u_n(:,:,jk) 
     185               e3v_b(:,:,jk) = e3v_n(:,:,jk) 
    222186            END DO 
    223          END DO 
    224 !$OMP END DO NOWAIT 
    225          IF(.NOT.ln_linssh ) THEN 
    226 !$OMP DO schedule(static) private(jk,jj,ji) 
    227             DO jk = 1, jpkm1 
    228                DO jj = 1, jpj 
    229                   DO ji = 1, jpi 
    230                      e3t_b(ji,jj,jk) = e3t_n(ji,jj,jk) 
    231                      e3u_b(ji,jj,jk) = e3u_n(ji,jj,jk) 
    232                      e3v_b(ji,jj,jk) = e3v_n(ji,jj,jk) 
    233                   END DO 
    234                END DO 
    235             END DO 
    236          ENDIF 
    237 !$OMP END PARALLEL 
     187         ENDIF 
    238188      ELSE                                             !* Leap-Frog : Asselin filter and swap 
    239189         !                                ! =============! 
    240190         IF( ln_linssh ) THEN             ! Fixed volume ! 
    241191            !                             ! =============! 
    242 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji, zuf, zvf) 
    243192            DO jk = 1, jpkm1                               
    244193               DO jj = 1, jpj 
     
    261210            ! ---------------------------------------------------- 
    262211            IF( ln_dynspg_ts .AND. ln_bt_fw ) THEN    ! No asselin filtering on thicknesses if forward time splitting 
    263 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    264                DO jj = 1, jpj 
    265                   DO ji = 1, jpi 
    266                      e3t_b(ji,jj,1:jpkm1) = e3t_n(ji,jj,1:jpkm1) 
    267                   END DO 
    268                END DO 
     212               e3t_b(:,:,1:jpkm1) = e3t_n(:,:,1:jpkm1) 
    269213            ELSE 
    270 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    271214               DO jk = 1, jpkm1 
    272                   DO jj = 1, jpj 
    273                      DO ji = 1, jpi 
    274                         e3t_b(ji,jj,jk) = e3t_n(ji,jj,jk) + atfp * ( e3t_b(ji,jj,jk) - 2._wp * e3t_n(ji,jj,jk) + e3t_a(ji,jj,jk) ) 
    275                      END DO 
    276                   END DO 
     215                  e3t_b(:,:,jk) = e3t_n(:,:,jk) + atfp * ( e3t_b(:,:,jk) - 2._wp * e3t_n(:,:,jk) + e3t_a(:,:,jk) ) 
    277216               END DO 
    278217               ! Add volume filter correction: compatibility with tracer advection scheme 
     
    280219               zcoef = atfp * rdt * r1_rau0 
    281220               IF ( .NOT. ln_isf ) THEN   ! if no ice shelf melting 
    282 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    283                   DO jj = 1, jpj 
    284                      DO ji = 1, jpi 
    285                         e3t_b(ji,jj,1) = e3t_b(ji,jj,1) - zcoef * ( emp_b(ji,jj) - emp(ji,jj) & 
    286                                  &                      - rnf_b(ji,jj) + rnf(ji,jj) ) * tmask(ji,jj,1) 
    287                      END DO 
    288                   END DO 
     221                  e3t_b(:,:,1) = e3t_b(:,:,1) - zcoef * ( emp_b(:,:) - emp(:,:) & 
     222                                 &                      - rnf_b(:,:) + rnf(:,:) ) * tmask(:,:,1) 
    289223               ELSE                     ! if ice shelf melting 
    290 !$OMP PARALLEL DO schedule(static) private(jj,ji,ikt) 
    291224                  DO jj = 1, jpj 
    292225                     DO ji = 1, jpi 
     
    304237               CALL dom_vvl_interpol( e3t_b(:,:,:), e3u_b(:,:,:), 'U' ) 
    305238               CALL dom_vvl_interpol( e3t_b(:,:,:), e3v_b(:,:,:), 'V' ) 
    306 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji, zuf, zvf) 
    307239               DO jk = 1, jpkm1 
    308240                  DO jj = 1, jpj 
     
    325257               CALL dom_vvl_interpol( e3t_b(:,:,:), ze3u_f, 'U' ) 
    326258               CALL dom_vvl_interpol( e3t_b(:,:,:), ze3v_f, 'V' ) 
    327 !$OMP PARALLEL  
    328 !$OMP DO schedule(static) private(jk, jj, ji, zue3a, zve3a, zue3n, zve3n, zue3b, zve3b, zuf, zvf) 
    329259               DO jk = 1, jpkm1 
    330260                  DO jj = 1, jpj 
     
    347277                  END DO 
    348278               END DO 
    349 !$OMP DO schedule(static) private(jj, ji) 
    350                   DO jj = 1, jpj 
    351                      DO ji = 1, jpi 
    352                         e3u_b(ji,jj,1:jpkm1) = ze3u_f(ji,jj,1:jpkm1)        ! e3u_b <-- filtered scale factor 
    353                         e3v_b(ji,jj,1:jpkm1) = ze3v_f(ji,jj,1:jpkm1) 
    354                      END DO 
    355                   END DO 
    356 !$OMP END PARALLEL 
     279               e3u_b(:,:,1:jpkm1) = ze3u_f(:,:,1:jpkm1)        ! e3u_b <-- filtered scale factor 
     280               e3v_b(:,:,1:jpkm1) = ze3v_f(:,:,1:jpkm1) 
    357281               ! 
    358282               CALL wrk_dealloc( jpi,jpj,jpk,   ze3u_f, ze3v_f ) 
     
    364288            ! Revert "before" velocities to time split estimate 
    365289            ! Doing it here also means that asselin filter contribution is removed   
    366 !$OMP PARALLEL  
    367 !$OMP DO schedule(static) private(jj, ji) 
    368             DO jj = 1, jpj 
    369                DO ji = 1, jpi 
    370                   zue(ji,jj) = e3u_b(ji,jj,1) * ub(ji,jj,1) * umask(ji,jj,1) 
    371                   zve(ji,jj) = e3v_b(ji,jj,1) * vb(ji,jj,1) * vmask(ji,jj,1) 
    372                END DO 
     290            zue(:,:) = e3u_b(:,:,1) * ub(:,:,1) * umask(:,:,1) 
     291            zve(:,:) = e3v_b(:,:,1) * vb(:,:,1) * vmask(:,:,1)     
     292            DO jk = 2, jpkm1 
     293               zue(:,:) = zue(:,:) + e3u_b(:,:,jk) * ub(:,:,jk) * umask(:,:,jk) 
     294               zve(:,:) = zve(:,:) + e3v_b(:,:,jk) * vb(:,:,jk) * vmask(:,:,jk)     
    373295            END DO 
    374             DO jk = 2, jpkm1 
    375 !$OMP DO schedule(static) private(jj, ji) 
    376                DO jj = 1, jpj 
    377                   DO ji = 1, jpi 
    378                      zue(ji,jj) = zue(ji,jj) + e3u_b(ji,jj,jk) * ub(ji,jj,jk) * umask(ji,jj,jk) 
    379                      zve(ji,jj) = zve(ji,jj) + e3v_b(ji,jj,jk) * vb(ji,jj,jk) * vmask(ji,jj,jk) 
    380                   END DO 
    381                END DO 
     296            DO jk = 1, jpkm1 
     297               ub(:,:,jk) = ub(:,:,jk) - (zue(:,:) * r1_hu_n(:,:) - un_b(:,:)) * umask(:,:,jk) 
     298               vb(:,:,jk) = vb(:,:,jk) - (zve(:,:) * r1_hv_n(:,:) - vn_b(:,:)) * vmask(:,:,jk) 
    382299            END DO 
    383 !$OMP DO schedule(static) private(jk,jj,ji) 
    384             DO jk = 1, jpkm1 
    385                DO jj = 1, jpj 
    386                   DO ji = 1, jpi 
    387                      ub(ji,jj,jk) = ub(ji,jj,jk) - (zue(ji,jj) * r1_hu_n(ji,jj) - un_b(ji,jj)) * umask(ji,jj,jk) 
    388                      vb(ji,jj,jk) = vb(ji,jj,jk) - (zve(ji,jj) * r1_hv_n(ji,jj) - vn_b(ji,jj)) * vmask(ji,jj,jk) 
    389                   END DO 
    390                END DO 
    391             END DO 
    392 !$OMP END PARALLEL 
    393300         ENDIF 
    394301         ! 
     
    401308      ! 
    402309      IF(.NOT.ln_linssh ) THEN 
    403 !$OMP PARALLEL  
    404 !$OMP DO schedule(static) private(jj, ji) 
    405          DO jj = 1, jpj 
    406             DO ji = 1, jpi 
    407                hu_b(ji,jj) = e3u_b(ji,jj,1) * umask(ji,jj,1) 
    408                hv_b(ji,jj) = e3v_b(ji,jj,1) * vmask(ji,jj,1) 
    409             END DO 
     310         hu_b(:,:) = e3u_b(:,:,1) * umask(:,:,1) 
     311         hv_b(:,:) = e3v_b(:,:,1) * vmask(:,:,1) 
     312         DO jk = 2, jpkm1 
     313            hu_b(:,:) = hu_b(:,:) + e3u_b(:,:,jk) * umask(:,:,jk) 
     314            hv_b(:,:) = hv_b(:,:) + e3v_b(:,:,jk) * vmask(:,:,jk) 
    410315         END DO 
    411          DO jk = 2, jpkm1 
    412 !$OMP DO schedule(static) private(jj, ji) 
    413             DO jj = 1, jpj 
    414                DO ji = 1, jpi 
    415                   hu_b(ji,jj) = hu_b(ji,jj) + e3u_b(ji,jj,jk) * umask(ji,jj,jk) 
    416                   hv_b(ji,jj) = hv_b(ji,jj) + e3v_b(ji,jj,jk) * vmask(ji,jj,jk) 
    417                END DO 
    418             END DO 
    419          END DO 
    420 !$OMP DO schedule(static) private(jj, ji) 
    421          DO jj = 1, jpj 
    422             DO ji = 1, jpi 
    423                r1_hu_b(ji,jj) = ssumask(ji,jj) / ( hu_b(ji,jj) + 1._wp - ssumask(ji,jj) ) 
    424                r1_hv_b(ji,jj) = ssvmask(ji,jj) / ( hv_b(ji,jj) + 1._wp - ssvmask(ji,jj) ) 
    425             END DO 
    426          END DO 
    427 !$OMP END PARALLEL 
    428       ENDIF 
    429       ! 
    430 !$OMP PARALLEL 
    431 !$OMP DO schedule(static) private(jj, ji) 
    432       DO jj = 1, jpj 
    433          DO ji = 1, jpi 
    434             un_b(ji,jj) = e3u_a(ji,jj,1) * un(ji,jj,1) * umask(ji,jj,1) 
    435             ub_b(ji,jj) = e3u_b(ji,jj,1) * ub(ji,jj,1) * umask(ji,jj,1) 
    436             vn_b(ji,jj) = e3v_a(ji,jj,1) * vn(ji,jj,1) * vmask(ji,jj,1) 
    437             vb_b(ji,jj) = e3v_b(ji,jj,1) * vb(ji,jj,1) * vmask(ji,jj,1) 
    438          END DO 
     316         r1_hu_b(:,:) = ssumask(:,:) / ( hu_b(:,:) + 1._wp - ssumask(:,:) ) 
     317         r1_hv_b(:,:) = ssvmask(:,:) / ( hv_b(:,:) + 1._wp - ssvmask(:,:) ) 
     318      ENDIF 
     319      ! 
     320      un_b(:,:) = e3u_a(:,:,1) * un(:,:,1) * umask(:,:,1) 
     321      ub_b(:,:) = e3u_b(:,:,1) * ub(:,:,1) * umask(:,:,1) 
     322      vn_b(:,:) = e3v_a(:,:,1) * vn(:,:,1) * vmask(:,:,1) 
     323      vb_b(:,:) = e3v_b(:,:,1) * vb(:,:,1) * vmask(:,:,1) 
     324      DO jk = 2, jpkm1 
     325         un_b(:,:) = un_b(:,:) + e3u_a(:,:,jk) * un(:,:,jk) * umask(:,:,jk) 
     326         ub_b(:,:) = ub_b(:,:) + e3u_b(:,:,jk) * ub(:,:,jk) * umask(:,:,jk) 
     327         vn_b(:,:) = vn_b(:,:) + e3v_a(:,:,jk) * vn(:,:,jk) * vmask(:,:,jk) 
     328         vb_b(:,:) = vb_b(:,:) + e3v_b(:,:,jk) * vb(:,:,jk) * vmask(:,:,jk) 
    439329      END DO 
    440       DO jk = 2, jpkm1 
    441 !$OMP DO schedule(static) private(jj, ji) 
    442          DO jj = 1, jpj 
    443             DO ji = 1, jpi 
    444                un_b(ji,jj) = un_b(ji,jj) + e3u_a(ji,jj,jk) * un(ji,jj,jk) * umask(ji,jj,jk) 
    445                ub_b(ji,jj) = ub_b(ji,jj) + e3u_b(ji,jj,jk) * ub(ji,jj,jk) * umask(ji,jj,jk) 
    446                vn_b(ji,jj) = vn_b(ji,jj) + e3v_a(ji,jj,jk) * vn(ji,jj,jk) * vmask(ji,jj,jk) 
    447                vb_b(ji,jj) = vb_b(ji,jj) + e3v_b(ji,jj,jk) * vb(ji,jj,jk) * vmask(ji,jj,jk) 
    448             END DO 
    449          END DO 
    450       END DO 
    451 !$OMP DO schedule(static) private(jj, ji) 
    452       DO jj = 1, jpj 
    453          DO ji = 1, jpi 
    454             un_b(ji,jj) = un_b(ji,jj) * r1_hu_a(ji,jj) 
    455             vn_b(ji,jj) = vn_b(ji,jj) * r1_hv_a(ji,jj) 
    456             ub_b(ji,jj) = ub_b(ji,jj) * r1_hu_b(ji,jj) 
    457             vb_b(ji,jj) = vb_b(ji,jj) * r1_hv_b(ji,jj) 
    458          END DO 
    459       END DO 
    460 !$OMP END PARALLEL 
     330      un_b(:,:) = un_b(:,:) * r1_hu_a(:,:) 
     331      vn_b(:,:) = vn_b(:,:) * r1_hv_a(:,:) 
     332      ub_b(:,:) = ub_b(:,:) * r1_hu_b(:,:) 
     333      vb_b(:,:) = vb_b(:,:) * r1_hv_b(:,:) 
    461334      ! 
    462335      IF( .NOT.ln_dynspg_ts ) THEN        ! output the barotropic currents 
     
    465338      ENDIF 
    466339      IF( l_trddyn ) THEN                ! 3D output: asselin filter trends on momentum 
    467 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    468          DO jk = 1, jpkm1 
    469             DO jj = 1, jpj 
    470                DO ji = 1, jpi 
    471                   zua(ji,jj,jk) = ( ub(ji,jj,jk) - zua(ji,jj,jk) ) * z1_2dt 
    472                   zva(ji,jj,jk) = ( vb(ji,jj,jk) - zva(ji,jj,jk) ) * z1_2dt 
    473                END DO 
    474             END DO 
    475          END DO 
     340         zua(:,:,:) = ( ub(:,:,:) - zua(:,:,:) ) * z1_2dt 
     341         zva(:,:,:) = ( vb(:,:,:) - zva(:,:,:) ) * z1_2dt 
    476342         CALL trd_dyn( zua, zva, jpdyn_atf, kt ) 
    477343      ENDIF 
  • trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg.F90

    r7698 r7753  
    8383      IF( l_trddyn )   THEN                      ! temporary save of ta and sa trends 
    8484         CALL wrk_alloc( jpi,jpj,jpk,   ztrdu, ztrdv )  
    85 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    86         DO jk = 1, jpk 
    87            DO jj = 1, jpj 
    88               DO ji = 1, jpi 
    89                  ztrdu(ji,jj,jk) = ua(ji,jj,jk) 
    90                  ztrdv(ji,jj,jk) = va(ji,jj,jk) 
    91               END DO 
    92            END DO 
    93         END DO 
     85         ztrdu(:,:,:) = ua(:,:,:) 
     86         ztrdv(:,:,:) = va(:,:,:) 
    9487      ENDIF 
    9588      ! 
     
    9891         .OR.  nn_ice_embd == 2  ) THEN                                      ! embedded sea-ice 
    9992         ! 
    100 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    10193         DO jj = 2, jpjm1 
    10294            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    108100         IF( ln_apr_dyn .AND. .NOT.ln_dynspg_ts ) THEN   !==  Atmospheric pressure gradient (added later in time-split case) ==! 
    109101            zg_2 = grav * 0.5 
    110 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    111102            DO jj = 2, jpjm1                          ! gradient of Patm using inverse barometer ssh 
    112103               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    124115            CALL upd_tide( kt )                      ! update tide potential 
    125116            ! 
    126 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    127117            DO jj = 2, jpjm1                         ! add tide potential forcing 
    128118               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    138128            zintp = REAL( MOD( kt-1, nn_fsbc ) ) / REAL( nn_fsbc ) 
    139129            zgrau0r     = - grav * r1_rau0 
    140 !$OMP PARALLEL 
    141 !$OMP DO schedule(static) private(jj, ji) 
    142             DO jj = 1, jpj 
    143                DO ji = 1, jpi 
    144                   zpice(ji,jj) = (  zintp * snwice_mass(ji,jj) + ( 1.- zintp ) * snwice_mass_b(ji,jj)  ) * zgrau0r 
    145                END DO 
    146             END DO 
    147 !$OMP DO schedule(static) private(jj, ji) 
     130            zpice(:,:) = (  zintp * snwice_mass(:,:) + ( 1.- zintp ) * snwice_mass_b(:,:)  ) * zgrau0r 
    148131            DO jj = 2, jpjm1 
    149132               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    152135               END DO 
    153136            END DO 
    154 !$OMP END PARALLEL 
    155137            ! 
    156138            CALL wrk_dealloc( jpi,jpj,   zpice )          
    157139         ENDIF 
    158140         ! 
    159 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    160141         DO jk = 1, jpkm1                    !== Add all terms to the general trend 
    161142            DO jj = 2, jpjm1 
     
    177158      !                     
    178159      IF( l_trddyn )   THEN                  ! save the surface pressure gradient trends for further diagnostics 
    179 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    180            DO jk = 1, jpk 
    181               DO jj = 1, jpj 
    182                  DO ji = 1, jpi 
    183                     ztrdu(ji,jj,jk) = ua(ji,jj,jk) - ztrdu(ji,jj,jk) 
    184                     ztrdv(ji,jj,jk) = va(ji,jj,jk) - ztrdv(ji,jj,jk) 
    185                  END DO 
    186               END DO 
    187            END DO 
     160         ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 
     161         ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 
    188162         CALL trd_dyn( ztrdu, ztrdv, jpdyn_spg, kt ) 
    189163         CALL wrk_dealloc( jpi,jpj,jpk,   ztrdu, ztrdv )  
  • trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90

    r7698 r7753  
    223223            SELECT CASE( nn_een_e3f )              !* ff_f/e3 at F-point 
    224224            CASE ( 0 )                                   ! original formulation  (masked averaging of e3t divided by 4) 
    225 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    226225               DO jj = 1, jpjm1 
    227226                  DO ji = 1, jpim1 
     
    232231               END DO 
    233232            CASE ( 1 )                                   ! new formulation  (masked averaging of e3t divided by the sum of mask) 
    234 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    235233               DO jj = 1, jpjm1 
    236234                  DO ji = 1, jpim1 
     
    245243            CALL lbc_lnk( zwz, 'F', 1._wp ) 
    246244            ! 
    247 !$OMP PARALLEL 
    248 !$OMP DO schedule(static) private(jj) 
    249             DO jj = 1, jpj 
    250                ftne(1,jj) = 0._wp ; ftnw(1,jj) = 0._wp ; ftse(1,jj) = 0._wp ; ftsw(1,jj) = 0._wp 
    251             END DO 
    252 !$OMP DO schedule(static) private(jj, ji) 
     245            ftne(1,:) = 0._wp ; ftnw(1,:) = 0._wp ; ftse(1,:) = 0._wp ; ftsw(1,:) = 0._wp 
    253246            DO jj = 2, jpj 
    254247               DO ji = 2, jpi 
     
    259252               END DO 
    260253            END DO 
    261 !$OMP END PARALLEL 
    262254            ! 
    263255         ELSE                                !== all other schemes (ENE, ENS, MIX) 
    264 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    265             DO jj = 1, jpj 
    266                DO ji = 1, jpi 
    267                   zwz(ji,jj) = 0._wp 
    268                   zhf(ji,jj) = 0._wp 
    269                END DO 
    270             END DO 
     256            zwz(:,:) = 0._wp 
     257            zhf(:,:) = 0._wp 
    271258             
    272259!!gm  assume 0 in both cases (xhich is almost surely WRONG ! ) as hvatf has been removed  
     
    288275               ELSE 
    289276                 !zhf(:,:) = hbatf(:,:) 
    290 !$OMP PARALLEL DO schedule(static) private(ji,jj) 
    291277                 DO jj = 1, jpjm1 
    292278                   DO ji = 1, jpim1 
     
    303289              END IF 
    304290   
    305 !$OMP PARALLEL  
    306 !$OMP DO schedule(static) private(ji,jj) 
    307291              DO jj = 1, jpjm1 
    308                  DO ji = 1, jpim1 
    309                     zhf(ji,jj) = zhf(ji,jj) * (1._wp- umask(ji,jj,1) * umask(ji,jj+1,1)) 
    310                  END DO 
     292                 zhf(:,jj) = zhf(:,jj) * (1._wp- umask(:,jj,1) * umask(:,jj+1,1)) 
    311293              END DO 
    312294!!gm end 
    313295 
    314296            DO jk = 1, jpkm1 
    315 !$OMP DO schedule(static) private(ji,jj) 
    316297               DO jj = 1, jpjm1 
    317                   DO ji = 1, jpi 
    318                      zhf(ji,jj) = zhf(ji,jj) + e3f_n(ji,jj,jk) * umask(ji,jj,jk) * umask(ji,jj+1,jk) 
    319                   END DO 
    320                END DO 
    321             END DO 
    322 !$OMP END PARALLEL  
     298                  zhf(:,jj) = zhf(:,jj) + e3f_n(:,jj,jk) * umask(:,jj,jk) * umask(:,jj+1,jk) 
     299               END DO 
     300            END DO 
    323301            CALL lbc_lnk( zhf, 'F', 1._wp ) 
    324302            ! JC: TBC. hf should be greater than 0  
    325 !$OMP PARALLEL  
    326 !$OMP DO schedule(static) private(jj, ji) 
    327303            DO jj = 1, jpj 
    328304               DO ji = 1, jpi 
     
    330306               END DO 
    331307            END DO 
    332 !$OMP DO schedule(static) private(jj, ji) 
    333             DO jj = 1, jpj 
    334                DO ji = 1, jpi 
    335                   zwz(ji,jj) = ff_f(ji,jj) * zwz(ji,jj) 
    336                END DO 
    337             END DO 
    338 !$OMP END PARALLEL 
     308            zwz(:,:) = ff_f(:,:) * zwz(:,:) 
    339309         ENDIF 
    340310      ENDIF 
     
    354324      !                                   !* e3*d/dt(Ua) (Vertically integrated) 
    355325      !                                   ! -------------------------------------------------- 
    356 !$OMP PARALLEL 
    357 !$OMP DO schedule(static) private(jj, ji) 
    358       DO jj = 1, jpj 
    359          DO ji = 1, jpi 
    360             zu_frc(ji,jj) = 0._wp 
    361             zv_frc(ji,jj) = 0._wp 
    362          END DO 
     326      zu_frc(:,:) = 0._wp 
     327      zv_frc(:,:) = 0._wp 
     328      ! 
     329      DO jk = 1, jpkm1 
     330         zu_frc(:,:) = zu_frc(:,:) + e3u_n(:,:,jk) * ua(:,:,jk) * umask(:,:,jk) 
     331         zv_frc(:,:) = zv_frc(:,:) + e3v_n(:,:,jk) * va(:,:,jk) * vmask(:,:,jk)          
    363332      END DO 
    364333      ! 
    365       DO jk = 1, jpkm1 
    366 !$OMP DO schedule(static) private(jj,ji) 
    367          DO jj=1,jpj 
    368             DO ji=1,jpi 
    369                zu_frc(ji,jj) = zu_frc(ji,jj) + e3u_n(ji,jj,jk) * ua(ji,jj,jk) * umask(ji,jj,jk) 
    370                zv_frc(ji,jj) = zv_frc(ji,jj) + e3v_n(ji,jj,jk) * va(ji,jj,jk) * vmask(ji,jj,jk) 
    371             END DO 
    372          END DO 
    373       END DO 
    374       ! 
    375 !$OMP DO schedule(static) private(jj, ji) 
    376       DO jj = 1, jpj 
    377          DO ji = 1, jpi 
    378             zu_frc(ji,jj) = zu_frc(ji,jj) * r1_hu_n(ji,jj) 
    379             zv_frc(ji,jj) = zv_frc(ji,jj) * r1_hv_n(ji,jj) 
    380          END DO 
    381       END DO 
     334      zu_frc(:,:) = zu_frc(:,:) * r1_hu_n(:,:) 
     335      zv_frc(:,:) = zv_frc(:,:) * r1_hv_n(:,:) 
     336      ! 
    382337      ! 
    383338      !                                   !* baroclinic momentum trend (remove the vertical mean trend) 
    384 !$OMP DO schedule(static) private(jk,jj,ji) 
    385339      DO jk = 1, jpkm1                    ! ----------------------------------------------------------- 
    386340         DO jj = 2, jpjm1 
     
    391345         END DO 
    392346      END DO 
    393 !$OMP END DO NOWAIT 
    394347       
    395348!!gm  Question here when removing the Vertically integrated trends, we remove the vertically integrated NL trends on momentum.... 
     
    399352      !                                   !* barotropic Coriolis trends (vorticity scheme dependent) 
    400353      !                                   ! -------------------------------------------------------- 
    401 !$OMP DO schedule(static) private(jj, ji) 
    402       DO jj = 1, jpj 
    403          DO ji = 1, jpi 
    404             zwx(ji,jj) = un_b(ji,jj) * hu_n(ji,jj) * e2u(ji,jj)        ! now fluxes  
    405             zwy(ji,jj) = vn_b(ji,jj) * hv_n(ji,jj) * e1v(ji,jj) 
    406          END DO 
    407       END DO 
    408 !$OMP END PARALLEL 
     354      zwx(:,:) = un_b(:,:) * hu_n(:,:) * e2u(:,:)        ! now fluxes  
     355      zwy(:,:) = vn_b(:,:) * hv_n(:,:) * e1v(:,:) 
    409356      ! 
    410357      IF( ln_dynvor_ene .OR. ln_dynvor_mix ) THEN      ! energy conserving or mixed scheme 
    411 !$OMP PARALLEL DO schedule(static) private(jj,ji,zy1,zy2,zx1,zx2) 
    412358         DO jj = 2, jpjm1 
    413359            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    423369         ! 
    424370      ELSEIF ( ln_dynvor_ens ) THEN                    ! enstrophy conserving scheme 
    425 !$OMP PARALLEL DO schedule(static) private(jj,ji,zy1,zx1) 
    426371         DO jj = 2, jpjm1 
    427372            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    436381         ! 
    437382      ELSEIF ( ln_dynvor_een ) THEN  ! enstrophy and energy conserving scheme 
    438 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    439383         DO jj = 2, jpjm1 
    440384            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    456400      IF( .NOT.ln_linssh ) THEN                 ! Variable volume : remove surface pressure gradient 
    457401        IF( ln_wd ) THEN                        ! Calculating and applying W/D gravity filters 
    458 !$OMP PARALLEL DO schedule(static) private(jj,ji,ll_tmp1,ll_tmp2) 
    459402           DO jj = 2, jpjm1 
    460403              DO ji = 2, jpim1  
     
    497440           END DO 
    498441  
    499 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    500442           DO jj = 2, jpjm1 
    501443              DO ji = 2, jpim1 
     
    509451         ELSE 
    510452 
    511 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    512453           DO jj = 2, jpjm1 
    513454              DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    520461      ENDIF 
    521462 
    522 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    523463      DO jj = 2, jpjm1                          ! Remove coriolis term (and possibly spg) from barotropic trend 
    524464         DO ji = fs_2, fs_jpim1 
     
    530470      !                 ! Add bottom stress contribution from baroclinic velocities:       
    531471      IF (ln_bt_fw) THEN 
    532 !$OMP PARALLEL DO schedule(static) private(jj,ji,ikbu,ikbv) 
    533472         DO jj = 2, jpjm1                           
    534473            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    540479         END DO 
    541480      ELSE 
    542 !$OMP PARALLEL DO schedule(static) private(jj,ji,ikbu,ikbv) 
    543481         DO jj = 2, jpjm1 
    544482            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    553491      ! Note that the "unclipped" bottom friction parameter is used even with explicit drag 
    554492      IF( ln_wd ) THEN 
    555 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    556          DO jj = 1, jpj 
    557             DO ji = 1, jpi   ! vector opt. 
    558                zu_frc(ji,jj) = zu_frc(ji,jj) + MAX(r1_hu_n(ji,jj) * bfrua(ji,jj),-1._wp / rdtbt) * zwx(ji,jj) 
    559                zv_frc(ji,jj) = zv_frc(ji,jj) + MAX(r1_hv_n(ji,jj) * bfrva(ji,jj),-1._wp / rdtbt) * zwy(ji,jj) 
    560             END DO 
    561          END DO 
     493        zu_frc(:,:) = zu_frc(:,:) + MAX(r1_hu_n(:,:) * bfrua(:,:),-1._wp / rdtbt) * zwx(:,:) 
     494        zv_frc(:,:) = zv_frc(:,:) + MAX(r1_hv_n(:,:) * bfrva(:,:),-1._wp / rdtbt) * zwy(:,:) 
    562495      ELSE 
    563 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    564          DO jj = 1, jpj 
    565             DO ji = 1, jpi 
    566                zu_frc(ji,jj) = zu_frc(ji,jj) + r1_hu_n(ji,jj) * bfrua(ji,jj) * zwx(ji,jj) 
    567                zv_frc(ji,jj) = zv_frc(ji,jj) + r1_hv_n(ji,jj) * bfrva(ji,jj) * zwy(ji,jj) 
    568             END DO 
    569          END DO 
     496        zu_frc(:,:) = zu_frc(:,:) + r1_hu_n(:,:) * bfrua(:,:) * zwx(:,:) 
     497        zv_frc(:,:) = zv_frc(:,:) + r1_hv_n(:,:) * bfrva(:,:) * zwy(:,:) 
    570498      END IF 
    571499      ! 
    572500      !                                         ! Add top stress contribution from baroclinic velocities:       
    573501      IF( ln_bt_fw ) THEN 
    574 !$OMP PARALLEL DO schedule(static) private(jj,ji,iktu,iktv) 
    575502         DO jj = 2, jpjm1 
    576503            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    582509         END DO 
    583510      ELSE 
    584 !$OMP PARALLEL DO schedule(static) private(jj,ji,iktu,iktv) 
    585511         DO jj = 2, jpjm1 
    586512            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    594520      ! 
    595521      ! Note that the "unclipped" top friction parameter is used even with explicit drag 
    596 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    597       DO jj = 1, jpj 
    598          DO ji = 1, jpi 
    599             zu_frc(ji,jj) = zu_frc(ji,jj) + r1_hu_n(ji,jj) * tfrua(ji,jj) * zwx(ji,jj) 
    600             zv_frc(ji,jj) = zv_frc(ji,jj) + r1_hv_n(ji,jj) * tfrva(ji,jj) * zwy(ji,jj) 
    601          END DO 
    602       END DO 
     522      zu_frc(:,:) = zu_frc(:,:) + r1_hu_n(:,:) * tfrua(:,:) * zwx(:,:) 
     523      zv_frc(:,:) = zv_frc(:,:) + r1_hv_n(:,:) * tfrva(:,:) * zwy(:,:) 
    603524      !        
    604525      IF (ln_bt_fw) THEN                        ! Add wind forcing 
    605 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    606          DO jj = 1, jpj 
    607             DO ji = 1, jpi 
    608                zu_frc(ji,jj) =  zu_frc(ji,jj) + zraur * utau(ji,jj) * r1_hu_n(ji,jj) 
    609                zv_frc(ji,jj) =  zv_frc(ji,jj) + zraur * vtau(ji,jj) * r1_hv_n(ji,jj) 
    610             END DO 
    611          END DO 
     526         zu_frc(:,:) =  zu_frc(:,:) + zraur * utau(:,:) * r1_hu_n(:,:) 
     527         zv_frc(:,:) =  zv_frc(:,:) + zraur * vtau(:,:) * r1_hv_n(:,:) 
    612528      ELSE 
    613 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    614          DO jj = 1, jpj 
    615             DO ji = 1, jpi 
    616                zu_frc(ji,jj) =  zu_frc(ji,jj) + zraur * z1_2 * ( utau_b(ji,jj) + utau(ji,jj) ) * r1_hu_n(ji,jj) 
    617                zv_frc(ji,jj) =  zv_frc(ji,jj) + zraur * z1_2 * ( vtau_b(ji,jj) + vtau(ji,jj) ) * r1_hv_n(ji,jj) 
    618             END DO 
    619          END DO 
     529         zu_frc(:,:) =  zu_frc(:,:) + zraur * z1_2 * ( utau_b(:,:) + utau(:,:) ) * r1_hu_n(:,:) 
     530         zv_frc(:,:) =  zv_frc(:,:) + zraur * z1_2 * ( vtau_b(:,:) + vtau(:,:) ) * r1_hv_n(:,:) 
    620531      ENDIF   
    621532      ! 
    622533      IF ( ln_apr_dyn ) THEN                    ! Add atm pressure forcing 
    623534         IF (ln_bt_fw) THEN 
    624 !$OMP PARALLEL DO schedule(static) private(jj,ji,zu_spg,zv_spg) 
    625535            DO jj = 2, jpjm1               
    626536               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    632542            END DO 
    633543         ELSE 
    634 !$OMP PARALLEL DO schedule(static) private(jj,ji,zu_spg,zv_spg) 
    635544            DO jj = 2, jpjm1               
    636545               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    649558      !                                         ! Surface net water flux and rivers 
    650559      IF (ln_bt_fw) THEN 
    651 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    652          DO jj = 1, jpj 
    653             DO ji = 1, jpi 
    654                zssh_frc(ji,jj) = zraur * ( emp(ji,jj) - rnf(ji,jj) + fwfisf(ji,jj) ) 
    655             END DO 
    656          END DO 
     560         zssh_frc(:,:) = zraur * ( emp(:,:) - rnf(:,:) + fwfisf(:,:) ) 
    657561      ELSE 
    658 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    659          DO jj = 1, jpj 
    660             DO ji = 1, jpi 
    661                zssh_frc(ji,jj) = zraur * z1_2 * (  emp(ji,jj) + emp_b(ji,jj) - rnf(ji,jj) - rnf_b(ji,jj)   & 
    662                 &                        + fwfisf(ji,jj) + fwfisf_b(ji,jj) ) 
    663             END DO 
    664          END DO 
     562         zssh_frc(:,:) = zraur * z1_2 * (  emp(:,:) + emp_b(:,:) - rnf(:,:) - rnf_b(:,:)   & 
     563                &                        + fwfisf(:,:) + fwfisf_b(:,:)                     ) 
    665564      ENDIF 
    666565      ! 
    667566      IF( ln_sdw ) THEN                         ! Stokes drift divergence added if necessary 
    668 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    669          DO jj = 1, jpj 
    670             DO ji = 1, jpi 
    671                zssh_frc(ji,jj) = zssh_frc(ji,jj) + div_sd(ji,jj) 
    672             END DO 
    673          END DO 
     567         zssh_frc(:,:) = zssh_frc(:,:) + div_sd(:,:) 
    674568      ENDIF 
    675569      ! 
     
    677571      !                                         ! Include the IAU weighted SSH increment 
    678572      IF( lk_asminc .AND. ln_sshinc .AND. ln_asmiau ) THEN 
    679 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    680          DO jj = 1, jpj 
    681             DO ji = 1, jpi 
    682                zssh_frc(ji,jj) = zssh_frc(ji,jj) - ssh_iau(ji,jj) 
    683             END DO 
    684          END DO 
     573         zssh_frc(:,:) = zssh_frc(:,:) - ssh_iau(:,:) 
    685574      ENDIF 
    686575#endif 
     
    700589      ! Initialize barotropic variables:       
    701590      IF( ll_init )THEN 
    702 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    703          DO jj = 1, jpj 
    704             DO ji = 1, jpi 
    705                sshbb_e(ji,jj) = 0._wp 
    706                ubb_e  (ji,jj) = 0._wp 
    707                vbb_e  (ji,jj) = 0._wp 
    708                sshb_e (ji,jj) = 0._wp 
    709                ub_e   (ji,jj) = 0._wp 
    710                vb_e   (ji,jj) = 0._wp 
    711             END DO 
    712          END DO 
     591         sshbb_e(:,:) = 0._wp 
     592         ubb_e  (:,:) = 0._wp 
     593         vbb_e  (:,:) = 0._wp 
     594         sshb_e (:,:) = 0._wp 
     595         ub_e   (:,:) = 0._wp 
     596         vb_e   (:,:) = 0._wp 
    713597      ENDIF 
    714598 
    715599      ! 
    716600      IF (ln_bt_fw) THEN                  ! FORWARD integration: start from NOW fields                     
    717 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    718          DO jj = 1, jpj 
    719             DO ji = 1, jpi 
    720                sshn_e(ji,jj) =    sshn(ji,jj) 
    721                un_e  (ji,jj) =    un_b(ji,jj) 
    722                vn_e  (ji,jj) =    vn_b(ji,jj) 
    723                 ! 
    724                hu_e  (ji,jj) =    hu_n(ji,jj) 
    725                hv_e  (ji,jj) =    hv_n(ji,jj) 
    726                hur_e (ji,jj) = r1_hu_n(ji,jj) 
    727                hvr_e (ji,jj) = r1_hv_n(ji,jj) 
    728             END DO 
    729          END DO 
     601         sshn_e(:,:) =    sshn(:,:)             
     602         un_e  (:,:) =    un_b(:,:)             
     603         vn_e  (:,:) =    vn_b(:,:) 
     604         ! 
     605         hu_e  (:,:) =    hu_n(:,:)        
     606         hv_e  (:,:) =    hv_n(:,:)  
     607         hur_e (:,:) = r1_hu_n(:,:)     
     608         hvr_e (:,:) = r1_hv_n(:,:) 
    730609      ELSE                                ! CENTRED integration: start from BEFORE fields 
    731 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    732          DO jj = 1, jpj 
    733             DO ji = 1, jpi 
    734                sshn_e(ji,jj) =    sshb(ji,jj) 
    735                un_e  (ji,jj) =    ub_b(ji,jj) 
    736                vn_e  (ji,jj) =    vb_b(ji,jj) 
    737                  ! 
    738                hu_e  (ji,jj) =    hu_b(ji,jj) 
    739                hv_e  (ji,jj) =    hv_b(ji,jj) 
    740                hur_e (ji,jj) = r1_hu_b(ji,jj) 
    741                hvr_e (ji,jj) = r1_hv_b(ji,jj) 
    742             END DO 
    743          END DO 
     610         sshn_e(:,:) =    sshb(:,:) 
     611         un_e  (:,:) =    ub_b(:,:)          
     612         vn_e  (:,:) =    vb_b(:,:) 
     613         ! 
     614         hu_e  (:,:) =    hu_b(:,:)        
     615         hv_e  (:,:) =    hv_b(:,:)  
     616         hur_e (:,:) = r1_hu_b(:,:)     
     617         hvr_e (:,:) = r1_hv_b(:,:) 
    744618      ENDIF 
    745619      ! 
     
    747621      ! 
    748622      ! Initialize sums: 
    749 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    750       DO jj = 1, jpj 
    751          DO ji = 1, jpi 
    752             ua_b  (ji,jj) = 0._wp       ! After barotropic velocities (or transport if flux form)           
    753             va_b  (ji,jj) = 0._wp 
    754             ssha  (ji,jj) = 0._wp       ! Sum for after averaged sea level 
    755             un_adv(ji,jj) = 0._wp       ! Sum for now transport issued from ts loop 
    756             vn_adv(ji,jj) = 0._wp 
    757          END DO 
    758       END DO 
     623      ua_b  (:,:) = 0._wp       ! After barotropic velocities (or transport if flux form)           
     624      va_b  (:,:) = 0._wp 
     625      ssha  (:,:) = 0._wp       ! Sum for after averaged sea level 
     626      un_adv(:,:) = 0._wp       ! Sum for now transport issued from ts loop 
     627      vn_adv(:,:) = 0._wp 
    759628      !                                             ! ==================== ! 
    760629      DO jn = 1, icycle                             !  sub-time-step loop  ! 
     
    780649 
    781650         ! Extrapolate barotropic velocities at step jit+0.5: 
    782 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    783          DO jj = 1, jpj 
    784             DO ji = 1, jpi 
    785                ua_e(ji,jj) = za1 * un_e(ji,jj) + za2 * ub_e(ji,jj) + za3 * ubb_e(ji,jj) 
    786                va_e(ji,jj) = za1 * vn_e(ji,jj) + za2 * vb_e(ji,jj) + za3 * vbb_e(ji,jj) 
    787             END DO 
    788          END DO 
     651         ua_e(:,:) = za1 * un_e(:,:) + za2 * ub_e(:,:) + za3 * ubb_e(:,:) 
     652         va_e(:,:) = za1 * vn_e(:,:) + za2 * vb_e(:,:) + za3 * vbb_e(:,:) 
    789653 
    790654         IF( .NOT.ln_linssh ) THEN                        !* Update ocean depth (variable volume case only) 
    791655            !                                             !  ------------------ 
    792656            ! Extrapolate Sea Level at step jit+0.5: 
    793 !$OMP PARALLEL  
    794 !$OMP DO schedule(static) private(jj,ji) 
    795             DO jj = 1, jpj 
    796                DO ji = 1, jpi 
    797                   zsshp2_e(ji,jj) = za1 * sshn_e(ji,jj)  + za2 * sshb_e(ji,jj) + za3 * sshbb_e(ji,jj) 
    798                END DO 
    799             END DO 
     657            zsshp2_e(:,:) = za1 * sshn_e(:,:)  + za2 * sshb_e(:,:) + za3 * sshbb_e(:,:) 
    800658            ! 
    801 !$OMP DO schedule(static) private(jj,ji) 
    802659            DO jj = 2, jpjm1                                    ! Sea Surface Height at u- & v-points 
    803660               DO ji = 2, fs_jpim1   ! Vector opt. 
     
    810667               END DO 
    811668            END DO 
    812 !$OMP END PARALLEL 
    813669            CALL lbc_lnk_multi( zwx, 'U', 1._wp, zwy, 'V', 1._wp ) 
    814670            ! 
    815 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    816             DO jj = 1, jpj 
    817                DO ji = 1, jpi 
    818                   zhup2_e (ji,jj) = hu_0(ji,jj) + zwx(ji,jj)                ! Ocean depth at U- and V-points 
    819                   zhvp2_e (ji,jj) = hv_0(ji,jj) + zwy(ji,jj) 
    820                END DO 
    821             END DO 
     671            zhup2_e (:,:) = hu_0(:,:) + zwx(:,:)                ! Ocean depth at U- and V-points 
     672            zhvp2_e (:,:) = hv_0(:,:) + zwy(:,:) 
    822673         ELSE 
    823 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    824             DO jj = 1, jpj 
    825                DO ji = 1, jpi 
    826                   zhup2_e (ji,jj) = hu_n(ji,jj) 
    827                   zhvp2_e (ji,jj) = hv_n(ji,jj) 
    828                END DO 
    829             END DO 
     674            zhup2_e (:,:) = hu_n(:,:) 
     675            zhvp2_e (:,:) = hv_n(:,:) 
    830676         ENDIF 
    831677         !                                                !* after ssh 
     
    834680         ! considering fluxes below: 
    835681         ! 
    836 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    837          DO jj = 1, jpj 
    838             DO ji = 1, jpi 
    839                zwx(ji,jj) = e2u(ji,jj) * ua_e(ji,jj) * zhup2_e(ji,jj)         ! fluxes at jn+0.5 
    840                zwy(ji,jj) = e1v(ji,jj) * va_e(ji,jj) * zhvp2_e(ji,jj) 
    841             END DO 
    842          END DO 
    843  
     682         zwx(:,:) = e2u(:,:) * ua_e(:,:) * zhup2_e(:,:)         ! fluxes at jn+0.5 
     683         zwy(:,:) = e1v(:,:) * va_e(:,:) * zhvp2_e(:,:) 
    844684         ! 
    845685#if defined key_agrif 
     
    872712         ! Sum over sub-time-steps to compute advective velocities 
    873713         za2 = wgtbtp2(jn) 
    874 !$OMP PARALLEL 
    875 !$OMP DO schedule(static) private(jj,ji) 
    876          DO jj = 1, jpj 
    877             DO ji = 1, jpi 
    878                un_adv(ji,jj) = un_adv(ji,jj) + za2 * zwx(ji,jj) * r1_e2u(ji,jj) 
    879                vn_adv(ji,jj) = vn_adv(ji,jj) + za2 * zwy(ji,jj) * r1_e1v(ji,jj) 
    880             END DO 
    881          END DO 
    882 !$OMP END DO NOWAIT 
     714         un_adv(:,:) = un_adv(:,:) + za2 * zwx(:,:) * r1_e2u(:,:) 
     715         vn_adv(:,:) = vn_adv(:,:) + za2 * zwy(:,:) * r1_e1v(:,:) 
    883716         ! 
    884717         ! Set next sea level: 
    885 !$OMP DO schedule(static) private(jj,ji) 
    886718         DO jj = 2, jpjm1                                  
    887719            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    890722            END DO 
    891723         END DO 
    892 !$OMP DO schedule(static) private(jj,ji) 
    893          DO jj = 1, jpj 
    894             DO ji = 1, jpi 
    895                ssha_e(ji,jj) = (  sshn_e(ji,jj) - rdtbt * ( zssh_frc(ji,jj) + zhdiv(ji,jj) )  ) * ssmask(ji,jj) 
    896             END DO 
    897          END DO 
    898 !$OMP END PARALLEL 
     724         ssha_e(:,:) = (  sshn_e(:,:) - rdtbt * ( zssh_frc(:,:) + zhdiv(:,:) )  ) * ssmask(:,:) 
     725          
    899726         CALL lbc_lnk( ssha_e, 'T',  1._wp ) 
    900727 
     
    907734         ! Sea Surface Height at u-,v-points (vvl case only) 
    908735         IF( .NOT.ln_linssh ) THEN                                 
    909 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    910736            DO jj = 2, jpjm1 
    911737               DO ji = 2, jpim1      ! NO Vector Opt. 
     
    940766         ENDIF 
    941767         ! 
    942 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    943          DO jj = 1, jpj 
    944             DO ji = 1, jpi 
    945                zsshp2_e(ji,jj) = za0 *  ssha_e(ji,jj) + za1 *  sshn_e (ji,jj) & 
    946                 &              + za2 *  sshb_e(ji,jj) + za3 *  sshbb_e(ji,jj) 
    947             END DO 
    948          END DO 
     768         zsshp2_e(:,:) = za0 *  ssha_e(:,:) + za1 *  sshn_e (:,:) & 
     769          &            + za2 *  sshb_e(:,:) + za3 *  sshbb_e(:,:) 
    949770         IF( ln_wd ) THEN                   ! Calculating and applying W/D gravity filters 
    950 !$OMP PARALLEL DO schedule(static) private(jj,ji,ll_tmp1,ll_tmp2) 
    951771           DO jj = 2, jpjm1 
    952772              DO ji = 2, jpim1  
     
    993813         IF( .NOT.ln_linssh  .AND. .NOT.ln_dynadv_vec ) THEN   !* Vector form 
    994814            !                                         
    995 !$OMP PARALLEL DO schedule(static) private(jj,ji,zx1,zy1) 
    996815            DO jj = 2, jpjm1                             
    997816               DO ji = 2, jpim1 
     
    1007826            END DO 
    1008827 
    1009             IF( ln_wd ) THEN 
    1010 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    1011                DO jj = 1, jpj 
    1012                   DO ji = 1, jpi   ! vector opt. 
    1013                      zhust_e(ji,jj) = MAX(zhust_e (ji,jj), rn_wdmin1 ) 
    1014                      zhvst_e(ji,jj) = MAX(zhvst_e (ji,jj), rn_wdmin1 ) 
    1015                   END DO 
    1016                END DO 
    1017             END IF 
    1018828         ENDIF 
    1019829         ! 
     
    1026836         ! 
    1027837         IF( ln_dynvor_ene .OR. ln_dynvor_mix ) THEN     !==  energy conserving or mixed scheme  ==! 
    1028 !$OMP PARALLEL DO schedule(static) private(jj,ji,zy1,zy2,zx1,zx2) 
    1029838            DO jj = 2, jpjm1 
    1030839               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    1039848            ! 
    1040849         ELSEIF ( ln_dynvor_ens ) THEN                   !==  enstrophy conserving scheme  ==! 
    1041 !$OMP PARALLEL DO schedule(static) private(jj,ji,zx1,zy1) 
    1042850            DO jj = 2, jpjm1 
    1043851               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    1052860            ! 
    1053861         ELSEIF ( ln_dynvor_een ) THEN                   !==  energy and enstrophy conserving scheme  ==! 
    1054 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    1055862            DO jj = 2, jpjm1 
    1056863               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    1070877         ! Add tidal astronomical forcing if defined 
    1071878         IF ( ln_tide .AND. ln_tide_pot ) THEN 
    1072 !$OMP PARALLEL DO schedule(static) private(jj,ji,zu_spg,zv_spg) 
    1073879            DO jj = 2, jpjm1 
    1074880               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    1082888         ! 
    1083889         ! Add bottom stresses: 
    1084 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    1085          DO jj = 1, jpj 
    1086             DO ji = 1, jpi 
    1087                zu_trd(ji,jj) = zu_trd(ji,jj) + bfrua(ji,jj) * un_e(ji,jj) * hur_e(ji,jj) 
    1088                zv_trd(ji,jj) = zv_trd(ji,jj) + bfrva(ji,jj) * vn_e(ji,jj) * hvr_e(ji,jj) 
    1089                ! 
    1090                ! Add top stresses: 
    1091                zu_trd(ji,jj) = zu_trd(ji,jj) + tfrua(ji,jj) * un_e(ji,jj) * hur_e(ji,jj) 
    1092                zv_trd(ji,jj) = zv_trd(ji,jj) + tfrva(ji,jj) * vn_e(ji,jj) * hvr_e(ji,jj) 
    1093             END DO 
    1094          END DO 
    1095  
     890         zu_trd(:,:) = zu_trd(:,:) + bfrua(:,:) * un_e(:,:) * hur_e(:,:) 
     891         zv_trd(:,:) = zv_trd(:,:) + bfrva(:,:) * vn_e(:,:) * hvr_e(:,:) 
     892         ! 
     893         ! Add top stresses: 
     894         zu_trd(:,:) = zu_trd(:,:) + tfrua(:,:) * un_e(:,:) * hur_e(:,:) 
     895         zv_trd(:,:) = zv_trd(:,:) + tfrva(:,:) * vn_e(:,:) * hvr_e(:,:) 
    1096896         ! 
    1097897         ! Surface pressure trend: 
    1098898 
    1099899         IF( ln_wd ) THEN 
    1100 !$OMP PARALLEL DO schedule(static) private(jj,ji,zu_spg,zv_spg) 
    1101900           DO jj = 2, jpjm1 
    1102901              DO ji = 2, jpim1  
     
    1109908           END DO 
    1110909         ELSE 
    1111 !$OMP PARALLEL DO schedule(static) private(jj,ji,zu_spg,zv_spg) 
    1112910           DO jj = 2, jpjm1 
    1113911              DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    1124922         ! Set next velocities: 
    1125923         IF( ln_dynadv_vec .OR. ln_linssh ) THEN   !* Vector form 
    1126 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    1127924            DO jj = 2, jpjm1 
    1128925               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    1142939            ! 
    1143940         ELSE                                      !* Flux form 
    1144 !$OMP PARALLEL DO schedule(static) private(jj,ji,zhura,zhvra) 
    1145941            DO jj = 2, jpjm1 
    1146942               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    1173969         IF( .NOT.ln_linssh ) THEN                     !* Update ocean depth (variable volume case only) 
    1174970            IF( ln_wd ) THEN 
    1175 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    1176                DO jj = 1, jpj 
    1177                   DO ji = 1, jpi   ! vector opt. 
    1178                      hu_e (ji,jj) = MAX(hu_0(ji,jj) + zsshu_a(ji,jj), rn_wdmin1) 
    1179                      hv_e (ji,jj) = MAX(hv_0(ji,jj) + zsshv_a(ji,jj), rn_wdmin1) 
    1180                   END DO 
    1181                END DO 
     971              hu_e (:,:) = MAX(hu_0(:,:) + zsshu_a(:,:), rn_wdmin1) 
     972              hv_e (:,:) = MAX(hv_0(:,:) + zsshv_a(:,:), rn_wdmin1) 
    1182973            ELSE 
    1183 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    1184                DO jj = 1, jpj 
    1185                   DO ji = 1, jpi 
    1186                      hu_e (ji,jj) = hu_0(ji,jj) + zsshu_a(ji,jj) 
    1187                      hv_e (ji,jj) = hv_0(ji,jj) + zsshv_a(ji,jj) 
    1188                   END DO 
    1189                END DO 
     974              hu_e (:,:) = hu_0(:,:) + zsshu_a(:,:) 
     975              hv_e (:,:) = hv_0(:,:) + zsshv_a(:,:) 
    1190976            END IF 
    1191 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    1192             DO jj = 1, jpj 
    1193                DO ji = 1, jpi 
    1194                   hur_e(ji,jj) = ssumask(ji,jj) / ( hu_e(ji,jj) + 1._wp - ssumask(ji,jj) ) 
    1195                   hvr_e(ji,jj) = ssvmask(ji,jj) / ( hv_e(ji,jj) + 1._wp - ssvmask(ji,jj) ) 
    1196                END DO 
    1197             END DO 
     977            hur_e(:,:) = ssumask(:,:) / ( hu_e(:,:) + 1._wp - ssumask(:,:) ) 
     978            hvr_e(:,:) = ssvmask(:,:) / ( hv_e(:,:) + 1._wp - ssvmask(:,:) ) 
    1198979            ! 
    1199980         ENDIF 
     
    1208989         !                                             !* Swap 
    1209990         !                                             !  ---- 
    1210 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    1211          DO jj = 1, jpj 
    1212             DO ji = 1, jpi 
    1213                ubb_e  (ji,jj) = ub_e  (ji,jj) 
    1214                ub_e   (ji,jj) = un_e  (ji,jj) 
    1215                un_e   (ji,jj) = ua_e  (ji,jj) 
    1216                ! 
    1217                vbb_e  (ji,jj) = vb_e  (ji,jj) 
    1218                vb_e   (ji,jj) = vn_e  (ji,jj) 
    1219                vn_e   (ji,jj) = va_e  (ji,jj) 
    1220                ! 
    1221                sshbb_e(ji,jj) = sshb_e(ji,jj) 
    1222                sshb_e (ji,jj) = sshn_e(ji,jj) 
    1223                sshn_e (ji,jj) = ssha_e(ji,jj) 
    1224             END DO 
    1225          END DO 
     991         ubb_e  (:,:) = ub_e  (:,:) 
     992         ub_e   (:,:) = un_e  (:,:) 
     993         un_e   (:,:) = ua_e  (:,:) 
     994         ! 
     995         vbb_e  (:,:) = vb_e  (:,:) 
     996         vb_e   (:,:) = vn_e  (:,:) 
     997         vn_e   (:,:) = va_e  (:,:) 
     998         ! 
     999         sshbb_e(:,:) = sshb_e(:,:) 
     1000         sshb_e (:,:) = sshn_e(:,:) 
     1001         sshn_e (:,:) = ssha_e(:,:) 
    12261002 
    12271003         !                                             !* Sum over whole bt loop 
     
    12291005         za1 = wgtbtp1(jn)                                     
    12301006         IF( ln_dynadv_vec .OR. ln_linssh ) THEN    ! Sum velocities 
    1231 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    1232             DO jj = 1, jpj 
    1233                DO ji = 1, jpi 
    1234                   ua_b  (ji,jj) = ua_b  (ji,jj) + za1 * ua_e  (ji,jj) 
    1235                   va_b  (ji,jj) = va_b  (ji,jj) + za1 * va_e  (ji,jj) 
    1236                END DO 
    1237             END DO 
     1007            ua_b  (:,:) = ua_b  (:,:) + za1 * ua_e  (:,:)  
     1008            va_b  (:,:) = va_b  (:,:) + za1 * va_e  (:,:)  
    12381009         ELSE                                              ! Sum transports 
    1239 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    1240             DO jj = 1, jpj 
    1241                DO ji = 1, jpi 
    1242                   ua_b  (ji,jj) = ua_b  (ji,jj) + za1 * ua_e  (ji,jj) * hu_e (ji,jj) 
    1243                   va_b  (ji,jj) = va_b  (ji,jj) + za1 * va_e  (ji,jj) * hv_e (ji,jj) 
    1244                END DO 
    1245             END DO 
     1010            ua_b  (:,:) = ua_b  (:,:) + za1 * ua_e  (:,:) * hu_e (:,:) 
     1011            va_b  (:,:) = va_b  (:,:) + za1 * va_e  (:,:) * hv_e (:,:) 
    12461012         ENDIF 
    12471013         !                                   ! Sum sea level 
    1248 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    1249          DO jj = 1, jpj 
    1250             DO ji = 1, jpi 
    1251                ssha(ji,jj) = ssha(ji,jj) + za1 * ssha_e(ji,jj) 
    1252             END DO 
    1253          END DO 
     1014         ssha(:,:) = ssha(:,:) + za1 * ssha_e(:,:) 
    12541015         !                                                 ! ==================== ! 
    12551016      END DO                                               !        end loop      ! 
     
    12601021      ! 
    12611022      ! Set advection velocity correction: 
    1262 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    1263       DO jj = 1, jpj 
    1264          DO ji = 1, jpi 
    1265             zwx(ji,jj) = un_adv(ji,jj) 
    1266             zwy(ji,jj) = vn_adv(ji,jj) 
    1267          END DO 
    1268       END DO 
     1023      zwx(:,:) = un_adv(:,:) 
     1024      zwy(:,:) = vn_adv(:,:) 
    12691025      IF( ( kt == nit000 .AND. neuler==0 ) .OR. .NOT.ln_bt_fw ) THEN      
    1270 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    1271          DO jj = 1, jpj 
    1272             DO ji = 1, jpi 
    1273                un_adv(ji,jj) = zwx(ji,jj) * r1_hu_n(ji,jj) 
    1274                vn_adv(ji,jj) = zwy(ji,jj) * r1_hv_n(ji,jj) 
    1275             END DO 
    1276          END DO 
     1026         un_adv(:,:) = zwx(:,:) * r1_hu_n(:,:) 
     1027         vn_adv(:,:) = zwy(:,:) * r1_hv_n(:,:) 
    12771028      ELSE 
    1278 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    1279          DO jj = 1, jpj 
    1280             DO ji = 1, jpi 
    1281                un_adv(ji,jj) = z1_2 * ( ub2_b(ji,jj) + zwx(ji,jj) ) * r1_hu_n(ji,jj) 
    1282                vn_adv(ji,jj) = z1_2 * ( vb2_b(ji,jj) + zwy(ji,jj) ) * r1_hv_n(ji,jj) 
    1283             END DO 
    1284          END DO 
     1029         un_adv(:,:) = z1_2 * ( ub2_b(:,:) + zwx(:,:) ) * r1_hu_n(:,:) 
     1030         vn_adv(:,:) = z1_2 * ( vb2_b(:,:) + zwy(:,:) ) * r1_hv_n(:,:) 
    12851031      END IF 
    12861032 
    12871033      IF( ln_bt_fw ) THEN ! Save integrated transport for next computation 
    1288 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    1289          DO jj = 1, jpj 
    1290             DO ji = 1, jpi 
    1291                ub2_b(ji,jj) = zwx(ji,jj) 
    1292                vb2_b(ji,jj) = zwy(ji,jj) 
    1293             END DO 
    1294          END DO 
     1034         ub2_b(:,:) = zwx(:,:) 
     1035         vb2_b(:,:) = zwy(:,:) 
    12951036      ENDIF 
    12961037      ! 
    12971038      ! Update barotropic trend: 
    12981039      IF( ln_dynadv_vec .OR. ln_linssh ) THEN 
    1299 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    13001040         DO jk=1,jpkm1 
    1301             DO jj = 1, jpj 
    1302                DO ji = 1, jpi 
    1303                   ua(ji,jj,jk) = ua(ji,jj,jk) + ( ua_b(ji,jj) - ub_b(ji,jj) ) * z1_2dt_b 
    1304                   va(ji,jj,jk) = va(ji,jj,jk) + ( va_b(ji,jj) - vb_b(ji,jj) ) * z1_2dt_b 
    1305                END DO 
    1306             END DO 
     1041            ua(:,:,jk) = ua(:,:,jk) + ( ua_b(:,:) - ub_b(:,:) ) * z1_2dt_b 
     1042            va(:,:,jk) = va(:,:,jk) + ( va_b(:,:) - vb_b(:,:) ) * z1_2dt_b 
    13071043         END DO 
    13081044      ELSE 
    13091045         ! At this stage, ssha has been corrected: compute new depths at velocity points 
    1310 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    13111046         DO jj = 1, jpjm1 
    13121047            DO ji = 1, jpim1      ! NO Vector Opt. 
     
    13211056         CALL lbc_lnk_multi( zsshu_a, 'U', 1._wp, zsshv_a, 'V', 1._wp ) ! Boundary conditions 
    13221057         ! 
    1323 !$OMP PARALLEL 
    1324 !$OMP DO schedule(static) private(jk,jj,ji) 
    13251058         DO jk=1,jpkm1 
    1326             DO jj = 1, jpj 
    1327                DO ji = 1, jpi 
    1328                   ua(ji,jj,jk) = ua(ji,jj,jk) + r1_hu_n(ji,jj) * ( ua_b(ji,jj) - ub_b(ji,jj) * hu_b(ji,jj) ) * z1_2dt_b 
    1329                   va(ji,jj,jk) = va(ji,jj,jk) + r1_hv_n(ji,jj) * ( va_b(ji,jj) - vb_b(ji,jj) * hv_b(ji,jj) ) * z1_2dt_b 
    1330                END DO 
    1331             END DO 
     1059            ua(:,:,jk) = ua(:,:,jk) + r1_hu_n(:,:) * ( ua_b(:,:) - ub_b(:,:) * hu_b(:,:) ) * z1_2dt_b 
     1060            va(:,:,jk) = va(:,:,jk) + r1_hv_n(:,:) * ( va_b(:,:) - vb_b(:,:) * hv_b(:,:) ) * z1_2dt_b 
    13321061         END DO 
    1333 !$OMP END DO NOWAIT 
    13341062         ! Save barotropic velocities not transport: 
    1335 !$OMP DO schedule(static) private(jj,ji) 
    1336          DO jj = 1, jpj 
    1337             DO ji = 1, jpi 
    1338                ua_b(ji,jj) =  ua_b(ji,jj) / ( hu_0(ji,jj) + zsshu_a(ji,jj) + 1._wp - ssumask(ji,jj) ) 
    1339                va_b(ji,jj) =  va_b(ji,jj) / ( hv_0(ji,jj) + zsshv_a(ji,jj) + 1._wp - ssvmask(ji,jj) ) 
    1340             END DO 
    1341          END DO 
    1342 !$OMP END PARALLEL 
    1343       ENDIF 
    1344       ! 
    1345 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
     1063         ua_b(:,:) =  ua_b(:,:) / ( hu_0(:,:) + zsshu_a(:,:) + 1._wp - ssumask(:,:) ) 
     1064         va_b(:,:) =  va_b(:,:) / ( hv_0(:,:) + zsshv_a(:,:) + 1._wp - ssvmask(:,:) ) 
     1065      ENDIF 
     1066      ! 
    13461067      DO jk = 1, jpkm1 
    1347          DO jj = 1, jpj 
    1348             DO ji = 1, jpi 
    1349                ! Correct velocities: 
    1350                un(ji,jj,jk) = ( un(ji,jj,jk) + un_adv(ji,jj) - un_b(ji,jj) ) * umask(ji,jj,jk) 
    1351                vn(ji,jj,jk) = ( vn(ji,jj,jk) + vn_adv(ji,jj) - vn_b(ji,jj) ) * vmask(ji,jj,jk) 
    1352                ! 
    1353             END DO 
    1354          END DO 
     1068         ! Correct velocities: 
     1069         un(:,:,jk) = ( un(:,:,jk) + un_adv(:,:) - un_b(:,:) ) * umask(:,:,jk) 
     1070         vn(:,:,jk) = ( vn(:,:,jk) + vn_adv(:,:) - vn_b(:,:) ) * vmask(:,:,jk) 
     1071         ! 
    13551072      END DO 
    13561073      ! 
     
    13641081      IF( .NOT.Agrif_Root() .AND. ln_bt_fw ) THEN 
    13651082         IF( Agrif_NbStepint() == 0 ) THEN 
    1366 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    1367             DO jj = 1, jpj 
    1368                DO ji = 1, jpi 
    1369                   ub2_i_b(ji,jj) = 0._wp 
    1370                   vb2_i_b(ji,jj) = 0._wp 
    1371                END DO 
    1372             END DO 
     1083            ub2_i_b(:,:) = 0._wp 
     1084            vb2_i_b(:,:) = 0._wp 
    13731085         END IF 
    13741086         ! 
    13751087         za1 = 1._wp / REAL(Agrif_rhot(), wp) 
    1376 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    1377          DO jj = 1, jpj 
    1378             DO ji = 1, jpi 
    1379                ub2_i_b(ji,jj) = ub2_i_b(ji,jj) + za1 * ub2_b(ji,jj) 
    1380                vb2_i_b(ji,jj) = vb2_i_b(ji,jj) + za1 * vb2_b(ji,jj) 
    1381             END DO 
    1382          END DO 
     1088         ub2_i_b(:,:) = ub2_i_b(:,:) + za1 * ub2_b(:,:) 
     1089         vb2_i_b(:,:) = vb2_i_b(:,:) + za1 * vb2_b(:,:) 
    13831090      ENDIF 
    13841091#endif       
  • trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynvor.F90

    r7698 r7753  
    9797      !!---------------------------------------------------------------------- 
    9898      INTEGER, INTENT( in ) ::   kt   ! ocean time-step index 
    99       INTEGER ::   jk, jj, ji 
    10099      ! 
    101100      REAL(wp), POINTER, DIMENSION(:,:,:) ::  ztrdu, ztrdv 
     
    110109      CASE ( np_ENE )                                 !* energy conserving scheme 
    111110         IF( l_trddyn ) THEN                                ! trend diagnostics: split the trend in two 
    112 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    113             DO jk = 1, jpk 
    114                DO jj = 1, jpj 
    115                   DO ji = 1, jpi 
    116                      ztrdu(ji,jj,jk) = ua(ji,jj,jk) 
    117                      ztrdv(ji,jj,jk) = va(ji,jj,jk) 
    118                   END DO 
    119                END DO 
    120             END DO 
     111            ztrdu(:,:,:) = ua(:,:,:) 
     112            ztrdv(:,:,:) = va(:,:,:) 
    121113            CALL vor_ene( kt, nrvm, un , vn , ua, va )                    ! relative vorticity or metric trend 
    122 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    123             DO jk = 1, jpk 
    124                DO jj = 1, jpj 
    125                   DO ji = 1, jpi 
    126                      ztrdu(ji,jj,jk) = ua(ji,jj,jk) - ztrdu(ji,jj,jk) 
    127                      ztrdv(ji,jj,jk) = va(ji,jj,jk) - ztrdv(ji,jj,jk) 
    128                   END DO 
    129                END DO 
    130             END DO 
     114            ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 
     115            ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 
    131116            CALL trd_dyn( ztrdu, ztrdv, jpdyn_rvo, kt ) 
    132 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    133             DO jk = 1, jpk 
    134                DO jj = 1, jpj 
    135                   DO ji = 1, jpi 
    136                      ztrdu(ji,jj,jk) = ua(ji,jj,jk) 
    137                      ztrdv(ji,jj,jk) = va(ji,jj,jk) 
    138                   END DO 
    139                END DO 
    140             END DO 
     117            ztrdu(:,:,:) = ua(:,:,:) 
     118            ztrdv(:,:,:) = va(:,:,:) 
    141119            CALL vor_ene( kt, ncor, un , vn , ua, va )                    ! planetary vorticity trend 
    142 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    143             DO jk = 1, jpk 
    144                DO jj = 1, jpj 
    145                   DO ji = 1, jpi 
    146                      ztrdu(ji,jj,jk) = ua(ji,jj,jk) - ztrdu(ji,jj,jk) 
    147                      ztrdv(ji,jj,jk) = va(ji,jj,jk) - ztrdv(ji,jj,jk) 
    148                   END DO 
    149                END DO 
    150             END DO 
     120            ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 
     121            ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 
    151122            CALL trd_dyn( ztrdu, ztrdv, jpdyn_pvo, kt ) 
    152123         ELSE                                               ! total vorticity trend 
     
    157128      CASE ( np_ENS )                                 !* enstrophy conserving scheme 
    158129         IF( l_trddyn ) THEN                                ! trend diagnostics: splitthe trend in two     
    159 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    160             DO jk = 1, jpk 
    161                DO jj = 1, jpj 
    162                   DO ji = 1, jpi 
    163                      ztrdu(ji,jj,jk) = ua(ji,jj,jk) 
    164                      ztrdv(ji,jj,jk) = va(ji,jj,jk) 
    165                   END DO 
    166                END DO 
    167             END DO 
     130            ztrdu(:,:,:) = ua(:,:,:) 
     131            ztrdv(:,:,:) = va(:,:,:) 
    168132            CALL vor_ens( kt, nrvm, un , vn , ua, va )            ! relative vorticity or metric trend 
    169 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    170             DO jk = 1, jpk 
    171                DO jj = 1, jpj 
    172                   DO ji = 1, jpi 
    173                      ztrdu(ji,jj,jk) = ua(ji,jj,jk) - ztrdu(ji,jj,jk) 
    174                      ztrdv(ji,jj,jk) = va(ji,jj,jk) - ztrdv(ji,jj,jk) 
    175                   END DO 
    176                END DO 
    177             END DO 
     133            ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 
     134            ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 
    178135            CALL trd_dyn( ztrdu, ztrdv, jpdyn_rvo, kt ) 
    179 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    180             DO jk = 1, jpk 
    181                DO jj = 1, jpj 
    182                   DO ji = 1, jpi 
    183                      ztrdu(ji,jj,jk) = ua(ji,jj,jk) 
    184                      ztrdv(ji,jj,jk) = va(ji,jj,jk) 
    185                   END DO 
    186                END DO 
    187             END DO 
     136            ztrdu(:,:,:) = ua(:,:,:) 
     137            ztrdv(:,:,:) = va(:,:,:) 
    188138            CALL vor_ens( kt, ncor, un , vn , ua, va )            ! planetary vorticity trend 
    189 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    190             DO jk = 1, jpk 
    191                DO jj = 1, jpj 
    192                   DO ji = 1, jpi 
    193                      ztrdu(ji,jj,jk) = ua(ji,jj,jk) - ztrdu(ji,jj,jk) 
    194                      ztrdv(ji,jj,jk) = va(ji,jj,jk) - ztrdv(ji,jj,jk) 
    195                   END DO 
    196                END DO 
    197             END DO 
     139            ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 
     140            ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 
    198141            CALL trd_dyn( ztrdu, ztrdv, jpdyn_pvo, kt ) 
    199142         ELSE                                               ! total vorticity trend 
     
    204147      CASE ( np_MIX )                                 !* mixed ene-ens scheme 
    205148         IF( l_trddyn ) THEN                                ! trend diagnostics: split the trend in two 
    206 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    207             DO jk = 1, jpk 
    208                DO jj = 1, jpj 
    209                   DO ji = 1, jpi 
    210                      ztrdu(ji,jj,jk) = ua(ji,jj,jk) 
    211                      ztrdv(ji,jj,jk) = va(ji,jj,jk) 
    212                   END DO 
    213                END DO 
    214             END DO 
     149            ztrdu(:,:,:) = ua(:,:,:) 
     150            ztrdv(:,:,:) = va(:,:,:) 
    215151            CALL vor_ens( kt, nrvm, un , vn , ua, va )            ! relative vorticity or metric trend (ens) 
    216 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    217             DO jk = 1, jpk 
    218                DO jj = 1, jpj 
    219                   DO ji = 1, jpi 
    220                      ztrdu(ji,jj,jk) = ua(ji,jj,jk) - ztrdu(ji,jj,jk) 
    221                      ztrdv(ji,jj,jk) = va(ji,jj,jk) - ztrdv(ji,jj,jk) 
    222                   END DO 
    223                END DO 
    224             END DO 
     152            ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 
     153            ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 
    225154            CALL trd_dyn( ztrdu, ztrdv, jpdyn_rvo, kt ) 
    226 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    227             DO jk = 1, jpk 
    228                DO jj = 1, jpj 
    229                   DO ji = 1, jpi 
    230                      ztrdu(ji,jj,jk) = ua(ji,jj,jk) 
    231                      ztrdv(ji,jj,jk) = va(ji,jj,jk) 
    232                   END DO 
    233                END DO 
    234             END DO 
     155            ztrdu(:,:,:) = ua(:,:,:) 
     156            ztrdv(:,:,:) = va(:,:,:) 
    235157            CALL vor_ene( kt, ncor, un , vn , ua, va )            ! planetary vorticity trend (ene) 
    236 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    237             DO jk = 1, jpk 
    238                DO jj = 1, jpj 
    239                   DO ji = 1, jpi 
    240                      ztrdu(ji,jj,jk) = ua(ji,jj,jk) - ztrdu(ji,jj,jk) 
    241                      ztrdv(ji,jj,jk) = va(ji,jj,jk) - ztrdv(ji,jj,jk) 
    242                   END DO 
    243                END DO 
    244             END DO 
     158            ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 
     159            ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 
    245160            CALL trd_dyn( ztrdu, ztrdv, jpdyn_pvo, kt ) 
    246161         ELSE                                               ! total vorticity trend 
     
    252167      CASE ( np_EEN )                                 !* energy and enstrophy conserving scheme 
    253168         IF( l_trddyn ) THEN                                ! trend diagnostics: split the trend in two 
    254 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    255             DO jk = 1, jpk 
    256                DO jj = 1, jpj 
    257                   DO ji = 1, jpi 
    258                      ztrdu(ji,jj,jk) = ua(ji,jj,jk) 
    259                      ztrdv(ji,jj,jk) = va(ji,jj,jk) 
    260                   END DO 
    261                END DO 
    262             END DO 
     169            ztrdu(:,:,:) = ua(:,:,:) 
     170            ztrdv(:,:,:) = va(:,:,:) 
    263171            CALL vor_een( kt, nrvm, un , vn , ua, va )            ! relative vorticity or metric trend 
    264 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    265             DO jk = 1, jpk 
    266                DO jj = 1, jpj 
    267                   DO ji = 1, jpi 
    268                      ztrdu(ji,jj,jk) = ua(ji,jj,jk) - ztrdu(ji,jj,jk) 
    269                      ztrdv(ji,jj,jk) = va(ji,jj,jk) - ztrdv(ji,jj,jk) 
    270                   END DO 
    271                END DO 
    272             END DO 
     172            ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 
     173            ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 
    273174            CALL trd_dyn( ztrdu, ztrdv, jpdyn_rvo, kt ) 
    274 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    275             DO jk = 1, jpk 
    276                DO jj = 1, jpj 
    277                   DO ji = 1, jpi 
    278                      ztrdu(ji,jj,jk) = ua(ji,jj,jk) 
    279                      ztrdv(ji,jj,jk) = va(ji,jj,jk) 
    280                   END DO 
    281                END DO 
    282             END DO 
     175            ztrdu(:,:,:) = ua(:,:,:) 
     176            ztrdv(:,:,:) = va(:,:,:) 
    283177            CALL vor_een( kt, ncor, un , vn , ua, va )            ! planetary vorticity trend 
    284 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    285             DO jk = 1, jpk 
    286                DO jj = 1, jpj 
    287                   DO ji = 1, jpi 
    288                      ztrdu(ji,jj,jk) = ua(ji,jj,jk) - ztrdu(ji,jj,jk) 
    289                      ztrdv(ji,jj,jk) = va(ji,jj,jk) - ztrdv(ji,jj,jk) 
    290                   END DO 
    291                END DO 
    292             END DO 
     178            ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 
     179            ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 
    293180            CALL trd_dyn( ztrdu, ztrdv, jpdyn_pvo, kt ) 
    294181         ELSE                                               ! total vorticity trend 
     
    357244         SELECT CASE( kvor )                 !==  vorticity considered  ==! 
    358245         CASE ( np_COR )                           !* Coriolis (planetary vorticity) 
    359 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    360             DO jj = 1, jpj 
    361                DO ji = 1, jpi 
    362                   zwz(ji,jj) = ff_f(ji,jj) 
    363                END DO 
    364             END DO  
     246            zwz(:,:) = ff_f(:,:)  
    365247         CASE ( np_RVO )                           !* relative vorticity 
    366 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    367248            DO jj = 1, jpjm1 
    368249               DO ji = 1, fs_jpim1   ! vector opt. 
     
    372253            END DO 
    373254         CASE ( np_MET )                           !* metric term 
    374 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    375255            DO jj = 1, jpjm1 
    376256               DO ji = 1, fs_jpim1   ! vector opt. 
     
    381261            END DO 
    382262         CASE ( np_CRV )                           !* Coriolis + relative vorticity 
    383 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    384263            DO jj = 1, jpjm1 
    385264               DO ji = 1, fs_jpim1   ! vector opt. 
     
    390269            END DO 
    391270         CASE ( np_CME )                           !* Coriolis + metric 
    392 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    393271            DO jj = 1, jpjm1 
    394272               DO ji = 1, fs_jpim1   ! vector opt. 
     
    404282         ! 
    405283         IF( ln_dynvor_msk ) THEN          !==  mask/unmask vorticity ==! 
    406 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    407284            DO jj = 1, jpjm1 
    408285               DO ji = 1, fs_jpim1   ! vector opt. 
     
    413290 
    414291         IF( ln_sco ) THEN 
    415 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    416             DO jj = 1, jpj 
    417                DO ji = 1, jpi 
    418                   zwz(ji,jj) = zwz(ji,jj) / e3f_n(ji,jj,jk) 
    419                   zwx(ji,jj) = e2u(ji,jj) * e3u_n(ji,jj,jk) * pun(ji,jj,jk) 
    420                   zwy(ji,jj) = e1v(ji,jj) * e3v_n(ji,jj,jk) * pvn(ji,jj,jk) 
    421                END DO 
    422             END DO 
     292            zwz(:,:) = zwz(:,:) / e3f_n(:,:,jk) 
     293            zwx(:,:) = e2u(:,:) * e3u_n(:,:,jk) * pun(:,:,jk) 
     294            zwy(:,:) = e1v(:,:) * e3v_n(:,:,jk) * pvn(:,:,jk) 
    423295         ELSE 
    424 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    425             DO jj = 1, jpj 
    426                DO ji = 1, jpi 
    427                   zwx(ji,jj) = e2u(ji,jj) * pun(ji,jj,jk) 
    428                   zwy(ji,jj) = e1v(ji,jj) * pvn(ji,jj,jk) 
    429                END DO 
    430             END DO 
     296            zwx(:,:) = e2u(:,:) * pun(:,:,jk) 
     297            zwy(:,:) = e1v(:,:) * pvn(:,:,jk) 
    431298         ENDIF 
    432299         !                                   !==  compute and add the vorticity term trend  =! 
    433 !$OMP PARALLEL DO schedule(static) private(jj, ji, zy1, zy2, zx1, zx2) 
    434300         DO jj = 2, jpjm1 
    435301            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    621487         SELECT CASE( nn_een_e3f )           ! == reciprocal of e3 at F-point 
    622488         CASE ( 0 )                                   ! original formulation  (masked averaging of e3t divided by 4) 
    623 !$OMP PARALLEL DO schedule(static) private(jj,ji,ze3) 
    624489            DO jj = 1, jpjm1 
    625490               DO ji = 1, fs_jpim1   ! vector opt. 
     
    632497            END DO 
    633498         CASE ( 1 )                                   ! new formulation  (masked averaging of e3t divided by the sum of mask) 
    634 !$OMP PARALLEL DO schedule(static) private(jj,ji,ze3,zmsk) 
    635499            DO jj = 1, jpjm1 
    636500               DO ji = 1, fs_jpim1   ! vector opt. 
     
    648512         SELECT CASE( kvor )                 !==  vorticity considered  ==! 
    649513         CASE ( np_COR )                           !* Coriolis (planetary vorticity) 
    650 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    651514            DO jj = 1, jpjm1 
    652515               DO ji = 1, fs_jpim1   ! vector opt. 
     
    655518            END DO 
    656519         CASE ( np_RVO )                           !* relative vorticity 
    657 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    658520            DO jj = 1, jpjm1 
    659521               DO ji = 1, fs_jpim1   ! vector opt. 
     
    664526            END DO 
    665527         CASE ( np_MET )                           !* metric term 
    666 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    667528            DO jj = 1, jpjm1 
    668529               DO ji = 1, fs_jpim1   ! vector opt. 
     
    673534            END DO 
    674535         CASE ( np_CRV )                           !* Coriolis + relative vorticity 
    675 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    676536            DO jj = 1, jpjm1 
    677537               DO ji = 1, fs_jpim1   ! vector opt. 
     
    682542            END DO 
    683543         CASE ( np_CME )                           !* Coriolis + metric 
    684 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    685544            DO jj = 1, jpjm1 
    686545               DO ji = 1, fs_jpim1   ! vector opt. 
     
    696555         ! 
    697556         IF( ln_dynvor_msk ) THEN          !==  mask/unmask vorticity ==! 
    698 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    699557            DO jj = 1, jpjm1 
    700558               DO ji = 1, fs_jpim1   ! vector opt. 
     
    707565         ! 
    708566         !                                   !==  horizontal fluxes  ==! 
    709 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    710          DO jj = 1, jpj 
    711             DO ji = 1, jpi 
    712                zwx(ji,jj) = e2u(ji,jj) * e3u_n(ji,jj,jk) * pun(ji,jj,jk) 
    713                zwy(ji,jj) = e1v(ji,jj) * e3v_n(ji,jj,jk) * pvn(ji,jj,jk) 
    714             END DO 
    715          END DO 
     567         zwx(:,:) = e2u(:,:) * e3u_n(:,:,jk) * pun(:,:,jk) 
     568         zwy(:,:) = e1v(:,:) * e3v_n(:,:,jk) * pvn(:,:,jk) 
    716569 
    717570         !                                   !==  compute and add the vorticity term trend  =! 
    718571         jj = 2 
    719572         ztne(1,:) = 0   ;   ztnw(1,:) = 0   ;   ztse(1,:) = 0   ;   ztsw(1,:) = 0 
    720  
    721573         DO ji = 2, jpi          ! split in 2 parts due to vector opt. 
    722574               ztne(ji,jj) = zwz(ji-1,jj  ) + zwz(ji  ,jj  ) + zwz(ji  ,jj-1) 
     
    725577               ztsw(ji,jj) = zwz(ji  ,jj-1) + zwz(ji-1,jj-1) + zwz(ji-1,jj  ) 
    726578         END DO 
    727 !$OMP PARALLEL 
    728 !$OMP DO schedule(static) private(jj,ji) 
    729579         DO jj = 3, jpj 
    730580            DO ji = fs_2, jpi   ! vector opt. ok because we start at jj = 3 
     
    735585            END DO 
    736586         END DO 
    737 !$OMP DO schedule(static) private(jj,ji,zua,zva) 
    738587         DO jj = 2, jpjm1 
    739588            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    746595            END DO   
    747596         END DO   
    748 !$OMP END PARALLEL  
    749597         !                                             ! =============== 
    750598      END DO                                           !   End of slab 
     
    801649      IF(lwp) WRITE(numout,*) '      change fmask value in the angles (T)           ln_vorlat = ', ln_vorlat 
    802650      IF( ln_vorlat .AND. ( ln_dynvor_ene .OR. ln_dynvor_ens .OR. ln_dynvor_mix ) ) THEN 
    803 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    804651         DO jk = 1, jpk 
    805652            DO jj = 2, jpjm1 
  • trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynzad.F90

    r7698 r7753  
    7777      IF( l_trddyn )   THEN         ! Save ua and va trends 
    7878         CALL wrk_alloc( jpi, jpj, jpk, ztrdu, ztrdv )  
    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 
     79         ztrdu(:,:,:) = ua(:,:,:)  
     80         ztrdv(:,:,:) = va(:,:,:)  
    8881      ENDIF 
    8982       
    90 !$OMP PARALLEL 
    9183      DO jk = 2, jpkm1              ! Vertical momentum advection at level w and u- and v- vertical 
    92 !$OMP DO schedule(static) private(jj, ji) 
    9384         DO jj = 2, jpj                   ! vertical fluxes  
    9485            DO ji = fs_2, jpi             ! vector opt. 
     
    9687            END DO 
    9788         END DO 
    98 !$OMP DO schedule(static) private(jj, ji) 
    9989         DO jj = 2, jpjm1                 ! vertical momentum advection at w-point 
    10090            DO ji = fs_2, fs_jpim1        ! vector opt. 
     
    10494         END DO    
    10595      END DO 
    106 !$OMP END PARALLEL 
    10796      ! 
    10897      ! Surface and bottom advective fluxes set to zero 
    10998      IF ( ln_isfcav ) THEN 
    110 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    11199         DO jj = 2, jpjm1 
    112100            DO ji = fs_2, fs_jpim1           ! vector opt. 
     
    118106         END DO 
    119107      ELSE 
    120 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    121108         DO jj = 2, jpjm1         
    122109            DO ji = fs_2, fs_jpim1           ! vector opt. 
     
    129116      END IF 
    130117 
    131 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji, zua, zva) 
    132118      DO jk = 1, jpkm1              ! Vertical momentum advection at u- and v-points 
    133119         DO jj = 2, jpjm1 
     
    144130 
    145131      IF( l_trddyn ) THEN           ! save the vertical advection trends for diagnostic 
    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 
     132         ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 
     133         ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 
    155134         CALL trd_dyn( ztrdu, ztrdv, jpdyn_zad, kt ) 
    156135         CALL wrk_dealloc( jpi, jpj, jpk, ztrdu, ztrdv )  
  • trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf.F90

    r7698 r7753  
    5353      !! 
    5454      INTEGER, INTENT( in ) ::   kt      ! ocean time-step index 
    55       INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    5655      ! 
    5756      REAL(wp), POINTER, DIMENSION(:,:,:) ::  ztrdu, ztrdv 
     
    6766      IF( l_trddyn )   THEN                      ! temporary save of ta and sa trends 
    6867         CALL wrk_alloc( jpi, jpj, jpk, ztrdu, ztrdv )  
    69 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    70          DO jk = 1, jpk 
    71             DO jj = 1, jpj 
    72                DO ji = 1, jpi 
    73                   ztrdu(ji,jj,jk) = ua(ji,jj,jk) 
    74                   ztrdv(ji,jj,jk) = va(ji,jj,jk) 
    75                END DO 
    76             END DO 
    77          END DO 
     68         ztrdu(:,:,:) = ua(:,:,:) 
     69         ztrdv(:,:,:) = va(:,:,:) 
    7870      ENDIF 
    7971 
     
    8678 
    8779      IF( l_trddyn )   THEN                      ! save the vertical diffusive trends for further diagnostics 
    88 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    89          DO jk = 1, jpk 
    90             DO jj = 1, jpj 
    91                DO ji = 1, jpi 
    92                   ztrdu(ji,jj,jk) = ( ua(ji,jj,jk) - ub(ji,jj,jk) ) / r2dt - ztrdu(ji,jj,jk) 
    93                   ztrdv(ji,jj,jk) = ( va(ji,jj,jk) - vb(ji,jj,jk) ) / r2dt - ztrdv(ji,jj,jk) 
    94                END DO 
    95             END DO 
    96          END DO 
     80         ztrdu(:,:,:) = ( ua(:,:,:) - ub(:,:,:) ) / r2dt - ztrdu(:,:,:) 
     81         ztrdv(:,:,:) = ( va(:,:,:) - vb(:,:,:) ) / r2dt - ztrdv(:,:,:) 
    9782         CALL trd_dyn( ztrdu, ztrdv, jpdyn_zdf, kt ) 
    9883         CALL wrk_dealloc( jpi, jpj, jpk, ztrdu, ztrdv )  
  • trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf_imp.F90

    r7698 r7753  
    9292      ! 
    9393      IF( ln_dynadv_vec .OR. ln_linssh ) THEN      ! applied on velocity 
    94 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    9594         DO jk = 1, jpkm1 
    96             DO jj = 1, jpj 
    97                DO ji = 1, jpi 
    98                   ua(ji,jj,jk) = ( ub(ji,jj,jk) + p2dt * ua(ji,jj,jk) ) * umask(ji,jj,jk) 
    99                   va(ji,jj,jk) = ( vb(ji,jj,jk) + p2dt * va(ji,jj,jk) ) * vmask(ji,jj,jk) 
    100                END DO 
    101             END DO 
     95            ua(:,:,jk) = ( ub(:,:,jk) + p2dt * ua(:,:,jk) ) * umask(:,:,jk) 
     96            va(:,:,jk) = ( vb(:,:,jk) + p2dt * va(:,:,jk) ) * vmask(:,:,jk) 
    10297         END DO 
    10398      ELSE                                         ! applied on thickness weighted velocity 
    104 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    10599         DO jk = 1, jpkm1 
    106             DO jj = 1, jpj 
    107                DO ji = 1, jpi 
    108                   ua(ji,jj,jk) = (         e3u_b(ji,jj,jk) * ub(ji,jj,jk)  & 
    109                      &          + p2dt * e3u_n(ji,jj,jk) * ua(ji,jj,jk)  ) / e3u_a(ji,jj,jk) * umask(ji,jj,jk) 
    110                   va(ji,jj,jk) = (         e3v_b(ji,jj,jk) * vb(ji,jj,jk)  & 
    111                      &          + p2dt * e3v_n(ji,jj,jk) * va(ji,jj,jk)  ) / e3v_a(ji,jj,jk) * vmask(ji,jj,jk) 
    112                END DO 
    113             END DO 
     100            ua(:,:,jk) = (         e3u_b(:,:,jk) * ub(:,:,jk)  & 
     101               &          + p2dt * e3u_n(:,:,jk) * ua(:,:,jk)  ) / e3u_a(:,:,jk) * umask(:,:,jk) 
     102            va(:,:,jk) = (         e3v_b(:,:,jk) * vb(:,:,jk)  & 
     103               &          + p2dt * e3v_n(:,:,jk) * va(:,:,jk)  ) / e3v_a(:,:,jk) * vmask(:,:,jk) 
    114104         END DO 
    115105      ENDIF 
     
    122112      ! 
    123113      IF( ln_bfrimp ) THEN 
    124 !$OMP PARALLEL DO schedule(static) private(jj, ji, ikbu, ikbv) 
    125114         DO jj = 2, jpjm1 
    126115            DO ji = 2, jpim1 
     
    132121         END DO 
    133122         IF ( ln_isfcav ) THEN 
    134 !$OMP PARALLEL DO schedule(static) private(jj, ji, ikbu, ikbv) 
    135123            DO jj = 2, jpjm1 
    136124               DO ji = 2, jpim1 
     
    150138      ! G. Madec : in linear free surface, e3u_a = e3u_n = e3u_0, so systematic use of e3u_a 
    151139      IF( ln_bfrimp .AND. ln_dynspg_ts ) THEN 
    152 !$OMP PARALLEL 
    153 !$OMP DO schedule(static) private(jk,jj,ji) 
    154140         DO jk = 1, jpkm1        ! remove barotropic velocities 
    155             DO jj = 1, jpj 
    156                DO ji = 1, jpi 
    157                   ua(ji,jj,jk) = ( ua(ji,jj,jk) - ua_b(ji,jj) ) * umask(ji,jj,jk) 
    158                   va(ji,jj,jk) = ( va(ji,jj,jk) - va_b(ji,jj) ) * vmask(ji,jj,jk) 
    159                END DO 
    160             END DO 
    161          END DO 
    162 !$OMP DO schedule(static) private(jj, ji, ikbu, ikbv, ze3ua, ze3va) 
     141            ua(:,:,jk) = ( ua(:,:,jk) - ua_b(:,:) ) * umask(:,:,jk) 
     142            va(:,:,jk) = ( va(:,:,jk) - va_b(:,:) ) * vmask(:,:,jk) 
     143         END DO 
    163144         DO jj = 2, jpjm1        ! Add bottom/top stress due to barotropic component only 
    164145            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    171152            END DO 
    172153         END DO 
    173 !$OMP END DO NOWAIT 
    174 !$OMP END PARALLEL 
    175154         IF( ln_isfcav ) THEN    ! Ocean cavities (ISF) 
    176 !$OMP PARALLEL DO schedule(static) private(jj, ji, ikbu, ikbv, ze3ua, ze3va) 
    177155            DO jj = 2, jpjm1         
    178156               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    194172      ! non zero value at the ocean bottom depending on the bottom friction used. 
    195173      ! 
    196 !$OMP PARALLEL 
    197 !$OMP DO schedule(static) private(jk, jj, ji, ze3ua, zzwi, zzws) 
    198174      DO jk = 1, jpkm1        ! Matrix 
    199175         DO jj = 2, jpjm1  
     
    208184         END DO 
    209185      END DO 
    210 !$OMP DO schedule(static) private(jj, ji) 
    211186      DO jj = 2, jpjm1        ! Surface boundary conditions 
    212187         DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    232207      ! 
    233208      DO jk = 2, jpkm1        !==  First recurrence : Dk = Dk - Lk * Uk-1 / Dk-1   (increasing k)  == 
    234 !$OMP DO schedule(static) private(jj, ji) 
    235209         DO jj = 2, jpjm1    
    236210            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    238212            END DO 
    239213         END DO 
    240 !$OMP END DO NOWAIT 
    241       END DO 
    242       ! 
    243 !$OMP DO schedule(static) private(jj, ji, ze3ua) 
     214      END DO 
     215      ! 
    244216      DO jj = 2, jpjm1        !==  second recurrence:    SOLk = RHSk - Lk / Dk-1  Lk-1  ==! 
    245217         DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    250222      END DO 
    251223      DO jk = 2, jpkm1 
    252 !$OMP DO schedule(static) private(jj, ji) 
    253224         DO jj = 2, jpjm1 
    254225            DO ji = fs_2, fs_jpim1 
     
    258229      END DO 
    259230      ! 
    260 !$OMP DO schedule(static) private(jj, ji) 
    261231      DO jj = 2, jpjm1        !==  thrid recurrence : SOLk = ( Lk - Uk * Ek+1 ) / Dk  ==! 
    262232         DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    265235      END DO 
    266236      DO jk = jpk-2, 1, -1 
    267 !$OMP DO schedule(static) private(jj, ji) 
    268237         DO jj = 2, jpjm1 
    269238            DO ji = fs_2, fs_jpim1 
     
    279248      ! non zero value at the ocean bottom depending on the bottom friction used 
    280249      ! 
    281 !$OMP DO schedule(static) private(jk, jj, ji, ze3va, zzwi, zzws) 
    282250      DO jk = 1, jpkm1        ! Matrix 
    283251         DO jj = 2, jpjm1    
     
    292260         END DO 
    293261      END DO 
    294 !$OMP DO schedule(static) private(jj, ji) 
    295262      DO jj = 2, jpjm1        ! Surface boundary conditions 
    296263         DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    316283      ! 
    317284      DO jk = 2, jpkm1        !==  First recurrence : Dk = Dk - Lk * Uk-1 / Dk-1   (increasing k)  == 
    318 !$OMP DO schedule(static) private(jj, ji) 
    319285         DO jj = 2, jpjm1    
    320286            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    322288            END DO 
    323289         END DO 
    324 !$OMP END DO NOWAIT 
    325       END DO 
    326       ! 
    327 !$OMP DO schedule(static) private(jj, ji, ze3va) 
     290      END DO 
     291      ! 
    328292      DO jj = 2, jpjm1        !==  second recurrence:    SOLk = RHSk - Lk / Dk-1  Lk-1  ==! 
    329293         DO ji = fs_2, fs_jpim1   ! vector opt.           
     
    334298      END DO 
    335299      DO jk = 2, jpkm1 
    336 !$OMP DO schedule(static) private(jj, ji) 
    337300         DO jj = 2, jpjm1 
    338301            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    342305      END DO 
    343306      ! 
    344 !$OMP DO schedule(static) private(jj, ji) 
    345307      DO jj = 2, jpjm1        !==  third recurrence : SOLk = ( Lk - Uk * SOLk+1 ) / Dk  ==! 
    346308         DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    349311      END DO 
    350312      DO jk = jpk-2, 1, -1 
    351 !$OMP DO schedule(static) private(jj, ji) 
    352313         DO jj = 2, jpjm1 
    353314            DO ji = fs_2, fs_jpim1 
     
    355316            END DO 
    356317         END DO 
    357 !$OMP END DO NOWAIT 
    358       END DO 
    359 !$OMP END PARALLEL  
     318      END DO 
    360319       
    361320      ! J. Chanut: Lines below are useless ? 
     
    363322      !!gm  I almost sure it is !!!! 
    364323      IF( ln_bfrimp ) THEN 
    365 !$OMP PARALLEL DO schedule(static) private(jj, ji, ikbu, ikbv) 
    366324        DO jj = 2, jpjm1 
    367325           DO ji = 2, jpim1 
     
    373331        END DO 
    374332        IF (ln_isfcav) THEN 
    375 !$OMP PARALLEL DO schedule(static) private(jj, ji, ikbu, ikbv) 
    376333           DO jj = 2, jpjm1 
    377334              DO ji = 2, jpim1 
  • trunk/NEMOGCM/NEMO/OPA_SRC/DYN/sshwzv.F90

    r7698 r7753  
    7272      INTEGER, INTENT(in) ::   kt   ! time step 
    7373      !  
    74       INTEGER  ::   jk, jj, ji            ! dummy loop indice 
     74      INTEGER  ::   jk            ! dummy loop indice 
    7575      REAL(wp) ::   z2dt, zcoef   ! local scalars 
    7676      REAL(wp), POINTER, DIMENSION(:,:  ) ::   zhdiv   ! 2D workspace 
     
    9595      !                                           !------------------------------! 
    9696      IF(ln_wd) THEN 
    97         CALL wad_lmt(sshb, zcoef * (emp_b(:,:) + emp(:,:)), z2dt) 
    98       END IF 
    99  
    100       CALL div_hor( kt )                              ! Horizontal divergence 
    101       ! 
    102 !$OMP PARALLEL 
    103 !$OMP DO schedule(static) private(jj, ji) 
    104       DO jj = 1, jpj 
    105          DO ji = 1, jpi 
    106             zhdiv(ji,jj) = 0._wp 
    107          END DO 
    108       END DO            
     97         CALL wad_lmt(sshb, zcoef * (emp_b(:,:) + emp(:,:)), z2dt) 
     98      ENDIF 
     99 
     100      CALL div_hor( kt )                               ! Horizontal divergence 
     101      ! 
     102      zhdiv(:,:) = 0._wp 
    109103      DO jk = 1, jpkm1                                 ! Horizontal divergence of barotropic transports 
    110 !$OMP DO schedule(static) private(jj, ji) 
    111          DO jj = 1, jpj 
    112             DO ji = 1, jpi 
    113                zhdiv(ji,jj) = zhdiv(ji,jj) + e3t_n(ji,jj,jk) * hdivn(ji,jj,jk) 
    114             END DO 
    115          END DO            
     104        zhdiv(:,:) = zhdiv(:,:) + e3t_n(:,:,jk) * hdivn(:,:,jk) 
    116105      END DO 
    117106      !                                                ! Sea surface elevation time stepping 
     
    119108      ! compute the vertical velocity which can be used to compute the non-linear terms of the momentum equations. 
    120109      !  
    121 !$OMP DO schedule(static) private(jj, ji) 
    122       DO jj = 1, jpj 
    123          DO ji = 1, jpi 
    124             ssha(ji,jj) = (  sshb(ji,jj) - z2dt * ( zcoef * ( emp_b(ji,jj) + emp(ji,jj) ) + zhdiv(ji,jj) )  ) * ssmask(ji,jj) 
    125          END DO 
    126       END DO            
    127 !$OMP END PARALLEL 
     110      ssha(:,:) = (  sshb(:,:) - z2dt * ( zcoef * ( emp_b(:,:) + emp(:,:) ) + zhdiv(:,:) )  ) * ssmask(:,:) 
     111 
    128112      IF ( .NOT.ln_dynspg_ts ) THEN 
    129113         ! These lines are not necessary with time splitting since 
     
    141125      IF( lk_asminc .AND. ln_sshinc .AND. ln_asmiau ) THEN     ! Include the IAU weighted SSH increment 
    142126         CALL ssh_asm_inc( kt ) 
    143 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    144          DO jj = 1, jpj 
    145             DO ji = 1, jpi 
    146                ssha(ji,jj) = ssha(ji,jj) + z2dt * ssh_iau(ji,jj) 
    147             END DO 
    148          END DO            
     127         ssha(:,:) = ssha(:,:) + z2dt * ssh_iau(:,:) 
    149128      ENDIF 
    150129#endif 
     
    192171         IF(lwp) WRITE(numout,*) '~~~~~ ' 
    193172         ! 
    194 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    195          DO jj = 1, jpj 
    196             DO ji = 1, jpi 
    197                wn(ji,jj,jpk) = 0._wp                  ! bottom boundary condition: w=0 (set once for all) 
    198             END DO 
    199          END DO            
     173         wn(:,:,jpk) = 0._wp                  ! bottom boundary condition: w=0 (set once for all) 
    200174      ENDIF 
    201175      !                                           !------------------------------! 
     
    207181      IF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN      ! z_tilde and layer cases 
    208182         CALL wrk_alloc( jpi, jpj, jpk, zhdiv )  
    209 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    210183         ! 
    211184         DO jk = 1, jpkm1 
     
    223196         DO jk = jpkm1, 1, -1                       ! integrate from the bottom the hor. divergence 
    224197            ! computation of w 
    225 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    226             DO jj = 1, jpj 
    227                DO ji = 1, jpi   ! vector opt. 
    228                   wn(ji,jj,jk) = wn(ji,jj,jk+1) - ( e3t_n(ji,jj,jk) * hdivn(ji,jj,jk) + zhdiv(ji,jj,jk)    & 
    229                   &                         + z1_2dt * ( e3t_a(ji,jj,jk) - e3t_b(ji,jj,jk) )     ) * tmask(ji,jj,jk) 
    230                END DO 
    231             END DO 
     198            wn(:,:,jk) = wn(:,:,jk+1) - (  e3t_n(:,:,jk) * hdivn(:,:,jk) + zhdiv(:,:,jk)    & 
     199               &                         + z1_2dt * ( e3t_a(:,:,jk) - e3t_b(:,:,jk) )     ) * tmask(:,:,jk) 
    232200         END DO 
    233201         !          IF( ln_vvl_layer ) wn(:,:,:) = 0.e0 
     
    235203      ELSE   ! z_star and linear free surface cases 
    236204         DO jk = jpkm1, 1, -1                       ! integrate from the bottom the hor. divergence 
    237 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    238             DO jj = 1, jpj 
    239                DO ji = 1, jpi   ! vector opt. 
    240                   ! computation of w 
    241                   wn(ji,jj,jk) = wn(ji,jj,jk+1) - (  e3t_n(ji,jj,jk) * hdivn(ji,jj,jk)                 & 
    242                   &                         + z1_2dt * ( e3t_a(ji,jj,jk) - e3t_b(ji,jj,jk) )  ) * tmask(ji,jj,jk) 
    243                 END DO 
    244             END DO 
     205            ! computation of w 
     206            wn(:,:,jk) = wn(:,:,jk+1) - (  e3t_n(:,:,jk) * hdivn(:,:,jk)                 & 
     207               &                         + z1_2dt * ( e3t_a(:,:,jk) - e3t_b(:,:,jk) )  ) * tmask(:,:,jk) 
    245208         END DO 
    246209      ENDIF 
    247210 
    248211      IF( ln_bdy ) THEN 
    249 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    250212         DO jk = 1, jpkm1 
    251             DO jj = 1, jpj 
    252                DO ji = 1, jpi 
    253                   wn(ji,jj,jk) = wn(ji,jj,jk) * bdytmask(ji,jj) 
    254                END DO 
    255             END DO 
     213            wn(:,:,jk) = wn(:,:,jk) * bdytmask(:,:) 
    256214         END DO 
    257215      ENDIF 
     
    283241      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
    284242      ! 
    285       INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    286243      REAL(wp) ::   zcoef   ! local scalar 
    287244      !!---------------------------------------------------------------------- 
     
    297254      IF(  ( neuler == 0 .AND. kt == nit000 ) .OR.    & 
    298255         & ( ln_bt_fw    .AND. ln_dynspg_ts )      ) THEN  
    299 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    300          DO jj = 1, jpj 
    301             DO ji = 1, jpi 
    302                sshb(ji,jj) = sshn(ji,jj)                              ! before <-- now 
    303                sshn(ji,jj) = ssha(ji,jj)                              ! now    <-- after  (before already = now) 
    304             END DO 
    305          END DO            
     256         sshb(:,:) = sshn(:,:)                              ! before <-- now 
     257         sshn(:,:) = ssha(:,:)                              ! now    <-- after  (before already = now) 
    306258         ! 
    307259      ELSE           !==  Leap-Frog time-stepping: Asselin filter + swap  ==! 
    308260         !                                                  ! before <-- now filtered 
    309 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    310          DO jj = 1, jpj 
    311             DO ji = 1, jpi 
    312                sshb(ji,jj) = sshn(ji,jj) + atfp * ( sshb(ji,jj) - 2 * sshn(ji,jj) + ssha(ji,jj) ) 
    313             END DO 
    314          END DO            
     261         sshb(:,:) = sshn(:,:) + atfp * ( sshb(:,:) - 2 * sshn(:,:) + ssha(:,:) ) 
    315262         IF( .NOT.ln_linssh ) THEN                          ! before <-- with forcing removed 
    316263            zcoef = atfp * rdt * r1_rau0 
    317 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    318             DO jj = 1, jpj 
    319                DO ji = 1, jpi 
    320                   sshb(ji,jj) = sshb(ji,jj) - zcoef * (     emp_b(ji,jj) - emp   (ji,jj)   & 
    321                   &                             -    rnf_b(ji,jj) + rnf   (ji,jj)   & 
    322                   &                             + fwfisf_b(ji,jj) - fwfisf(ji,jj)   ) * ssmask(ji,jj) 
    323                END DO 
    324             END DO            
     264            sshb(:,:) = sshb(:,:) - zcoef * (     emp_b(:,:) - emp   (:,:)   & 
     265               &                             -    rnf_b(:,:) + rnf   (:,:)   & 
     266               &                             + fwfisf_b(:,:) - fwfisf(:,:)   ) * ssmask(:,:) 
    325267         ENDIF 
    326 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    327          DO jj = 1, jpj 
    328             DO ji = 1, jpi 
    329                sshn(ji,jj) = ssha(ji,jj)                              ! now <-- after 
    330             END DO 
    331          END DO            
     268         sshn(:,:) = ssha(:,:)                              ! now <-- after 
    332269      ENDIF 
    333270      ! 
Note: See TracChangeset for help on using the changeset viewer.