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

Reverting trunk to remove OpenMP

Location:
trunk/NEMOGCM/NEMO/OPA_SRC
Files:
71 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/OPA_SRC/BDY/bdy_oce.F90

    r7698 r7753  
    156156      USE lib_mpp, ONLY: ctl_warn, mpp_sum 
    157157      ! 
    158       INTEGER :: ji, jj         ! dummy loop indices 
    159158      INTEGER :: bdy_oce_alloc 
    160159      !!---------------------------------------------------------------------- 
     
    164163      ! 
    165164      ! Initialize masks  
    166 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    167       DO jj = 1, jpj 
    168          DO ji = 1, jpi 
    169             bdytmask(ji,jj) = 1._wp 
    170             bdyumask(ji,jj) = 1._wp 
    171             bdyvmask(ji,jj) = 1._wp 
    172          END DO 
    173       END DO 
     165      bdytmask(:,:) = 1._wp 
     166      bdyumask(:,:) = 1._wp 
     167      bdyvmask(:,:) = 1._wp 
    174168      !  
    175169      IF( lk_mpp             )   CALL mpp_sum ( bdy_oce_alloc ) 
  • trunk/NEMOGCM/NEMO/OPA_SRC/DIA/dia25h.F90

    r7698 r7753  
    6262      INTEGER ::   ios                 ! Local integer output status for namelist read 
    6363      INTEGER ::   ierror              ! Local integer for memory allocation 
    64       INTEGER ::   ji, jj, jk 
    6564      ! 
    6665      NAMELIST/nam_dia25h/ ln_dia25h 
     
    135134      ! ------------------------- ! 
    136135      cnt_25h = 1  ! sets the first value of sum at timestep 1 (note - should strictly be at timestep zero so before values used where possible)  
    137 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    138          DO jk = 1, jpk 
    139             DO jj = 1, jpj 
    140                DO ji = 1, jpi 
    141                   tn_25h(ji,jj,jk) = tsb(ji,jj,jk,jp_tem) 
    142                   sn_25h(ji,jj,jk) = tsb(ji,jj,jk,jp_sal) 
    143                   sshn_25h(ji,jj) = sshb(ji,jj) 
    144                   un_25h(ji,jj,jk) = ub(ji,jj,jk) 
    145                   vn_25h(ji,jj,jk) = vb(ji,jj,jk) 
    146                   wn_25h(ji,jj,jk) = wn(ji,jj,jk) 
    147                   avt_25h(ji,jj,jk) = avt(ji,jj,jk) 
    148                   avm_25h(ji,jj,jk) = avm(ji,jj,jk) 
    149 # if defined key_zdfgls || defined key_zdftke 
    150                   en_25h(ji,jj,jk) = en(ji,jj,jk) 
     136      tn_25h(:,:,:) = tsb(:,:,:,jp_tem) 
     137      sn_25h(:,:,:) = tsb(:,:,:,jp_sal) 
     138      sshn_25h(:,:) = sshb(:,:) 
     139      un_25h(:,:,:) = ub(:,:,:) 
     140      vn_25h(:,:,:) = vb(:,:,:) 
     141      wn_25h(:,:,:) = wn(:,:,:) 
     142      avt_25h(:,:,:) = avt(:,:,:) 
     143      avm_25h(:,:,:) = avm(:,:,:) 
     144# if defined key_zdfgls || defined key_zdftke 
     145         en_25h(:,:,:) = en(:,:,:) 
    151146#endif 
    152147# if defined key_zdfgls 
    153                   rmxln_25h(ji,jj,jk) = mxln(ji,jj,jk) 
    154 #endif 
    155                END DO 
    156             END DO 
    157          END DO 
     148         rmxln_25h(:,:,:) = mxln(:,:,:) 
     149#endif 
    158150#if defined key_lim3 || defined key_lim2 
    159151         CALL ctl_stop('STOP', 'dia_25h not setup yet to do tidemean ice') 
     
    231223         ENDIF 
    232224 
    233 !$OMP PARALLEL 
    234 !$OMP DO schedule(static) private(jj, ji) 
    235          DO jj = 1, jpj 
    236             DO ji = 1, jpi 
    237                sshn_25h(ji,jj)     = sshn_25h(ji,jj) + sshn (ji,jj) 
    238             END DO 
    239          END DO 
    240 !$OMP END DO NOWAIT 
    241 !$OMP DO schedule(static) private(jk, jj, ji) 
    242          DO jk = 1, jpk 
    243             DO jj = 1, jpj 
    244                DO ji = 1, jpi 
    245                   tn_25h(ji,jj,jk)        = tn_25h(ji,jj,jk) + tsn(ji,jj,jk,jp_tem) 
    246                   sn_25h(ji,jj,jk)        = sn_25h(ji,jj,jk) + tsn(ji,jj,jk,jp_sal) 
    247                   un_25h(ji,jj,jk)        = un_25h(ji,jj,jk) + un(ji,jj,jk) 
    248                   vn_25h(ji,jj,jk)        = vn_25h(ji,jj,jk) + vn(ji,jj,jk) 
    249                   wn_25h(ji,jj,jk)        = wn_25h(ji,jj,jk) + wn(ji,jj,jk) 
    250                   avt_25h(ji,jj,jk)       = avt_25h(ji,jj,jk) + avt(ji,jj,jk) 
    251                   avm_25h(ji,jj,jk)       = avm_25h(ji,jj,jk) + avm(ji,jj,jk) 
    252 # if defined key_zdfgls || defined key_zdftke 
    253                   en_25h(ji,jj,jk)        = en_25h(ji,jj,jk) + en(ji,jj,jk) 
     225         tn_25h(:,:,:)        = tn_25h(:,:,:) + tsn(:,:,:,jp_tem) 
     226         sn_25h(:,:,:)        = sn_25h(:,:,:) + tsn(:,:,:,jp_sal) 
     227         sshn_25h(:,:)        = sshn_25h(:,:) + sshn (:,:) 
     228         un_25h(:,:,:)        = un_25h(:,:,:) + un(:,:,:) 
     229         vn_25h(:,:,:)        = vn_25h(:,:,:) + vn(:,:,:) 
     230         wn_25h(:,:,:)        = wn_25h(:,:,:) + wn(:,:,:) 
     231         avt_25h(:,:,:)       = avt_25h(:,:,:) + avt(:,:,:) 
     232         avm_25h(:,:,:)       = avm_25h(:,:,:) + avm(:,:,:) 
     233# if defined key_zdfgls || defined key_zdftke 
     234         en_25h(:,:,:)        = en_25h(:,:,:) + en(:,:,:) 
    254235#endif 
    255236# if defined key_zdfgls 
    256                   rmxln_25h(ji,jj,jk)      = rmxln_25h(ji,jj,jk) + mxln(ji,jj,jk) 
    257 #endif 
    258                END DO 
    259             END DO 
    260          END DO 
    261 !$OMP END PARALLEL 
     237         rmxln_25h(:,:,:)      = rmxln_25h(:,:,:) + mxln(:,:,:) 
     238#endif 
    262239         cnt_25h = cnt_25h + 1 
    263240 
     
    276253            ENDIF 
    277254 
    278 !$OMP PARALLEL 
    279 !$OMP DO schedule(static) private(jj, ji) 
    280          DO jj = 1, jpj 
    281             DO ji = 1, jpi 
    282                sshn_25h(ji,jj)     = sshn_25h(ji,jj) / 25.0_wp 
    283             END DO 
    284          END DO 
    285 !$OMP END DO NOWAIT 
    286 !$OMP DO schedule(static) private(jk, jj, ji) 
    287          DO jk = 1, jpk 
    288             DO jj = 1, jpj 
    289                DO ji = 1, jpi 
    290                   tn_25h(ji,jj,jk)        = tn_25h(ji,jj,jk) / 25.0_wp 
    291                   sn_25h(ji,jj,jk)        = sn_25h(ji,jj,jk) / 25.0_wp 
    292                   un_25h(ji,jj,jk)        = un_25h(ji,jj,jk) / 25.0_wp 
    293                   vn_25h(ji,jj,jk)        = vn_25h(ji,jj,jk) / 25.0_wp 
    294                   wn_25h(ji,jj,jk)        = wn_25h(ji,jj,jk) / 25.0_wp 
    295                   avt_25h(ji,jj,jk)       = avt_25h(ji,jj,jk) / 25.0_wp 
    296                   avm_25h(ji,jj,jk)       = avm_25h(ji,jj,jk) / 25.0_wp 
    297 # if defined key_zdfgls || defined key_zdftke 
    298                   en_25h(ji,jj,jk)        = en_25h(ji,jj,jk) / 25.0_wp 
     255            tn_25h(:,:,:)        = tn_25h(:,:,:) / 25.0_wp 
     256            sn_25h(:,:,:)        = sn_25h(:,:,:) / 25.0_wp 
     257            sshn_25h(:,:)        = sshn_25h(:,:) / 25.0_wp 
     258            un_25h(:,:,:)        = un_25h(:,:,:) / 25.0_wp 
     259            vn_25h(:,:,:)        = vn_25h(:,:,:) / 25.0_wp 
     260            wn_25h(:,:,:)        = wn_25h(:,:,:) / 25.0_wp 
     261            avt_25h(:,:,:)       = avt_25h(:,:,:) / 25.0_wp 
     262            avm_25h(:,:,:)       = avm_25h(:,:,:) / 25.0_wp 
     263# if defined key_zdfgls || defined key_zdftke 
     264            en_25h(:,:,:)        = en_25h(:,:,:) / 25.0_wp 
    299265#endif 
    300266# if defined key_zdfgls 
    301                   rmxln_25h(ji,jj,jk)       = rmxln_25h(ji,jj,jk) / 25.0_wp 
    302 #endif 
    303                END DO 
    304             END DO 
    305          END DO 
    306 !$OMP END PARALLEL 
     267            rmxln_25h(:,:,:)       = rmxln_25h(:,:,:) / 25.0_wp 
     268#endif 
    307269 
    308270            IF (lwp)  WRITE(numout,*) 'dia_wri_tide : Mean calculated by dividing 25 hour sums and writing output' 
    309271            zmdi=1.e+20 !missing data indicator for masking 
    310272            ! write tracers (instantaneous) 
    311 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    312          DO jk = 1, jpk 
    313             DO jj = 1, jpj 
    314                DO ji = 1, jpi 
    315                   zw3d(ji,jj,jk) = tn_25h(ji,jj,jk)*tmask(ji,jj,jk) + zmdi*(1.0-tmask(ji,jj,jk)) 
    316                END DO 
    317             END DO 
    318          END DO 
     273            zw3d(:,:,:) = tn_25h(:,:,:)*tmask(:,:,:) + zmdi*(1.0-tmask(:,:,:)) 
    319274            CALL iom_put("temper25h", zw3d)   ! potential temperature 
    320 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    321          DO jk = 1, jpk 
    322             DO jj = 1, jpj 
    323                DO ji = 1, jpi 
    324                   zw3d(ji,jj,jk) = sn_25h(ji,jj,jk)*tmask(ji,jj,jk) + zmdi*(1.0-tmask(ji,jj,jk)) 
    325                END DO 
    326             END DO 
    327          END DO 
     275            zw3d(:,:,:) = sn_25h(:,:,:)*tmask(:,:,:) + zmdi*(1.0-tmask(:,:,:)) 
    328276            CALL iom_put( "salin25h", zw3d  )   ! salinity 
    329 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    330          DO jj = 1, jpj 
    331             DO ji = 1, jpi 
    332                zw2d(ji,jj) = sshn_25h(ji,jj)*tmask(ji,jj,1) + zmdi*(1.0-tmask(ji,jj,1)) 
    333             END DO 
    334          END DO 
     277            zw2d(:,:) = sshn_25h(:,:)*tmask(:,:,1) + zmdi*(1.0-tmask(:,:,1)) 
    335278            CALL iom_put( "ssh25h", zw2d )   ! sea surface  
    336279 
    337280 
    338281            ! Write velocities (instantaneous) 
    339 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    340          DO jk = 1, jpk 
    341             DO jj = 1, jpj 
    342                DO ji = 1, jpi 
    343                   zw3d(ji,jj,jk) = un_25h(ji,jj,jk)*umask(ji,jj,jk) + zmdi*(1.0-umask(ji,jj,jk)) 
    344                END DO 
    345             END DO 
    346          END DO 
     282            zw3d(:,:,:) = un_25h(:,:,:)*umask(:,:,:) + zmdi*(1.0-umask(:,:,:)) 
    347283            CALL iom_put("vozocrtx25h", zw3d)    ! i-current 
    348 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    349          DO jk = 1, jpk 
    350             DO jj = 1, jpj 
    351                DO ji = 1, jpi 
    352                   zw3d(ji,jj,jk) = vn_25h(ji,jj,jk)*vmask(ji,jj,jk) + zmdi*(1.0-vmask(ji,jj,jk)) 
    353                END DO 
    354             END DO 
    355          END DO 
     284            zw3d(:,:,:) = vn_25h(:,:,:)*vmask(:,:,:) + zmdi*(1.0-vmask(:,:,:)) 
    356285            CALL iom_put("vomecrty25h", zw3d  )   ! j-current 
    357 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    358          DO jk = 1, jpk 
    359             DO jj = 1, jpj 
    360                DO ji = 1, jpi 
    361                   zw3d(ji,jj,jk) = wn_25h(ji,jj,jk)*tmask(ji,jj,jk) + zmdi*(1.0-tmask(ji,jj,jk)) 
    362                END DO 
    363             END DO 
    364          END DO 
     286 
     287            zw3d(:,:,:) = wn_25h(:,:,:)*tmask(:,:,:) + zmdi*(1.0-tmask(:,:,:)) 
    365288            CALL iom_put("vomecrtz25h", zw3d )   ! k-current 
    366 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    367          DO jk = 1, jpk 
    368             DO jj = 1, jpj 
    369                DO ji = 1, jpi 
    370                   zw3d(ji,jj,jk) = avt_25h(ji,jj,jk)*tmask(ji,jj,jk) + zmdi*(1.0-tmask(ji,jj,jk)) 
    371                END DO 
    372             END DO 
    373          END DO 
     289            zw3d(:,:,:) = avt_25h(:,:,:)*tmask(:,:,:) + zmdi*(1.0-tmask(:,:,:)) 
    374290            CALL iom_put("avt25h", zw3d )   ! diffusivity 
    375 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    376          DO jk = 1, jpk 
    377             DO jj = 1, jpj 
    378                DO ji = 1, jpi 
    379                   zw3d(ji,jj,jk) = avm_25h(ji,jj,jk)*tmask(ji,jj,jk) + zmdi*(1.0-tmask(ji,jj,jk)) 
    380                END DO 
    381             END DO 
    382          END DO 
     291            zw3d(:,:,:) = avm_25h(:,:,:)*tmask(:,:,:) + zmdi*(1.0-tmask(:,:,:)) 
    383292            CALL iom_put("avm25h", zw3d)   ! viscosity 
    384293#if defined key_zdftke || defined key_zdfgls  
    385 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    386          DO jk = 1, jpk 
    387             DO jj = 1, jpj 
    388                DO ji = 1, jpi 
    389                   zw3d(ji,jj,jk) = en_25h(ji,jj,jk)*tmask(ji,jj,jk) + zmdi*(1.0-tmask(ji,jj,jk)) 
    390                END DO 
    391             END DO 
    392          END DO 
     294            zw3d(:,:,:) = en_25h(:,:,:)*tmask(:,:,:) + zmdi*(1.0-tmask(:,:,:)) 
    393295            CALL iom_put("tke25h", zw3d)   ! tke 
    394296#endif 
    395297#if defined key_zdfgls  
    396 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    397          DO jk = 1, jpk 
    398             DO jj = 1, jpj 
    399                DO ji = 1, jpi 
    400                   zw3d(ji,jj,jk) = rmxln_25h(ji,jj,jk)*tmask(ji,jj,jk) + zmdi*(1.0-tmask(ji,jj,jk)) 
    401                END DO 
    402             END DO 
    403          END DO 
     298            zw3d(:,:,:) = rmxln_25h(:,:,:)*tmask(:,:,:) + zmdi*(1.0-tmask(:,:,:)) 
    404299            CALL iom_put( "mxln25h",zw3d) 
    405300#endif 
    406301 
    407302            ! After the write reset the values to cnt=1 and sum values equal current value  
    408 !$OMP PARALLEL 
    409 !$OMP DO schedule(static) private(jj, ji) 
    410          DO jj = 1, jpj 
    411             DO ji = 1, jpi 
    412                sshn_25h(ji,jj) = sshn (ji,jj) 
    413             END DO 
    414          END DO 
    415 !$OMP END DO NOWAIT 
    416 !$OMP DO schedule(static) private(jk, jj, ji) 
    417          DO jk = 1, jpk 
    418             DO jj = 1, jpj 
    419                DO ji = 1, jpi 
    420                   tn_25h(ji,jj,jk) = tsn(ji,jj,jk,jp_tem) 
    421                   sn_25h(ji,jj,jk) = tsn(ji,jj,jk,jp_sal) 
    422                   un_25h(ji,jj,jk) = un(ji,jj,jk) 
    423                   vn_25h(ji,jj,jk) = vn(ji,jj,jk) 
    424                   wn_25h(ji,jj,jk) = wn(ji,jj,jk) 
    425                   avt_25h(ji,jj,jk) = avt(ji,jj,jk) 
    426                   avm_25h(ji,jj,jk) = avm(ji,jj,jk) 
    427 # if defined key_zdfgls || defined key_zdftke 
    428                   en_25h(ji,jj,jk) = en(ji,jj,jk) 
     303            tn_25h(:,:,:) = tsn(:,:,:,jp_tem) 
     304            sn_25h(:,:,:) = tsn(:,:,:,jp_sal) 
     305            sshn_25h(:,:) = sshn (:,:) 
     306            un_25h(:,:,:) = un(:,:,:) 
     307            vn_25h(:,:,:) = vn(:,:,:) 
     308            wn_25h(:,:,:) = wn(:,:,:) 
     309            avt_25h(:,:,:) = avt(:,:,:) 
     310            avm_25h(:,:,:) = avm(:,:,:) 
     311# if defined key_zdfgls || defined key_zdftke 
     312            en_25h(:,:,:) = en(:,:,:) 
    429313#endif 
    430314# if defined key_zdfgls 
    431                   rmxln_25h(ji,jj,jk) = mxln(ji,jj,jk) 
    432 #endif 
    433                END DO 
    434             END DO 
    435          END DO 
    436 !$OMP END PARALLEL 
     315            rmxln_25h(:,:,:) = mxln(:,:,:) 
     316#endif 
    437317            cnt_25h = 1 
    438318            IF (lwp)  WRITE(numout,*) 'dia_wri_tide : After 25hr mean write, reset sum to current value and cnt_25h to one for overlapping average',cnt_25h 
  • trunk/NEMOGCM/NEMO/OPA_SRC/DIA/diaar5.F90

    r7698 r7753  
    8989         CALL wrk_alloc( jpi , jpj , jpk        , zrhd      , zrhop    ) 
    9090         CALL wrk_alloc( jpi , jpj , jpk , jpts , ztsn                 ) 
    91 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    92          DO jj = 1, jpj 
    93             DO ji = 1, jpi 
    94                zarea_ssh(ji,jj) = area(ji,jj) * sshn(ji,jj) 
    95             END DO 
    96          END DO 
     91         zarea_ssh(:,:) = area(:,:) * sshn(:,:) 
    9792      ENDIF 
    9893      ! 
     
    111106      IF( iom_use( 'botpres' ) .OR. iom_use( 'sshthster' )  .OR. iom_use( 'sshsteric' )  ) THEN     
    112107         !                      
    113 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    114          DO jk = 1, jpk 
    115             DO jj = 1, jpj 
    116                DO ji = 1, jpi 
    117                   ztsn(ji,jj,jk,jp_tem) = tsn(ji,jj,jk,jp_tem)                    ! thermosteric ssh 
    118                   ztsn(ji,jj,jk,jp_sal) = sn0(ji,jj,jk) 
    119                END DO 
    120             END DO 
    121          END DO 
     108         ztsn(:,:,:,jp_tem) = tsn(:,:,:,jp_tem)                    ! thermosteric ssh 
     109         ztsn(:,:,:,jp_sal) = sn0(:,:,:) 
    122110         CALL eos( ztsn, zrhd, gdept_n(:,:,:) )                       ! now in situ density using initial salinity 
    123111         ! 
    124 !$OMP PARALLEL 
    125 !$OMP DO schedule(static) private(jj, ji) 
    126          DO jj = 1, jpj 
    127             DO ji = 1, jpi 
    128                zbotpres(ji,jj) = 0._wp                        ! no atmospheric surface pressure, levitating sea-ice 
    129             END DO 
    130          END DO 
     112         zbotpres(:,:) = 0._wp                        ! no atmospheric surface pressure, levitating sea-ice 
    131113         DO jk = 1, jpkm1 
    132 !$OMP DO schedule(static) private(jj, ji) 
    133             DO jj = 1, jpj 
    134                DO ji = 1, jpi 
    135                   zbotpres(ji,jj) = zbotpres(ji,jj) + e3t_n(ji,jj,jk) * zrhd(ji,jj,jk) 
    136                END DO 
    137             END DO 
    138          END DO 
    139 !$OMP END PARALLEL 
     114            zbotpres(:,:) = zbotpres(:,:) + e3t_n(:,:,jk) * zrhd(:,:,jk) 
     115         END DO 
    140116         IF( ln_linssh ) THEN 
    141117            IF( ln_isfcav ) THEN 
    142 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    143118               DO ji = 1, jpi 
    144119                  DO jj = 1, jpj 
     
    147122               END DO 
    148123            ELSE 
    149 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    150                DO ji = 1, jpi 
    151                   DO jj = 1, jpj 
    152                      zbotpres(ji,jj) = zbotpres(ji,jj) + sshn(ji,jj) * zrhd(ji,jj,1) 
    153                   END DO 
    154                END DO 
     124               zbotpres(:,:) = zbotpres(:,:) + sshn(:,:) * zrhd(:,:,1) 
    155125            END IF 
    156126!!gm 
     
    158128!!gm 
    159129         END IF 
    160          ! 
    161          zarho = SUM( area(:,:) * zbotpres(:,:) ) 
    162130         !                                          
     131         zarho = SUM( area(:,:) * zbotpres(:,:) )  
    163132         IF( lk_mpp )   CALL mpp_sum( zarho ) 
    164133         zssh_steric = - zarho / area_tot 
     
    167136         !                                         ! steric sea surface height 
    168137         CALL eos( tsn, zrhd, zrhop, gdept_n(:,:,:) )                 ! now in situ and potential density 
    169 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    170          DO jj = 1, jpj 
    171             DO ji = 1, jpi 
    172                zrhop(ji,jj,jpk) = 0._wp 
    173             END DO 
    174          END DO 
     138         zrhop(:,:,jpk) = 0._wp 
    175139         CALL iom_put( 'rhop', zrhop ) 
    176140         ! 
    177 !$OMP PARALLEL 
    178 !$OMP DO schedule(static) private(jj, ji) 
    179          DO jj = 1, jpj 
    180             DO ji = 1, jpi 
    181                zbotpres(ji,jj) = 0._wp                        ! no atmospheric surface pressure, levitating sea-ice 
    182             END DO 
    183          END DO 
     141         zbotpres(:,:) = 0._wp                        ! no atmospheric surface pressure, levitating sea-ice 
    184142         DO jk = 1, jpkm1 
    185 !$OMP DO schedule(static) private(jj, ji) 
    186             DO jj = 1, jpj 
    187                DO ji = 1, jpi 
    188                   zbotpres(ji,jj) = zbotpres(ji,jj) + e3t_n(ji,jj,jk) * zrhd(ji,jj,jk) 
    189                END DO 
    190             END DO 
     143            zbotpres(:,:) = zbotpres(:,:) + e3t_n(:,:,jk) * zrhd(:,:,jk) 
    191144         END DO 
    192145         IF( ln_linssh ) THEN 
    193146            IF ( ln_isfcav ) THEN 
    194 !$OMP DO schedule(static) private(jj, ji) 
    195147               DO ji = 1,jpi 
    196148                  DO jj = 1,jpj 
     
    199151               END DO 
    200152            ELSE 
    201 !$OMP DO schedule(static) private(jj, ji) 
    202                DO jj = 1, jpj 
    203                   DO ji = 1, jpi 
    204                      zbotpres(ji,jj) = zbotpres(ji,jj) + sshn(ji,jj) * zrhd(ji,jj,1) 
    205                   END DO 
    206                END DO 
     153               zbotpres(:,:) = zbotpres(:,:) + sshn(:,:) * zrhd(:,:,1) 
    207154            END IF 
    208155         END IF 
    209 !$OMP END PARALLEL 
    210156         !     
    211          zarho = SUM( area(:,:) * zbotpres(:,:) ) 
     157         zarho = SUM( area(:,:) * zbotpres(:,:) )  
    212158         IF( lk_mpp )   CALL mpp_sum( zarho ) 
    213159         zssh_steric = - zarho / area_tot 
     
    216162         !                                         ! ocean bottom pressure 
    217163         zztmp = rau0 * grav * 1.e-4_wp               ! recover pressure from pressure anomaly and cover to dbar = 1.e4 Pa 
    218 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    219          DO jj = 1, jpj 
    220             DO ji = 1, jpi 
    221                zbotpres(ji,jj) = zztmp * ( zbotpres(ji,jj) + sshn(ji,jj) + thick0(ji,jj) ) 
    222             END DO 
    223          END DO 
     164         zbotpres(:,:) = zztmp * ( zbotpres(:,:) + sshn(:,:) + thick0(:,:) ) 
    224165         CALL iom_put( 'botpres', zbotpres ) 
    225166         ! 
     
    272213      ! work is not being done against stratification 
    273214          CALL wrk_alloc( jpi, jpj, zpe ) 
    274 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    275           DO jj = 1, jpj 
    276              DO ji = 1, jpi 
    277                 zpe(ji,jj) = 0._wp 
    278              END DO 
    279           END DO 
     215          zpe(:,:) = 0._wp 
    280216          IF( lk_zdfddm ) THEN 
    281 !$OMP PARALLEL DO schedule(static) private(ji,jj,jk,zrw,zaw,zbw) 
    282217             DO ji=1,jpi 
    283218                DO jj=1,jpj 
     
    297232             ENDDO 
    298233          ELSE 
    299 !$OMP PARALLEL DO schedule(static) private(ji,jj,jk) 
    300234             DO ji = 1, jpi 
    301235                DO jj = 1, jpj 
     
    389323      INTEGER  ::   ik 
    390324      INTEGER  ::   ji, jj, jk  ! dummy loop indices 
    391       REAL(wp) ::   zztmp, zsum  
     325      REAL(wp) ::   zztmp   
    392326      REAL(wp), POINTER, DIMENSION(:,:,:,:) ::   zsaldta   ! Jan/Dec levitus salinity 
    393327      ! 
     
    407341         IF( dia_ar5_alloc() /= 0 )   CALL ctl_stop( 'STOP', 'dia_ar5_init : unable to allocate arrays' ) 
    408342 
    409 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    410          DO jj = 1, jpj 
    411             DO ji = 1, jpi 
    412                area(ji,jj) = e1e2t(ji,jj) * tmask_i(ji,jj) 
    413             END DO 
    414          END DO 
     343         area(:,:) = e1e2t(:,:) * tmask_i(:,:) 
    415344 
    416345         area_tot = SUM( area(:,:) )   ;   IF( lk_mpp )   CALL mpp_sum( area_tot ) 
    417346 
    418347         vol0        = 0._wp 
    419 !$OMP PARALLEL 
    420 !$OMP DO schedule(static) private(jj, ji) 
    421          DO jj = 1, jpj 
    422             DO ji = 1, jpi 
    423                thick0(ji,jj) = 0._wp 
    424             END DO 
    425          END DO 
     348         thick0(:,:) = 0._wp 
    426349         DO jk = 1, jpkm1 
    427 !$OMP DO schedule(static) private(jj, ji, zsum) 
    428             DO jj = 1, jpj 
    429                DO ji = 1, jpi 
    430                   zsum = area (ji,jj) * tmask(ji,jj,jk) * e3t_0(ji,jj,jk) 
    431                END DO 
    432             END DO 
    433             vol0        = vol0        + zsum 
    434 !$OMP DO schedule(static) private(jj, ji) 
    435             DO jj = 1, jpj 
    436                DO ji = 1, jpi 
    437                   thick0(ji,jj) = thick0(ji,jj) + tmask_i(ji,jj) * tmask(ji,jj,jk) * e3t_0(ji,jj,jk) 
    438                END DO 
    439             END DO 
    440          END DO 
    441 !$OMP END PARALLEL 
     350            vol0        = vol0        + SUM( area (:,:) * tmask(:,:,jk) * e3t_0(:,:,jk) ) 
     351            thick0(:,:) = thick0(:,:) +    tmask_i(:,:) * tmask(:,:,jk) * e3t_0(:,:,jk) 
     352         END DO 
    442353         IF( lk_mpp )   CALL mpp_sum( vol0 ) 
    443354 
     
    447358         CALL iom_close( inum ) 
    448359 
    449 !$OMP PARALLEL 
    450 !$OMP DO schedule(static) private(jk, jj, ji) 
    451          DO jk = 1, jpk 
    452             DO jj = 1, jpj 
    453                DO ji = 1, jpi 
    454                   sn0(ji,jj,jk) = 0.5_wp * ( zsaldta(ji,jj,jk,1) + zsaldta(ji,jj,jk,2) )         
    455                   sn0(ji,jj,jk) = sn0(ji,jj,jk) * tmask(ji,jj,jk) 
    456                END DO 
    457             END DO 
    458          END DO 
     360         sn0(:,:,:) = 0.5_wp * ( zsaldta(:,:,:,1) + zsaldta(:,:,:,2) )         
     361         sn0(:,:,:) = sn0(:,:,:) * tmask(:,:,:) 
    459362         IF( ln_zps ) THEN               ! z-coord. partial steps 
    460 !$OMP DO schedule(static) private(jj, ji, ik, zztmp) 
    461363            DO jj = 1, jpj               ! interpolation of salinity at the last ocean level (i.e. the partial step) 
    462364               DO ji = 1, jpi 
     
    469371            END DO 
    470372         ENDIF 
    471 !$OMP END PARALLEL 
    472373         ! 
    473374         CALL wrk_dealloc( jpi , jpj , jpk, jpts, zsaldta ) 
  • trunk/NEMOGCM/NEMO/OPA_SRC/DIA/diacfl.F90

    r7698 r7753  
    7171 
    7272             ! calculate Courant numbers 
    73 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    7473         DO jk = 1, jpk 
    7574            DO jj = 1, jpj 
     
    173172      !!---------------------------------------------------------------------- 
    174173 
    175       INTEGER  :: ji, jj, jk                                ! dummy loop indices 
    176174 
    177175      IF( nn_diacfl == 1 ) THEN 
     
    183181 
    184182         ALLOCATE( zcu_cfl(jpi, jpj, jpk), zcv_cfl(jpi, jpj, jpk), zcw_cfl(jpi, jpj, jpk) ) 
    185 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    186          DO jk = 1, jpk 
    187             DO jj = 1, jpj 
    188                DO ji = 1, jpi 
    189                   zcu_cfl(ji,jj,jk)=0.0 
    190                   zcv_cfl(ji,jj,jk)=0.0 
    191                   zcw_cfl(ji,jj,jk)=0.0 
    192                END DO 
    193             END DO 
    194          END DO 
     183 
     184         zcu_cfl(:,:,:)=0.0 
     185         zcv_cfl(:,:,:)=0.0 
     186         zcw_cfl(:,:,:)=0.0 
     187 
    195188         IF( lwp ) THEN 
    196189            WRITE(numout,*) 
  • trunk/NEMOGCM/NEMO/OPA_SRC/DIA/diahsb.F90

    r7698 r7753  
    8888      CALL wrk_alloc( jpi,jpj,   z2d0, z2d1 ) 
    8989      ! 
    90 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    91       DO jk = 1, jpk 
    92          DO jj = 1, jpj 
    93             DO ji = 1, jpi 
    94                tsn(ji,jj,jk,1) = tsn(ji,jj,jk,1) * tmask(ji,jj,jk) ; tsb(ji,jj,jk,1) = tsb(ji,jj,jk,1) * tmask(ji,jj,jk)  
    95                tsn(ji,jj,jk,2) = tsn(ji,jj,jk,2) * tmask(ji,jj,jk) ; tsb(ji,jj,jk,2) = tsb(ji,jj,jk,2) * tmask(ji,jj,jk) 
    96             END DO 
    97          END DO 
    98       END DO 
     90      tsn(:,:,:,1) = tsn(:,:,:,1) * tmask(:,:,:) ; tsb(:,:,:,1) = tsb(:,:,:,1) * tmask(:,:,:) ; 
     91      tsn(:,:,:,2) = tsn(:,:,:,2) * tmask(:,:,:) ; tsb(:,:,:,2) = tsb(:,:,:,2) * tmask(:,:,:) ; 
    9992      ! ------------------------- ! 
    10093      ! 1 - Trends due to forcing ! 
     
    115108      IF( ln_linssh ) THEN 
    116109         IF( ln_isfcav ) THEN 
    117 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    118110            DO ji=1,jpi 
    119111               DO jj=1,jpj 
     
    123115            END DO 
    124116         ELSE 
    125 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    126             DO ji=1,jpi 
    127                DO jj=1,jpj 
    128                   z2d0(ji,jj) = surf(ji,jj) * wn(ji,jj,1) * tsb(ji,jj,1,jp_tem) 
    129                   z2d1(ji,jj) = surf(ji,jj) * wn(ji,jj,1) * tsb(ji,jj,1,jp_sal) 
    130                END DO 
    131             END DO 
     117            z2d0(:,:) = surf(:,:) * wn(:,:,1) * tsb(:,:,1,jp_tem) 
     118            z2d1(:,:) = surf(:,:) * wn(:,:,1) * tsb(:,:,1,jp_sal) 
    132119         END IF 
    133120         z_wn_trd_t = - glob_sum( z2d0 )  
     
    158145      IF( ln_linssh ) THEN 
    159146         IF( ln_isfcav ) THEN 
    160 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    161147            DO ji = 1, jpi 
    162148               DO jj = 1, jpj 
     
    166152            END DO 
    167153         ELSE 
    168 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    169             DO jj = 1, jpj 
    170                DO ji = 1, jpi 
    171                   z2d0(ji,jj) = surf(ji,jj) * ( tsn(ji,jj,1,jp_tem) * sshn(ji,jj) - ssh_hc_loc_ini(ji,jj) )  
    172                   z2d1(ji,jj) = surf(ji,jj) * ( tsn(ji,jj,1,jp_sal) * sshn(ji,jj) - ssh_sc_loc_ini(ji,jj) )  
    173                END DO 
    174             END DO 
     154            z2d0(:,:) = surf(:,:) * ( tsn(:,:,1,jp_tem) * sshn(:,:) - ssh_hc_loc_ini(:,:) )  
     155            z2d1(:,:) = surf(:,:) * ( tsn(:,:,1,jp_sal) * sshn(:,:) - ssh_sc_loc_ini(:,:) )  
    175156         END IF 
    176157         z_ssh_hc = glob_sum_full( z2d0 )  
     
    294275          IF(lwp) WRITE(numout,*) ' dia_hsb at initial state ' 
    295276          IF(lwp) WRITE(numout,*) '~~~~~~~' 
    296 !$OMP PARALLEL 
    297 !$OMP DO schedule(static) private(jj,ji) 
    298           DO jj = 1, jpj 
    299              DO ji = 1, jpi 
    300                 surf_ini(ji,jj) = e1e2t(ji,jj) * tmask_i(ji,jj)         ! initial ocean surface 
    301                 ssh_ini(ji,jj) = sshn(ji,jj)                          ! initial ssh 
    302              END DO 
     277          surf_ini(:,:) = e1e2t(:,:) * tmask_i(:,:)         ! initial ocean surface 
     278          ssh_ini(:,:) = sshn(:,:)                          ! initial ssh 
     279          DO jk = 1, jpk 
     280             ! if ice sheet/oceqn coupling, need to mask ini variables here (mask could change at the next NEMO instance). 
     281             e3t_ini   (:,:,jk) = e3t_n(:,:,jk)                      * tmask(:,:,jk)  ! initial vertical scale factors 
     282             hc_loc_ini(:,:,jk) = tsn(:,:,jk,jp_tem) * e3t_n(:,:,jk) * tmask(:,:,jk)  ! initial heat content 
     283             sc_loc_ini(:,:,jk) = tsn(:,:,jk,jp_sal) * e3t_n(:,:,jk) * tmask(:,:,jk)  ! initial salt content 
    303284          END DO 
    304 !$OMP DO schedule(static) private(jk,jj,ji) 
    305           DO jk = 1, jpk 
    306              DO jj = 1, jpj 
    307                 DO ji = 1, jpi 
    308                    ! if ice sheet/oceqn coupling, need to mask ini variables here (mask could change at the next NEMO instance). 
    309                    e3t_ini   (ji,jj,jk) = e3t_n(ji,jj,jk)                      * tmask(ji,jj,jk)  ! initial vertical scale factors 
    310                    hc_loc_ini(ji,jj,jk) = tsn(ji,jj,jk,jp_tem) * e3t_n(ji,jj,jk) * tmask(ji,jj,jk)  ! initial heat content 
    311                    sc_loc_ini(ji,jj,jk) = tsn(ji,jj,jk,jp_sal) * e3t_n(ji,jj,jk) * tmask(ji,jj,jk)  ! initial salt content 
    312                 END DO 
    313              END DO 
    314           END DO 
    315 !$OMP END PARALLEL 
    316285          frc_v = 0._wp                                           ! volume       trend due to forcing 
    317286          frc_t = 0._wp                                           ! heat content   -    -   -    -    
     
    319288          IF( ln_linssh ) THEN 
    320289             IF ( ln_isfcav ) THEN 
    321 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    322290                DO ji=1,jpi 
    323291                   DO jj=1,jpj 
     
    327295                ENDDO 
    328296             ELSE 
    329 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    330                 DO jj = 1, jpj 
    331                    DO ji = 1, jpi 
    332                       ssh_hc_loc_ini(ji,jj) = tsn(ji,jj,1,jp_tem) * sshn(ji,jj)   ! initial heat content in ssh 
    333                       ssh_sc_loc_ini(ji,jj) = tsn(ji,jj,1,jp_sal) * sshn(ji,jj)   ! initial salt content in ssh 
    334                    ENDDO 
    335                 ENDDO 
     297                ssh_hc_loc_ini(:,:) = tsn(:,:,1,jp_tem) * sshn(:,:)   ! initial heat content in ssh 
     298                ssh_sc_loc_ini(:,:) = tsn(:,:,1,jp_sal) * sshn(:,:)   ! initial salt content in ssh 
    336299             END IF 
    337300             frc_wn_t = 0._wp                                       ! initial heat content misfit due to free surface 
     
    382345      INTEGER ::   ierror   ! local integer 
    383346      INTEGER ::   ios 
    384       INTEGER ::   ji, jj, jk   ! dummy loop indices 
    385347      !! 
    386348      NAMELIST/namhsb/ ln_diahsb 
     
    422384      ! 2 - Time independant variables and file opening ! 
    423385      ! ----------------------------------------------- ! 
    424 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    425       DO jj = 1, jpj 
    426          DO ji = 1, jpi 
    427             surf(ji,jj) = e1t(ji,jj) * e2t(ji,jj) * tmask_i(ji,jj)      ! masked surface grid cell area 
    428          END DO 
    429       END DO 
     386      surf(:,:) = e1t(:,:) * e2t(:,:) * tmask_i(:,:)      ! masked surface grid cell area 
    430387      surf_tot  = glob_sum( surf(:,:) )                   ! total ocean surface area 
    431388 
  • trunk/NEMOGCM/NEMO/OPA_SRC/DIA/diaptr.F90

    r7698 r7753  
    6666   !!---------------------------------------------------------------------- 
    6767   !! NEMO/OPA 3.3 , NEMO Consortium (2010) 
    68    !! $Id$ 
     68   !! $Id$  
    6969   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
    7070   !!---------------------------------------------------------------------- 
     
    384384      !! ** Purpose :   Initialization, namelist read 
    385385      !!---------------------------------------------------------------------- 
    386       INTEGER ::  jn, jj, ji   ! local integers 
     386      INTEGER ::  jn           ! local integers 
    387387      INTEGER ::  inum, ierr   ! local integers 
    388388      INTEGER ::  ios          ! Local integer output status for namelist read 
     
    434434            CALL iom_get( inum, jpdom_data, 'indmsk', btmsk(:,:,4) )   ! Indian   basin 
    435435            CALL iom_close( inum ) 
    436 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    437             DO jj = 1, jpj 
    438                DO ji = 1, jpi 
    439                   btmsk(ji,jj,5) = MAX ( btmsk(ji,jj,3), btmsk(ji,jj,4) )          ! Indo-Pacific basin 
    440                   IF( gphit(ji,jj) < -30._wp) THEN   ;   btm30(ji,jj) = 0._wp      ! mask out Southern Ocean 
    441                   ELSE                               ;   btm30(ji,jj) = ssmask(ji,jj) 
    442                   END IF 
    443                END DO 
    444             END DO 
     436            btmsk(:,:,5) = MAX ( btmsk(:,:,3), btmsk(:,:,4) )          ! Indo-Pacific basin 
     437            WHERE( gphit(:,:) < -30._wp)   ;   btm30(:,:) = 0._wp      ! mask out Southern Ocean 
     438            ELSE WHERE                     ;   btm30(:,:) = ssmask(:,:) 
     439            END WHERE 
    445440         ENDIF 
    446441    
    447 !$OMP PARALLEL 
    448 !$OMP DO schedule(static) private(jj,ji) 
    449          DO jj = 1, jpj 
    450            DO ji = 1, jpi 
    451               btmsk(ji,jj,1) = tmask_i(ji,jj)                          ! global ocean 
    452            END DO 
    453          END DO 
     442         btmsk(:,:,1) = tmask_i(:,:)                                   ! global ocean 
    454443       
    455444         DO jn = 1, nptr 
    456 !$OMP DO schedule(static) private(jj,ji) 
    457             DO jj = 1, jpj 
    458                DO ji = 1, jpi 
    459                   btmsk(ji,jj,jn) = btmsk(ji,jj,jn) * tmask_i(ji,jj)               ! interior domain only 
    460                END DO 
    461             END DO 
     445            btmsk(:,:,jn) = btmsk(:,:,jn) * tmask_i(:,:)               ! interior domain only 
    462446         END DO 
    463447 
    464448         ! Initialise arrays to zero because diatpr is called before they are first calculated 
    465449         ! Note that this means diagnostics will not be exactly correct when model run is restarted. 
    466 !$OMP DO schedule(static) private(jj,ji) 
    467          DO jj = 1, jpj 
    468             DO ji = 1, jpi 
    469                htr_adv(ji,jj) = 0._wp  ;  str_adv(ji,jj) =  0._wp  
    470                htr_ldf(ji,jj) = 0._wp  ;  str_ldf(ji,jj) =  0._wp  
    471                htr_eiv(ji,jj) = 0._wp  ;  str_eiv(ji,jj) =  0._wp  
    472                htr_ove(ji,jj) = 0._wp  ;   str_ove(ji,jj) =  0._wp 
    473                htr_btr(ji,jj) = 0._wp  ;   str_btr(ji,jj) =  0._wp 
    474              END DO 
    475          END DO 
    476               ! 
    477 !$OMP END PARALLEL 
     450         htr_adv(:,:) = 0._wp  ;  str_adv(:,:) =  0._wp  
     451         htr_ldf(:,:) = 0._wp  ;  str_ldf(:,:) =  0._wp  
     452         htr_eiv(:,:) = 0._wp  ;  str_eiv(:,:) =  0._wp  
     453         htr_ove(:,:) = 0._wp  ;   str_ove(:,:) =  0._wp 
     454         htr_btr(:,:) = 0._wp  ;   str_btr(:,:) =  0._wp 
     455         ! 
    478456      ENDIF  
    479457      !  
  • trunk/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90

    r7698 r7753  
    161161      CALL iom_put(  "sst", tsn(:,:,1,jp_tem) )    ! surface temperature 
    162162      IF ( iom_use("sbt") ) THEN 
    163 !$OMP PARALLEL DO schedule(static) private(jj, ji, jkbot) 
    164163         DO jj = 1, jpj 
    165164            DO ji = 1, jpi 
     
    174173      CALL iom_put(  "sss", tsn(:,:,1,jp_sal) )    ! surface salinity 
    175174      IF ( iom_use("sbs") ) THEN 
    176 !$OMP PARALLEL DO schedule(static) private(jj, ji, jkbot) 
    177175         DO jj = 1, jpj 
    178176            DO ji = 1, jpi 
     
    185183 
    186184      IF ( iom_use("taubot") ) THEN                ! bottom stress 
    187 !$OMP PARALLEL 
    188 !$OMP DO schedule(static) private(jj, ji) 
    189          DO jj = 1, jpj 
    190             DO ji = 1, jpi 
    191                z2d(ji,jj) = 0._wp 
    192             END DO 
    193          END DO 
    194 !$OMP DO schedule(static) private(jj, ji, zztmpx,zztmpy) 
     185         z2d(:,:) = 0._wp 
    195186         DO jj = 2, jpjm1 
    196187            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    203194            ENDDO 
    204195         ENDDO 
    205 !$OMP END PARALLEL 
    206196         CALL lbc_lnk( z2d, 'T', 1. ) 
    207197         CALL iom_put( "taubot", z2d )            
     
    211201      CALL iom_put(  "ssu", un(:,:,1)         )    ! surface i-current 
    212202      IF ( iom_use("sbu") ) THEN 
    213 !$OMP PARALLEL DO schedule(static) private(jj, ji, jkbot) 
    214203         DO jj = 1, jpj 
    215204            DO ji = 1, jpi 
     
    224213      CALL iom_put(  "ssv", vn(:,:,1)         )    ! surface j-current 
    225214      IF ( iom_use("sbv") ) THEN 
    226 !$OMP PARALLEL DO schedule(static) private(jj, ji,jkbot) 
    227215         DO jj = 1, jpj 
    228216            DO ji = 1, jpi 
     
    237225      IF( iom_use('w_masstr') .OR. iom_use('w_masstr2') ) THEN   ! vertical mass transport & its square value 
    238226         ! Caution: in the VVL case, it only correponds to the baroclinic mass transport. 
    239 !$OMP PARALLEL 
    240 !$OMP DO schedule(static) private(jj, ji) 
    241          DO jj = 1, jpj 
    242             DO ji = 1, jpi 
    243                z2d(ji,jj) = rau0 * e1e2t(ji,jj) 
    244             END DO 
    245          END DO 
    246 !$OMP DO schedule(static) private(jk,jj,ji) 
     227         z2d(:,:) = rau0 * e1e2t(:,:) 
    247228         DO jk = 1, jpk 
    248             DO jj = 1, jpj 
    249                DO ji = 1, jpi 
    250                   z3d(ji,jj,jk) = wn(ji,jj,jk) * z2d(ji,jj) 
    251                END DO 
    252             END DO 
    253          END DO 
    254 !$OMP END PARALLEL 
     229            z3d(:,:,jk) = wn(:,:,jk) * z2d(:,:) 
     230         END DO 
    255231         CALL iom_put( "w_masstr" , z3d )   
    256232         IF( iom_use('w_masstr2') )   CALL iom_put( "w_masstr2", z3d(:,:,:) * z3d(:,:,:) ) 
     
    265241 
    266242      IF ( iom_use("sstgrad") .OR. iom_use("sstgrad2") ) THEN 
    267 !$OMP PARALLEL DO schedule(static) private(jj, ji, zztmp, zztmpx, zztmpy) 
    268243         DO jj = 2, jpjm1                                    ! sst gradient 
    269244            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    277252         CALL lbc_lnk( z2d, 'T', 1. ) 
    278253         CALL iom_put( "sstgrad2",  z2d               )    ! square of module of sst gradient 
    279 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    280          DO jj = 1, jpj 
    281             DO ji = 1, jpi 
    282                z2d(ji,jj) = SQRT( z2d(ji,jj) ) 
    283             END DO 
    284          END DO 
     254         z2d(:,:) = SQRT( z2d(:,:) ) 
    285255         CALL iom_put( "sstgrad" ,  z2d               )    ! module of sst gradient 
    286256      ENDIF 
     
    288258      ! clem: heat and salt content 
    289259      IF( iom_use("heatc") ) THEN 
    290 !$OMP PARALLEL 
    291 !$OMP DO schedule(static) private(jj, ji) 
    292          DO jj = 1, jpj 
    293             DO ji = 1, jpi 
    294                z2d(ji,jj) = 0._wp 
    295             END DO 
    296          END DO 
     260         z2d(:,:)  = 0._wp  
    297261         DO jk = 1, jpkm1 
    298 !$OMP DO schedule(static) private(jj, ji) 
    299262            DO jj = 1, jpj 
    300263               DO ji = 1, jpi 
     
    303266            END DO 
    304267         END DO 
    305 !$OMP END PARALLEL 
    306268         CALL iom_put( "heatc", (rau0 * rcp) * z2d )    ! vertically integrated heat content (J/m2) 
    307269      ENDIF 
    308270 
    309271      IF( iom_use("saltc") ) THEN 
    310 !$OMP PARALLEL 
    311 !$OMP DO schedule(static) private(jj, ji) 
    312          DO jj = 1, jpj 
    313             DO ji = 1, jpi 
    314                z2d(ji,jj) = 0._wp 
    315             END DO 
    316          END DO 
     272         z2d(:,:)  = 0._wp  
    317273         DO jk = 1, jpkm1 
    318 !$OMP DO schedule(static) private(jj, ji) 
    319274            DO jj = 1, jpj 
    320275               DO ji = 1, jpi 
     
    323278            END DO 
    324279         END DO 
    325 !$OMP END PARALLEL 
    326280         CALL iom_put( "saltc", rau0 * z2d )   ! vertically integrated salt content (PSU*kg/m2) 
    327281      ENDIF 
    328282      ! 
    329283      IF ( iom_use("eken") ) THEN 
    330 !$OMP PARALLEL 
    331 !$OMP DO schedule(static) private(jj, ji) 
    332          DO jj = 1, jpj 
    333             DO ji = 1, jpi 
    334                rke(ji,jj,jk) = 0._wp                               !      kinetic energy  
    335             END DO 
    336          END DO 
    337 !$OMP DO schedule(static) private(jk, jj, ji, zztmp, zztmpx, zztmpy) 
     284         rke(:,:,jk) = 0._wp                               !      kinetic energy  
    338285         DO jk = 1, jpkm1 
    339286            DO jj = 2, jpjm1 
     
    353300            ENDDO 
    354301         ENDDO 
    355 !$OMP END PARALLEL 
    356302         CALL lbc_lnk( rke, 'T', 1. ) 
    357303         CALL iom_put( "eken", rke )            
     
    361307      ! 
    362308      IF( iom_use("u_masstr") .OR. iom_use("u_masstr_vint") .OR. iom_use("u_heattr") .OR. iom_use("u_salttr") ) THEN 
    363 !$OMP PARALLEL 
    364 !$OMP DO schedule(static) private(jj, ji) 
    365          DO jj = 1, jpj 
    366             DO ji = 1, jpi 
    367                z3d(ji,jj,jpk) = 0.e0 
    368                z2d(ji,jj) = 0.e0 
    369             END DO 
    370          END DO 
     309         z3d(:,:,jpk) = 0.e0 
     310         z2d(:,:) = 0.e0 
    371311         DO jk = 1, jpkm1 
    372 !$OMP DO schedule(static) private(jj, ji) 
    373             DO jj = 1, jpj 
    374                DO ji = 1, jpi 
    375                   z3d(ji,jj,jk) = rau0 * un(ji,jj,jk) * e2u(ji,jj) * e3u_n(ji,jj,jk) * umask(ji,jj,jk) 
    376                   z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) 
    377                END DO 
    378             END DO 
    379          END DO 
    380 !$OMP END PARALLEL 
     312            z3d(:,:,jk) = rau0 * un(:,:,jk) * e2u(:,:) * e3u_n(:,:,jk) * umask(:,:,jk) 
     313            z2d(:,:) = z2d(:,:) + z3d(:,:,jk) 
     314         END DO 
    381315         CALL iom_put( "u_masstr", z3d )                  ! mass transport in i-direction 
    382316         CALL iom_put( "u_masstr_vint", z2d )             ! mass transport in i-direction vertical sum 
     
    384318       
    385319      IF( iom_use("u_heattr") ) THEN 
    386 !$OMP PARALLEL 
    387 !$OMP DO schedule(static) private(jj, ji) 
    388          DO jj = 1, jpj 
    389             DO ji = 1, jpi 
    390                z2d(ji,jj) = 0.e0 
    391             END DO 
    392          END DO 
     320         z2d(:,:) = 0.e0  
    393321         DO jk = 1, jpkm1 
    394 !$OMP DO schedule(static) private(jj, ji) 
    395322            DO jj = 2, jpjm1 
    396323               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    399326            END DO 
    400327         END DO 
    401 !$OMP END PARALLEL 
    402328         CALL lbc_lnk( z2d, 'U', -1. ) 
    403329         CALL iom_put( "u_heattr", (0.5 * rcp) * z2d )    ! heat transport in i-direction 
     
    405331 
    406332      IF( iom_use("u_salttr") ) THEN 
    407 !$OMP PARALLEL 
    408 !$OMP DO schedule(static) private(jj, ji) 
    409          DO jj = 1, jpj 
    410             DO ji = 1, jpi 
    411                z2d(ji,jj) = 0.e0 
    412             END DO 
    413          END DO 
     333         z2d(:,:) = 0.e0  
    414334         DO jk = 1, jpkm1 
    415 !$OMP DO schedule(static) private(jj, ji) 
    416335            DO jj = 2, jpjm1 
    417336               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    420339            END DO 
    421340         END DO 
    422 !$OMP END PARALLEL 
    423341         CALL lbc_lnk( z2d, 'U', -1. ) 
    424342         CALL iom_put( "u_salttr", 0.5 * z2d )            ! heat transport in i-direction 
     
    427345       
    428346      IF( iom_use("v_masstr") .OR. iom_use("v_heattr") .OR. iom_use("v_salttr") ) THEN 
    429 !$OMP PARALLEL 
    430 !$OMP DO schedule(static) private(jj, ji) 
    431          DO jj = 1, jpj 
    432             DO ji = 1, jpi 
    433                z3d(ji,jj,jpk) = 0.e0 
    434             END DO 
    435          END DO 
    436 !$OMP DO schedule(static) private(jk,jj,ji) 
     347         z3d(:,:,jpk) = 0.e0 
    437348         DO jk = 1, jpkm1 
    438             DO jj = 1, jpj 
    439                DO ji = 1, jpi 
    440                   z3d(ji,jj,jk) = rau0 * vn(ji,jj,jk) * e1v(ji,jj) * e3v_n(ji,jj,jk) * vmask(ji,jj,jk) 
    441                END DO 
    442             END DO 
    443          END DO 
    444 !$OMP END PARALLEL 
     349            z3d(:,:,jk) = rau0 * vn(:,:,jk) * e1v(:,:) * e3v_n(:,:,jk) * vmask(:,:,jk) 
     350         END DO 
    445351         CALL iom_put( "v_masstr", z3d )                  ! mass transport in j-direction 
    446352      ENDIF 
    447353       
    448354      IF( iom_use("v_heattr") ) THEN 
    449 !$OMP PARALLEL 
    450 !$OMP DO schedule(static) private(jj, ji) 
    451          DO jj = 1, jpj 
    452             DO ji = 1, jpi 
    453                z2d(ji,jj) = 0.e0 
    454             END DO 
    455          END DO 
     355         z2d(:,:) = 0.e0  
    456356         DO jk = 1, jpkm1 
    457 !$OMP DO schedule(static) private(jj, ji) 
    458357            DO jj = 2, jpjm1 
    459358               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    462361            END DO 
    463362         END DO 
    464 !$OMP END PARALLEL 
    465363         CALL lbc_lnk( z2d, 'V', -1. ) 
    466364         CALL iom_put( "v_heattr", (0.5 * rcp) * z2d )    !  heat transport in j-direction 
     
    468366 
    469367      IF( iom_use("v_salttr") ) THEN 
    470 !$OMP PARALLEL 
    471 !$OMP DO schedule(static) private(jj, ji) 
    472          DO jj = 1, jpj 
    473             DO ji = 1, jpi 
    474                z2d(ji,jj) = 0.e0 
    475             END DO 
    476          END DO 
     368         z2d(:,:) = 0.e0  
    477369         DO jk = 1, jpkm1 
    478 !$OMP DO schedule(static) private(jj, ji) 
    479370            DO jj = 2, jpjm1 
    480371               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    483374            END DO 
    484375         END DO 
    485 !$OMP END PARALLEL 
    486376         CALL lbc_lnk( z2d, 'V', -1. ) 
    487377         CALL iom_put( "v_salttr", 0.5 * z2d )            !  heat transport in j-direction 
     
    490380      ! Vertical integral of temperature 
    491381      IF( iom_use("tosmint") ) THEN 
    492 !$OMP PARALLEL 
    493 !$OMP DO schedule(static) private(jj, ji) 
    494          DO jj = 1, jpj 
    495             DO ji = 1, jpi 
    496                z2d(ji,jj) = 0.e0 
    497             END DO 
    498          END DO 
     382         z2d(:,:)=0._wp 
    499383         DO jk = 1, jpkm1 
    500 !$OMP DO schedule(static) private(jj, ji) 
    501384            DO jj = 2, jpjm1 
    502385               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    505388            END DO 
    506389         END DO 
    507 !$OMP END PARALLEL 
    508390         CALL lbc_lnk( z2d, 'T', -1. ) 
    509391         CALL iom_put( "tosmint", z2d )  
     
    512394      ! Vertical integral of salinity 
    513395      IF( iom_use("somint") ) THEN 
    514 !$OMP PARALLEL 
    515 !$OMP DO schedule(static) private(jj, ji) 
    516          DO jj = 1, jpj 
    517             DO ji = 1, jpi 
    518                z2d(ji,jj) = 0.e0 
    519             END DO 
    520          END DO 
     396         z2d(:,:)=0._wp 
    521397         DO jk = 1, jpkm1 
    522 !$OMP DO schedule(static) private(jj, ji) 
    523398            DO jj = 2, jpjm1 
    524399               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    527402            END DO 
    528403         END DO 
    529 !$OMP END PARALLEL 
    530404         CALL lbc_lnk( z2d, 'T', -1. ) 
    531405         CALL iom_put( "somint", z2d )  
     
    918792      ENDIF 
    919793      IF( .NOT.ln_linssh ) THEN 
    920 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    921          DO jk = 1, jpk 
    922             DO jj = 1, jpj 
    923                DO ji = 1, jpi 
    924                   zw3d(ji,jj,jk) = ( ( e3t_n(ji,jj,jk) - e3t_0(ji,jj,jk) ) / e3t_0(ji,jj,jk) * 100 * tmask(ji,jj,jk) ) ** 2 
    925                END DO 
    926             END DO 
    927          END DO 
     794         zw3d(:,:,:) = ( ( e3t_n(:,:,:) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 
    928795         CALL histwrite( nid_T, "vovvle3t", it, e3t_n (:,:,:) , ndim_T , ndex_T  )   ! level thickness 
    929796         CALL histwrite( nid_T, "vovvldep", it, gdept_n(:,:,:) , ndim_T , ndex_T  )   ! t-point depth 
     
    937804                                                                                  ! in linear free surface case) 
    938805      IF( ln_linssh ) THEN 
    939 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    940          DO jj = 1, jpj 
    941             DO ji = 1, jpi 
    942                zw2d(ji,jj) = emp (ji,jj) * tsn(ji,jj,1,jp_tem) 
    943             END DO 
    944          END DO 
     806         zw2d(:,:) = emp (:,:) * tsn(:,:,1,jp_tem) 
    945807         CALL histwrite( nid_T, "sosst_cd", it, zw2d, ndim_hT, ndex_hT )          ! c/d term on sst 
    946 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    947          DO jj = 1, jpj 
    948             DO ji = 1, jpi 
    949                zw2d(ji,jj) = emp (ji,jj) * tsn(ji,jj,1,jp_sal) 
    950             END DO 
    951          END DO 
     808         zw2d(:,:) = emp (:,:) * tsn(:,:,1,jp_sal) 
    952809         CALL histwrite( nid_T, "sosss_cd", it, zw2d, ndim_hT, ndex_hT )          ! c/d term on sss 
    953810      ENDIF 
     
    985842         CALL histwrite( nid_T, "sohefldp", it, qrp           , ndim_hT, ndex_hT )   ! heat flux damping 
    986843         CALL histwrite( nid_T, "sowafldp", it, erp           , ndim_hT, ndex_hT )   ! freshwater flux damping 
    987          IF( ln_ssr ) THEN 
    988 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    989             DO jj = 1, jpj 
    990                DO ji = 1, jpi 
    991                   zw2d(ji,jj) = erp(ji,jj) * tsn(ji,jj,1,jp_sal) * tmask(ji,jj,1) 
    992                END DO 
    993             END DO 
    994          END IF 
     844         IF( ln_ssr ) zw2d(:,:) = erp(:,:) * tsn(:,:,1,jp_sal) * tmask(:,:,1) 
    995845         CALL histwrite( nid_T, "sosafldp", it, zw2d          , ndim_hT, ndex_hT )   ! salt flux damping 
    996846      ENDIF 
     
    998848         CALL histwrite( nid_T, "sohefldp", it, qrp           , ndim_hT, ndex_hT )   ! heat flux damping 
    999849         CALL histwrite( nid_T, "sowafldp", it, erp           , ndim_hT, ndex_hT )   ! freshwater flux damping 
    1000          IF( ln_ssr ) THEN 
    1001 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    1002             DO jj = 1, jpj 
    1003                DO ji = 1, jpi 
    1004                   zw2d(ji,jj) = erp(ji,jj) * tsn(ji,jj,1,jp_sal) * tmask(ji,jj,1) 
    1005                END DO 
    1006             END DO 
    1007          END IF 
     850         IF( ln_ssr ) zw2d(:,:) = erp(:,:) * tsn(:,:,1,jp_sal) * tmask(:,:,1) 
    1008851         CALL histwrite( nid_T, "sosafldp", it, zw2d          , ndim_hT, ndex_hT )   ! salt flux damping 
    1009852      ENDIF 
  • trunk/NEMOGCM/NEMO/OPA_SRC/DOM/depth_e3.F90

    r7698 r7753  
    150150      REAL(wp), DIMENSION(:,:,:), INTENT(  out) ::   pdept_3d, pdepw_3d   ! depth = SUM( e3 )     [m] 
    151151      ! 
    152       INTEGER  ::   jk, jj, ji           ! dummy loop indices 
     152      INTEGER  ::   jk           ! dummy loop indices 
    153153      !!----------------------------------------------------------------------       
    154154      ! 
    155 !$OMP PARALLEL 
    156 !$OMP DO schedule(static) private(jj,ji) 
    157       DO jj = 1, jpj 
    158          DO ji = 1, jpi 
    159             pdepw_3d(ji,jj,1) = 0.0_wp 
    160             pdept_3d(ji,jj,1) = 0.5_wp * pe3w_3d(ji,jj,1) 
    161          END DO 
     155      pdepw_3d(:,:,1) = 0.0_wp 
     156      pdept_3d(:,:,1) = 0.5_wp * pe3w_3d(:,:,1) 
     157      DO jk = 2, jpk 
     158         pdepw_3d(:,:,jk) = pdepw_3d(:,:,jk-1) + pe3t_3d(:,:,jk-1)  
     159         pdept_3d(:,:,jk) = pdept_3d(:,:,jk-1) + pe3w_3d(:,:,jk  )  
    162160      END DO 
    163       DO jk = 2, jpk 
    164 !$OMP DO schedule(static) private(jj,ji) 
    165          DO jj = 1, jpj 
    166             DO ji = 1, jpi 
    167                pdepw_3d(ji,jj,jk) = pdepw_3d(ji,jj,jk-1) + pe3t_3d(ji,jj,jk-1)  
    168                pdept_3d(ji,jj,jk) = pdept_3d(ji,jj,jk-1) + pe3w_3d(ji,jj,jk  )  
    169             END DO 
    170          END DO 
    171       END DO 
    172 !$OMP END PARALLEL 
    173161      ! 
    174162   END SUBROUTINE e3_to_depth_3d 
  • trunk/NEMOGCM/NEMO/OPA_SRC/DOM/domain.F90

    r7698 r7753  
    133133      CALL dom_msk( ik_top, ik_bot )   ! Masks 
    134134      ! 
    135 !$OMP PARALLEL 
    136 !$OMP DO schedule(static) private(jj,ji,ik) 
    137135      DO jj = 1, jpj                   ! depth of the iceshelves 
    138136         DO ji = 1, jpi 
     
    142140      END DO 
    143141      ! 
    144 !$OMP END DO NOWAIT 
    145 !$OMP DO schedule(static) private(jj,ji) 
    146       DO jj = 1, jpj 
    147          DO ji = 1, jpi 
    148             ht_0(ji,jj) = 0._wp  ! Reference ocean thickness 
    149             hu_0(ji,jj) = 0._wp 
    150             hv_0(ji,jj) = 0._wp 
    151          END DO 
     142      ht_0(:,:) = 0._wp  ! Reference ocean thickness 
     143      hu_0(:,:) = 0._wp 
     144      hv_0(:,:) = 0._wp 
     145      DO jk = 1, jpk 
     146         ht_0(:,:) = ht_0(:,:) + e3t_0(:,:,jk) * tmask(:,:,jk) 
     147         hu_0(:,:) = hu_0(:,:) + e3u_0(:,:,jk) * umask(:,:,jk) 
     148         hv_0(:,:) = hv_0(:,:) + e3v_0(:,:,jk) * vmask(:,:,jk) 
    152149      END DO 
    153       DO jk = 1, jpk 
    154 !$OMP DO schedule(static) private(jj,ji,ik) 
    155          DO jj = 1, jpj 
    156             DO ji = 1, jpi 
    157                ht_0(ji,jj) = ht_0(ji,jj) + e3t_0(ji,jj,jk) * tmask(ji,jj,jk) 
    158                hu_0(ji,jj) = hu_0(ji,jj) + e3u_0(ji,jj,jk) * umask(ji,jj,jk) 
    159                hv_0(ji,jj) = hv_0(ji,jj) + e3v_0(ji,jj,jk) * vmask(ji,jj,jk) 
    160             END DO 
    161          END DO 
    162       END DO 
    163 !$OMP END PARALLEL 
    164150      ! 
    165151      !           !==  time varying part of coordinate system  ==! 
     
    180166             e3vw_b =  e3vw_0  ;    e3vw_n =  e3vw_0   !        ---          ! 
    181167         ! 
    182 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    183          DO jj =1, jpj 
    184             DO ji=1, jpi 
    185                z1_hu_0(ji,jj) = ssumask(ji,jj) / ( hu_0(ji,jj) + 1._wp - ssumask(ji,jj) )     ! _i mask due to ISF 
    186                z1_hv_0(ji,jj) = ssvmask(ji,jj) / ( hv_0(ji,jj) + 1._wp - ssvmask(ji,jj) ) 
    187             END DO 
    188          END DO 
     168         z1_hu_0(:,:) = ssumask(:,:) / ( hu_0(:,:) + 1._wp - ssumask(:,:) )     ! _i mask due to ISF 
     169         z1_hv_0(:,:) = ssvmask(:,:) / ( hv_0(:,:) + 1._wp - ssvmask(:,:) ) 
    189170         ! 
    190171         !        before       !          now          !       after         ! 
  • trunk/NEMOGCM/NEMO/OPA_SRC/DOM/domhgr.F90

    r7698 r7753  
    4040   !!---------------------------------------------------------------------- 
    4141   !! NEMO/OPA 3.7 , NEMO Consortium (2016) 
    42    !! $Id$ 
     42   !! $Id$  
    4343   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
    4444   !!---------------------------------------------------------------------- 
     
    117117      IF( iff == 0 ) THEN                 ! Coriolis parameter has not been defined  
    118118         IF(lwp) WRITE(numout,*) '          Coriolis parameter calculated on the sphere from gphif & gphit' 
    119 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    120          DO jj = 1, jpj 
    121             DO ji = 1, jpi 
    122                ff_f(ji,jj) = 2. * omega * SIN( rad * gphif(ji,jj) )     ! compute it on the sphere at f-point 
    123                ff_t(ji,jj) = 2. * omega * SIN( rad * gphit(ji,jj) )     !    -        -       -    at t-point 
    124             END DO 
    125          END DO 
     119         ff_f(:,:) = 2. * omega * SIN( rad * gphif(:,:) )     ! compute it on the sphere at f-point 
     120         ff_t(:,:) = 2. * omega * SIN( rad * gphit(:,:) )     !    -        -       -    at t-point 
    126121      ELSE 
    127122         IF( ln_read_cfg ) THEN 
     
    135130      !                             !==  associated horizontal metrics  ==! 
    136131      ! 
    137 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    138       DO jj = 1, jpj 
    139          DO ji = 1, jpi 
    140             r1_e1t(ji,jj) = 1._wp / e1t(ji,jj)   ;   r1_e2t (ji,jj) = 1._wp / e2t(ji,jj) 
    141             r1_e1u(ji,jj) = 1._wp / e1u(ji,jj)   ;   r1_e2u (ji,jj) = 1._wp / e2u(ji,jj) 
    142             r1_e1v(ji,jj) = 1._wp / e1v(ji,jj)   ;   r1_e2v (ji,jj) = 1._wp / e2v(ji,jj) 
    143             r1_e1f(ji,jj) = 1._wp / e1f(ji,jj)   ;   r1_e2f (ji,jj) = 1._wp / e2f(ji,jj) 
    144             ! 
    145             e1e2t (ji,jj) = e1t(ji,jj) * e2t(ji,jj)   ;   r1_e1e2t(ji,jj) = 1._wp / e1e2t(ji,jj) 
    146             e1e2f (ji,jj) = e1f(ji,jj) * e2f(ji,jj)   ;   r1_e1e2f(ji,jj) = 1._wp / e1e2f(ji,jj) 
    147          END DO 
    148       END DO 
     132      r1_e1t(:,:) = 1._wp / e1t(:,:)   ;   r1_e2t (:,:) = 1._wp / e2t(:,:) 
     133      r1_e1u(:,:) = 1._wp / e1u(:,:)   ;   r1_e2u (:,:) = 1._wp / e2u(:,:) 
     134      r1_e1v(:,:) = 1._wp / e1v(:,:)   ;   r1_e2v (:,:) = 1._wp / e2v(:,:) 
     135      r1_e1f(:,:) = 1._wp / e1f(:,:)   ;   r1_e2f (:,:) = 1._wp / e2f(:,:) 
     136      ! 
     137      e1e2t (:,:) = e1t(:,:) * e2t(:,:)   ;   r1_e1e2t(:,:) = 1._wp / e1e2t(:,:) 
     138      e1e2f (:,:) = e1f(:,:) * e2f(:,:)   ;   r1_e1e2f(:,:) = 1._wp / e1e2f(:,:) 
    149139      IF( ie1e2u_v == 0 ) THEN               ! u- & v-surfaces have not been defined 
    150140         IF(lwp) WRITE(numout,*) '          u- & v-surfaces calculated as e1 e2 product' 
    151 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    152          DO jj = 1, jpj 
    153             DO ji = 1, jpi 
    154                e1e2u (ji,jj) = e1u(ji,jj) * e2u(ji,jj)         ! compute them 
    155                e1e2v (ji,jj) = e1v(ji,jj) * e2v(ji,jj)  
    156             END DO 
    157          END DO 
     141         e1e2u (:,:) = e1u(:,:) * e2u(:,:)         ! compute them 
     142         e1e2v (:,:) = e1v(:,:) * e2v(:,:)  
    158143      ELSE 
    159144         IF(lwp) WRITE(numout,*) '          u- & v-surfaces have been read in "mesh_mask" file:' 
    160145         IF(lwp) WRITE(numout,*) '                     grid size reduction in strait(s) is used' 
    161146      ENDIF 
    162 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    163       DO jj = 1, jpj 
    164          DO ji = 1, jpi 
    165             r1_e1e2u(ji,jj) = 1._wp / e1e2u(ji,jj)     ! compute their invert in any cases 
    166             r1_e1e2v(ji,jj) = 1._wp / e1e2v(ji,jj) 
    167             !    
    168             e2_e1u(ji,jj) = e2u(ji,jj) / e1u(ji,jj) 
    169             e1_e2v(ji,jj) = e1v(ji,jj) / e2v(ji,jj) 
    170          END DO 
    171       END DO 
     147      r1_e1e2u(:,:) = 1._wp / e1e2u(:,:)     ! compute their invert in any cases 
     148      r1_e1e2v(:,:) = 1._wp / e1e2v(:,:) 
     149      !    
     150      e2_e1u(:,:) = e2u(:,:) / e1u(:,:) 
     151      e1_e2v(:,:) = e1v(:,:) / e2v(:,:) 
    172152      ! 
    173153      ! 
  • trunk/NEMOGCM/NEMO/OPA_SRC/DOM/dommsk.F90

    r7698 r7753  
    4747   !!---------------------------------------------------------------------- 
    4848   !! NEMO/OPA 3.2 , LODYC-IPSL  (2009) 
    49    !! $Id$ 
     49   !! $Id$  
    5050   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
    5151   !!---------------------------------------------------------------------- 
     
    137137      ! ---------------------------- 
    138138      ! 
    139 !$OMP PARALLEL 
    140 !$OMP DO schedule(static) private(jk, jj, ji) 
    141       DO jk = 1, jpk 
    142          DO jj = 1, jpj 
    143             DO ji = 1, jpi 
    144                tmask(ji,jj,jk) = 0._wp 
    145             END DO 
    146          END DO 
    147       END DO 
    148 !$OMP DO schedule(static) private(jj, ji, iktop, ikbot) 
     139      tmask(:,:,:) = 0._wp 
    149140      DO jj = 1, jpj 
    150141         DO ji = 1, jpi 
     
    156147         END DO   
    157148      END DO   
    158 !$OMP END PARALLEL 
    159149!SF  add here lbc_lnk: bug not still understood : cause now domain configuration is read ! 
    160150!!gm I don't understand why...   
     
    171161      ! ------------------------ 
    172162      IF ( ln_bdy .AND. ln_mask_file ) THEN 
    173 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    174163         DO jk = 1, jpkm1 
    175164            DO jj = 1, jpj 
     
    184173      ! ---------------------------------------- 
    185174      ! NB: at this point, fmask is designed for free slip lateral boundary condition 
    186 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    187175      DO jk = 1, jpk 
    188176         DO jj = 1, jpjm1 
     
    204192      ! Ocean/land mask at wu-, wv- and w points    (computed from tmask) 
    205193      !----------------------------------------- 
    206 !$OMP PARALLEL 
    207 !$OMP DO schedule(static) private(jj, ji) 
    208       DO jj = 1, jpj 
    209          DO ji = 1, jpi 
    210             wmask (ji,jj,1) = tmask(ji,jj,1)     ! surface 
    211             wumask(ji,jj,1) = umask(ji,jj,1) 
    212             wvmask(ji,jj,1) = vmask(ji,jj,1) 
    213          END DO 
     194      wmask (:,:,1) = tmask(:,:,1)     ! surface 
     195      wumask(:,:,1) = umask(:,:,1) 
     196      wvmask(:,:,1) = vmask(:,:,1) 
     197      DO jk = 2, jpk                   ! interior values 
     198         wmask (:,:,jk) = tmask(:,:,jk) * tmask(:,:,jk-1) 
     199         wumask(:,:,jk) = umask(:,:,jk) * umask(:,:,jk-1)    
     200         wvmask(:,:,jk) = vmask(:,:,jk) * vmask(:,:,jk-1) 
    214201      END DO 
    215 !$OMP DO schedule(static) private(jk,jj,ji) 
    216       DO jk = 2, jpk                   ! interior values 
    217          DO jj = 1, jpj 
    218             DO ji = 1, jpi 
    219                wmask (ji,jj,jk) = tmask(ji,jj,jk) * tmask(ji,jj,jk-1) 
    220                wumask(ji,jj,jk) = umask(ji,jj,jk) * umask(ji,jj,jk-1)    
    221                wvmask(ji,jj,jk) = vmask(ji,jj,jk) * vmask(ji,jj,jk-1) 
    222             END DO 
    223          END DO 
    224       END DO 
    225 !$OMP END PARALLEL 
    226202 
    227203 
     
    240216      ! 
    241217      !                          ! halo mask : 0 on the halo and 1 elsewhere 
    242 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    243       DO jj = 1, jpj 
    244          DO ji = 1, jpi 
    245             tmask_h(ji,jj) = 1._wp                   
    246          END DO 
    247       END DO 
     218      tmask_h(:,:) = 1._wp                   
    248219      tmask_h( 1 :iif,   :   ) = 0._wp      ! first columns 
    249220      tmask_h(iil:jpi,   :   ) = 0._wp      ! last  columns (including mpp extra columns) 
     
    270241      ! 
    271242      !                          ! interior mask : 2D ocean mask x halo mask  
    272 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    273       DO jj = 1, jpj 
    274          DO ji = 1, jpi 
    275             tmask_i(ji,jj) = ssmask(ji,jj) * tmask_h(ji,jj) 
    276          END DO 
    277       END DO 
     243      tmask_i(:,:) = ssmask(:,:) * tmask_h(:,:) 
    278244 
    279245 
     
    284250         CALL wrk_alloc( jpi,jpj,   zwf ) 
    285251         ! 
    286 !$OMP PARALLEL 
    287252         DO jk = 1, jpk 
    288 !$OMP DO schedule(static) private(jj, ji) 
    289             DO jj = 1, jpj 
    290                DO ji = 1, jpi 
    291                   zwf(ji,jj) = fmask(ji,jj,jk)          
    292                END DO 
    293             END DO 
    294 !$OMP DO schedule(static) private(jj, ji) 
     253            zwf(:,:) = fmask(:,:,jk)          
    295254            DO jj = 2, jpjm1 
    296255               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    301260               END DO 
    302261            END DO 
    303 !$OMP DO schedule(static) private(jj) 
    304262            DO jj = 2, jpjm1 
    305263               IF( fmask(1,jj,jk) == 0._wp ) THEN 
     
    310268               ENDIF 
    311269            END DO          
    312 !$OMP DO schedule(static) private(ji) 
    313270            DO ji = 2, jpim1 
    314271               IF( fmask(ji,1,jk) == 0._wp ) THEN 
     
    320277            END DO 
    321278         END DO 
    322 !$OMP END PARALLEL 
    323279         ! 
    324280         CALL wrk_dealloc( jpi,jpj,   zwf ) 
  • trunk/NEMOGCM/NEMO/OPA_SRC/DOM/domvvl.F90

    r7698 r7753  
    135135      !                    ! Read or initialize e3t_(b/n), tilde_e3t_(b/n) and hdiv_lf 
    136136      CALL dom_vvl_rst( nit000, 'READ' ) 
    137 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    138       DO jj = 1, jpj 
    139          DO ji = 1, jpi 
    140             e3t_a(ji,jj,jpk) = e3t_0(ji,jj,jpk)  ! last level always inside the sea floor set one for all 
    141          END DO 
    142       END DO 
     137      e3t_a(:,:,jpk) = e3t_0(:,:,jpk)  ! last level always inside the sea floor set one for all 
    143138      ! 
    144139      !                    !== Set of all other vertical scale factors  ==!  (now and before) 
     
    158153      ! 
    159154      !                    !==  depth of t and w-point  ==!   (set the isf depth as it is in the initial timestep) 
    160 !$OMP PARALLEL 
    161 !$OMP DO schedule(static) private(jj,ji) 
    162       DO jj = 1, jpj 
    163          DO ji = 1, jpi 
    164             gdept_n(ji,jj,1) = 0.5_wp * e3w_n(ji,jj,1)       ! reference to the ocean surface (used for MLD and light penetration) 
    165             gdepw_n(ji,jj,1) = 0.0_wp 
    166             gde3w_n(ji,jj,1) = gdept_n(ji,jj,1) - sshn(ji,jj)  ! reference to a common level z=0 for hpg 
    167             gdept_b(ji,jj,1) = 0.5_wp * e3w_b(ji,jj,1) 
    168             gdepw_b(ji,jj,1) = 0.0_wp 
    169          END DO 
    170       END DO 
     155      gdept_n(:,:,1) = 0.5_wp * e3w_n(:,:,1)       ! reference to the ocean surface (used for MLD and light penetration) 
     156      gdepw_n(:,:,1) = 0.0_wp 
     157      gde3w_n(:,:,1) = gdept_n(:,:,1) - sshn(:,:)  ! reference to a common level z=0 for hpg 
     158      gdept_b(:,:,1) = 0.5_wp * e3w_b(:,:,1) 
     159      gdepw_b(:,:,1) = 0.0_wp 
    171160      DO jk = 2, jpk                               ! vertical sum 
    172 !$OMP DO schedule(static) private(jj,ji,zcoef) 
    173161         DO jj = 1,jpj 
    174162            DO ji = 1,jpi 
     
    190178      ! 
    191179      !                    !==  thickness of the water column  !!   (ocean portion only) 
    192 !$OMP DO schedule(static) private(jj,ji) 
    193       DO jj = 1, jpj 
    194          DO ji = 1, jpi 
    195             ht_n(ji,jj) = e3t_n(ji,jj,1) * tmask(ji,jj,1)   !!gm  BUG  :  this should be 1/2 * e3w(k=1) .... 
    196             hu_b(ji,jj) = e3u_b(ji,jj,1) * umask(ji,jj,1) 
    197             hu_n(ji,jj) = e3u_n(ji,jj,1) * umask(ji,jj,1) 
    198             hv_b(ji,jj) = e3v_b(ji,jj,1) * vmask(ji,jj,1) 
    199             hv_n(ji,jj) = e3v_n(ji,jj,1) * vmask(ji,jj,1) 
    200          END DO 
     180      ht_n(:,:) = e3t_n(:,:,1) * tmask(:,:,1)   !!gm  BUG  :  this should be 1/2 * e3w(k=1) .... 
     181      hu_b(:,:) = e3u_b(:,:,1) * umask(:,:,1) 
     182      hu_n(:,:) = e3u_n(:,:,1) * umask(:,:,1) 
     183      hv_b(:,:) = e3v_b(:,:,1) * vmask(:,:,1) 
     184      hv_n(:,:) = e3v_n(:,:,1) * vmask(:,:,1) 
     185      DO jk = 2, jpkm1 
     186         ht_n(:,:) = ht_n(:,:) + e3t_n(:,:,jk) * tmask(:,:,jk) 
     187         hu_b(:,:) = hu_b(:,:) + e3u_b(:,:,jk) * umask(:,:,jk) 
     188         hu_n(:,:) = hu_n(:,:) + e3u_n(:,:,jk) * umask(:,:,jk) 
     189         hv_b(:,:) = hv_b(:,:) + e3v_b(:,:,jk) * vmask(:,:,jk) 
     190         hv_n(:,:) = hv_n(:,:) + e3v_n(:,:,jk) * vmask(:,:,jk) 
    201191      END DO 
    202       DO jk = 2, jpkm1 
    203 !$OMP DO schedule(static) private(jj,ji) 
    204          DO jj = 1, jpj 
    205             DO ji = 1, jpi 
    206                ht_n(ji,jj) = ht_n(ji,jj) + e3t_n(ji,jj,jk) * tmask(ji,jj,jk) 
    207                hu_b(ji,jj) = hu_b(ji,jj) + e3u_b(ji,jj,jk) * umask(ji,jj,jk) 
    208                hu_n(ji,jj) = hu_n(ji,jj) + e3u_n(ji,jj,jk) * umask(ji,jj,jk) 
    209                hv_b(ji,jj) = hv_b(ji,jj) + e3v_b(ji,jj,jk) * vmask(ji,jj,jk) 
    210                hv_n(ji,jj) = hv_n(ji,jj) + e3v_n(ji,jj,jk) * vmask(ji,jj,jk) 
    211             END DO 
    212          END DO 
    213       END DO 
    214192      ! 
    215193      !                    !==  inverse of water column thickness   ==!   (u- and v- points) 
    216 !$OMP DO schedule(static) private(jj,ji) 
    217       DO jj = 1, jpj 
    218          DO ji = 1, jpi 
    219             r1_hu_b(ji,jj) = ssumask(ji,jj) / ( hu_b(ji,jj) + 1._wp - ssumask(ji,jj) )    ! _i mask due to ISF 
    220             r1_hu_n(ji,jj) = ssumask(ji,jj) / ( hu_n(ji,jj) + 1._wp - ssumask(ji,jj) ) 
    221             r1_hv_b(ji,jj) = ssvmask(ji,jj) / ( hv_b(ji,jj) + 1._wp - ssvmask(ji,jj) ) 
    222             r1_hv_n(ji,jj) = ssvmask(ji,jj) / ( hv_n(ji,jj) + 1._wp - ssvmask(ji,jj) ) 
    223          END DO 
    224       END DO 
    225 !$OMP END PARALLEL 
     194      r1_hu_b(:,:) = ssumask(:,:) / ( hu_b(:,:) + 1._wp - ssumask(:,:) )    ! _i mask due to ISF 
     195      r1_hu_n(:,:) = ssumask(:,:) / ( hu_n(:,:) + 1._wp - ssumask(:,:) ) 
     196      r1_hv_b(:,:) = ssvmask(:,:) / ( hv_b(:,:) + 1._wp - ssvmask(:,:) ) 
     197      r1_hv_n(:,:) = ssvmask(:,:) / ( hv_n(:,:) + 1._wp - ssvmask(:,:) ) 
     198 
    226199      !                    !==   z_tilde coordinate case  ==!   (Restoring frequencies) 
    227200      IF( ln_vvl_ztilde ) THEN 
     
    229202         !                                   ! Values in days provided via the namelist 
    230203         !                                   ! use rsmall to avoid possible division by zero errors with faulty settings 
    231 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    232          DO jj = 1, jpj 
    233             DO ji = 1, jpi 
    234                frq_rst_e3t(ji,jj) = 2._wp * rpi / ( MAX( rn_rst_e3t  , rsmall ) * 86400.0_wp ) 
    235                frq_rst_hdv(ji,jj) = 2._wp * rpi / ( MAX( rn_lf_cutoff, rsmall ) * 86400.0_wp ) 
    236             END DO 
    237          END DO 
     204         frq_rst_e3t(:,:) = 2._wp * rpi / ( MAX( rn_rst_e3t  , rsmall ) * 86400.0_wp ) 
     205         frq_rst_hdv(:,:) = 2._wp * rpi / ( MAX( rn_lf_cutoff, rsmall ) * 86400.0_wp ) 
    238206         ! 
    239207         IF( ln_vvl_ztilde_as_zstar ) THEN   ! z-star emulation using z-tile 
    240 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    241             DO jj = 1, jpj 
    242                DO ji = 1, jpi 
    243                   frq_rst_e3t(ji,jj) = 0._wp               !Ignore namelist settings 
    244                   frq_rst_hdv(ji,jj) = 1._wp / rdt 
    245                END DO 
    246             END DO 
     208            frq_rst_e3t(:,:) = 0._wp               !Ignore namelist settings 
     209            frq_rst_hdv(:,:) = 1._wp / rdt 
    247210         ENDIF 
    248211         IF ( ln_vvl_zstar_at_eqtor ) THEN   ! use z-star in vicinity of the Equator 
    249 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    250212            DO jj = 1, jpj 
    251213               DO ji = 1, jpi 
     
    343305      !                                                ! --------------------------------------------- ! 
    344306      ! 
    345 !$OMP PARALLEL 
    346 !$OMP DO schedule(static) private(jj,ji) 
    347       DO jj = 1, jpj 
    348          DO ji = 1, jpi 
    349             z_scale(ji,jj) = ( ssha(ji,jj) - sshb(ji,jj) ) * ssmask(ji,jj) / ( ht_0(ji,jj) + sshn(ji,jj) + 1. - ssmask(ji,jj) ) 
    350          END DO 
     307      z_scale(:,:) = ( ssha(:,:) - sshb(:,:) ) * ssmask(:,:) / ( ht_0(:,:) + sshn(:,:) + 1. - ssmask(:,:) ) 
     308      DO jk = 1, jpkm1 
     309         ! formally this is the same as e3t_a = e3t_0*(1+ssha/ht_0) 
     310         e3t_a(:,:,jk) = e3t_b(:,:,jk) + e3t_n(:,:,jk) * z_scale(:,:) * tmask(:,:,jk) 
    351311      END DO 
    352 !$OMP DO schedule(static) private(jk,jj,ji) 
    353       DO jk = 1, jpkm1 
    354          DO jj = 1, jpj 
    355             DO ji = 1, jpi 
    356                ! formally this is the same as e3t_a = e3t_0*(1+ssha/ht_0) 
    357                e3t_a(ji,jj,jk) = e3t_b(ji,jj,jk) + e3t_n(ji,jj,jk) * z_scale(ji,jj) * tmask(ji,jj,jk) 
    358             END DO 
    359          END DO 
    360       END DO 
    361 !$OMP END PARALLEL 
    362312      ! 
    363313      IF( ln_vvl_ztilde .OR. ln_vvl_layer .AND. ll_do_bclinic ) THEN   ! z_tilde or layer coordinate ! 
     
    368318         ! 1 - barotropic divergence 
    369319         ! ------------------------- 
    370 !$OMP PARALLEL 
    371 !$OMP DO schedule(static) private(jj,ji) 
    372          DO jj = 1, jpj 
    373             DO ji = 1, jpi 
    374                zhdiv(ji,jj) = 0._wp 
    375                zht(ji,jj)   = 0._wp 
    376             END DO 
    377          END DO 
     320         zhdiv(:,:) = 0._wp 
     321         zht(:,:)   = 0._wp 
    378322         DO jk = 1, jpkm1 
    379 !$OMP DO schedule(static) private(jj,ji) 
    380             DO jj = 1, jpj 
    381                DO ji = 1, jpi 
    382                   zhdiv(ji,jj) = zhdiv(ji,jj) + e3t_n(ji,jj,jk) * hdivn(ji,jj,jk) 
    383                   zht  (ji,jj) = zht  (ji,jj) + e3t_n(ji,jj,jk) * tmask(ji,jj,jk) 
    384                END DO 
    385             END DO 
    386          END DO 
    387 !$OMP DO schedule(static) private(jj,ji) 
    388          DO jj = 1, jpj 
    389             DO ji = 1, jpi 
    390                zhdiv(ji,jj) = zhdiv(ji,jj) / ( zht(ji,jj) + 1. - tmask_i(ji,jj) ) 
    391             END DO 
    392          END DO 
    393 !$OMP END PARALLEL 
     323            zhdiv(:,:) = zhdiv(:,:) + e3t_n(:,:,jk) * hdivn(:,:,jk) 
     324            zht  (:,:) = zht  (:,:) + e3t_n(:,:,jk) * tmask(:,:,jk) 
     325         END DO 
     326         zhdiv(:,:) = zhdiv(:,:) / ( zht(:,:) + 1. - tmask_i(:,:) ) 
    394327 
    395328         ! 2 - Low frequency baroclinic horizontal divergence  (z-tilde case only) 
     
    397330         IF( ln_vvl_ztilde ) THEN 
    398331            IF( kt > nit000 ) THEN 
    399 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    400332               DO jk = 1, jpkm1 
    401                   DO jj = 1, jpj 
    402                      DO ji = 1, jpi 
    403                         hdiv_lf(ji,jj,jk) = hdiv_lf(ji,jj,jk) - rdt * frq_rst_hdv(ji,jj)   & 
    404                            &          * ( hdiv_lf(ji,jj,jk) - e3t_n(ji,jj,jk) * ( hdivn(ji,jj,jk) - zhdiv(ji,jj) ) ) 
    405                      END DO 
    406                   END DO 
     333                  hdiv_lf(:,:,jk) = hdiv_lf(:,:,jk) - rdt * frq_rst_hdv(:,:)   & 
     334                     &          * ( hdiv_lf(:,:,jk) - e3t_n(:,:,jk) * ( hdivn(:,:,jk) - zhdiv(:,:) ) ) 
    407335               END DO 
    408336            ENDIF 
     
    411339         ! II - after z_tilde increments of vertical scale factors 
    412340         ! ======================================================= 
    413 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    414          DO jk = 1, jpk 
    415             DO jj = 1, jpj 
    416                DO ji = 1, jpi 
    417                   tilde_e3t_a(ji,jj,jk) = 0._wp  ! tilde_e3t_a used to store tendency terms 
    418                END DO 
    419             END DO 
    420          END DO 
     341         tilde_e3t_a(:,:,:) = 0._wp  ! tilde_e3t_a used to store tendency terms 
    421342 
    422343         ! 1 - High frequency divergence term 
    423344         ! ---------------------------------- 
    424345         IF( ln_vvl_ztilde ) THEN     ! z_tilde case 
    425 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    426346            DO jk = 1, jpkm1 
    427                DO jj = 1, jpj 
    428                   DO ji = 1, jpi 
    429                      tilde_e3t_a(ji,jj,jk) = tilde_e3t_a(ji,jj,jk) - ( e3t_n(ji,jj,jk) * ( hdivn(ji,jj,jk) - zhdiv(ji,jj) ) - hdiv_lf(ji,jj,jk) ) 
    430                   END DO 
    431                END DO 
     347               tilde_e3t_a(:,:,jk) = tilde_e3t_a(:,:,jk) - ( e3t_n(:,:,jk) * ( hdivn(:,:,jk) - zhdiv(:,:) ) - hdiv_lf(:,:,jk) ) 
    432348            END DO 
    433349         ELSE                         ! layer case 
    434 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    435350            DO jk = 1, jpkm1 
    436                DO jj = 1, jpj 
    437                   DO ji = 1, jpi 
    438                      tilde_e3t_a(ji,jj,jk) = tilde_e3t_a(ji,jj,jk) -   e3t_n(ji,jj,jk) * ( hdivn(ji,jj,jk) - zhdiv(ji,jj) ) * tmask(ji,jj,jk) 
    439                   END DO 
    440                END DO 
     351               tilde_e3t_a(:,:,jk) = tilde_e3t_a(:,:,jk) -   e3t_n(:,:,jk) * ( hdivn(:,:,jk) - zhdiv(:,:) ) * tmask(:,:,jk) 
    441352            END DO 
    442353         ENDIF 
     
    445356         ! ------------------ 
    446357         IF( ln_vvl_ztilde ) THEN 
    447 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    448358            DO jk = 1, jpk 
    449                DO jj = 1, jpj 
    450                   DO ji = 1, jpi 
    451                      tilde_e3t_a(ji,jj,jk) = tilde_e3t_a(ji,jj,jk) - frq_rst_e3t(ji,jj) * tilde_e3t_b(ji,jj,jk) 
    452                   END DO 
    453                END DO 
     359               tilde_e3t_a(:,:,jk) = tilde_e3t_a(:,:,jk) - frq_rst_e3t(:,:) * tilde_e3t_b(:,:,jk) 
    454360            END DO 
    455361         ENDIF 
     
    457363         ! 3 - Thickness diffusion term 
    458364         ! ---------------------------- 
    459 !$OMP PARALLEL 
    460 !$OMP DO schedule(static) private(jj,ji) 
    461          DO jj = 1, jpj 
    462             DO ji = 1, jpi 
    463                zwu(ji,jj) = 0._wp 
    464                zwv(ji,jj) = 0._wp 
    465             END DO 
    466          END DO 
     365         zwu(:,:) = 0._wp 
     366         zwv(:,:) = 0._wp 
    467367         DO jk = 1, jpkm1        ! a - first derivative: diffusive fluxes 
    468 !$OMP DO schedule(static) private(jj,ji) 
    469368            DO jj = 1, jpjm1 
    470369               DO ji = 1, fs_jpim1   ! vector opt. 
     
    478377            END DO 
    479378         END DO 
    480 !$OMP DO schedule(static) private(jj,ji) 
    481379         DO jj = 1, jpj          ! b - correction for last oceanic u-v points 
    482380            DO ji = 1, jpi 
     
    485383            END DO 
    486384         END DO 
    487 !$OMP DO schedule(static) private(jk,jj,ji) 
    488385         DO jk = 1, jpkm1        ! c - second derivative: divergence of diffusive fluxes 
    489386            DO jj = 2, jpjm1 
     
    495392            END DO 
    496393         END DO 
    497 !$OMP END PARALLEL 
    498394         !                       ! d - thickness diffusion transport: boundary conditions 
    499395         !                             (stored for tracer advction and continuity equation) 
     
    511407         ENDIF 
    512408         CALL lbc_lnk( tilde_e3t_a(:,:,:), 'T', 1._wp ) 
    513 !$OMP PARALLEL  
    514 !$OMP DO schedule(static) private(jk,jj,ji) 
    515          DO jk = 1, jpk 
    516             DO jj = 1, jpj 
    517                DO ji = 1, jpi 
    518                   tilde_e3t_a(ji,jj,jk) = tilde_e3t_b(ji,jj,jk) + z2dt * tmask(ji,jj,jk) * tilde_e3t_a(ji,jj,jk) 
    519                END DO 
    520             END DO 
    521          END DO 
     409         tilde_e3t_a(:,:,:) = tilde_e3t_b(:,:,:) + z2dt * tmask(:,:,:) * tilde_e3t_a(:,:,:) 
    522410 
    523411         ! Maximum deformation control 
    524412         ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    525 !$OMP DO schedule(static) private(jj,ji) 
    526          DO jj = 1, jpj 
    527             DO ji = 1, jpi 
    528                ze3t(ji,jj,jpk) = 0._wp 
    529             END DO 
    530          END DO 
    531 !$OMP DO schedule(static) private(jk,jj,ji) 
     413         ze3t(:,:,jpk) = 0._wp 
    532414         DO jk = 1, jpkm1 
    533             DO jj = 1, jpj 
    534                DO ji = 1, jpi 
    535                   ze3t(ji,jj,jk) = tilde_e3t_a(ji,jj,jk) / e3t_0(ji,jj,jk) * tmask(ji,jj,jk) * tmask_i(ji,jj) 
    536                END DO 
    537             END DO 
    538          END DO 
    539 !$OMP END PARALLEL 
     415            ze3t(:,:,jk) = tilde_e3t_a(:,:,jk) / e3t_0(:,:,jk) * tmask(:,:,jk) * tmask_i(:,:) 
     416         END DO 
    540417         z_tmax = MAXVAL( ze3t(:,:,:) ) 
    541418         IF( lk_mpp )   CALL mpp_max( z_tmax )                 ! max over the global domain 
     
    565442         ! - ML - end test 
    566443         ! - ML - Imposing these limits will cause a baroclinicity error which is corrected for below 
    567 !$OMP PARALLEL 
    568 !$OMP DO schedule(static) private(jk,jj,ji) 
    569          DO jk = 1, jpk 
    570             DO jj = 1, jpj 
    571                DO ji = 1, jpi 
    572                   tilde_e3t_a(ji,jj,jk) = MIN( tilde_e3t_a(ji,jj,jk),   rn_zdef_max * e3t_0(ji,jj,jk) ) 
    573                   tilde_e3t_a(ji,jj,jk) = MAX( tilde_e3t_a(ji,jj,jk), - rn_zdef_max * e3t_0(ji,jj,jk) ) 
    574                END DO 
    575             END DO 
    576          END DO 
     444         tilde_e3t_a(:,:,:) = MIN( tilde_e3t_a(:,:,:),   rn_zdef_max * e3t_0(:,:,:) ) 
     445         tilde_e3t_a(:,:,:) = MAX( tilde_e3t_a(:,:,:), - rn_zdef_max * e3t_0(:,:,:) ) 
    577446 
    578447         ! 
    579448         ! "tilda" change in the after scale factor 
    580449         ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    581 !$OMP DO schedule(static) private(jk,jj,ji) 
    582450         DO jk = 1, jpkm1 
    583             DO jj = 1, jpj 
    584                DO ji = 1, jpi 
    585                   dtilde_e3t_a(ji,jj,jk) = tilde_e3t_a(ji,jj,jk) - tilde_e3t_b(ji,jj,jk) 
    586                END DO 
    587             END DO 
     451            dtilde_e3t_a(:,:,jk) = tilde_e3t_a(:,:,jk) - tilde_e3t_b(:,:,jk) 
    588452         END DO 
    589453         ! III - Barotropic repartition of the sea surface height over the baroclinic profile 
     
    593457         !        i.e. locally and not spread over the water column. 
    594458         !        (keep in mind that the idea is to reduce Eulerian velocity as much as possible) 
    595 !$OMP DO schedule(static) private(jj,ji) 
    596          DO jj = 1, jpj 
    597             DO ji = 1, jpi 
    598                zht(ji,jj) = 0. 
    599             END DO 
    600          END DO 
     459         zht(:,:) = 0. 
    601460         DO jk = 1, jpkm1 
    602 !$OMP DO schedule(static) private(jj,ji) 
    603             DO jj = 1, jpj 
    604                DO ji = 1, jpi 
    605                   zht(ji,jj)  = zht(ji,jj) + tilde_e3t_a(ji,jj,jk) * tmask(ji,jj,jk) 
    606                END DO 
    607             END DO 
    608          END DO 
    609 !$OMP DO schedule(static) private(jj,ji) 
    610          DO jj = 1, jpj 
    611             DO ji = 1, jpi 
    612                z_scale(ji,jj) =  - zht(ji,jj) / ( ht_0(ji,jj) + sshn(ji,jj) + 1. - ssmask(ji,jj) ) 
    613             END DO 
    614          END DO 
    615 !$OMP DO schedule(static) private(jk,jj,ji) 
     461            zht(:,:)  = zht(:,:) + tilde_e3t_a(:,:,jk) * tmask(:,:,jk) 
     462         END DO 
     463         z_scale(:,:) =  - zht(:,:) / ( ht_0(:,:) + sshn(:,:) + 1. - ssmask(:,:) ) 
    616464         DO jk = 1, jpkm1 
    617             DO jj = 1, jpj 
    618                DO ji = 1, jpi 
    619                   dtilde_e3t_a(ji,jj,jk) = dtilde_e3t_a(ji,jj,jk) + e3t_n(ji,jj,jk) * z_scale(ji,jj) * tmask(ji,jj,jk) 
    620                END DO 
    621             END DO 
    622          END DO 
    623 !$OMP END PARALLEL 
     465            dtilde_e3t_a(:,:,jk) = dtilde_e3t_a(:,:,jk) + e3t_n(:,:,jk) * z_scale(:,:) * tmask(:,:,jk) 
     466         END DO 
     467 
    624468      ENDIF 
    625469 
    626470      IF( ln_vvl_ztilde .OR. ln_vvl_layer )  THEN   ! z_tilde or layer coordinate ! 
    627471      !                                           ! ---baroclinic part--------- ! 
    628 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    629472         DO jk = 1, jpkm1 
    630             DO jj = 1, jpj 
    631                DO ji = 1, jpi 
    632                   e3t_a(ji,jj,jk) = e3t_a(ji,jj,jk) + dtilde_e3t_a(ji,jj,jk) * tmask(ji,jj,jk) 
    633                END DO 
    634             END DO 
     473            e3t_a(:,:,jk) = e3t_a(:,:,jk) + dtilde_e3t_a(:,:,jk) * tmask(:,:,jk) 
    635474         END DO 
    636475      ENDIF 
     
    645484         END IF 
    646485         ! 
    647 !$OMP PARALLEL 
    648 !$OMP DO schedule(static) private(jj,ji) 
    649          DO jj = 1, jpj 
    650             DO ji = 1, jpi 
    651                zht(ji,jj) = 0.0_wp 
    652             END DO 
    653          END DO 
     486         zht(:,:) = 0.0_wp 
    654487         DO jk = 1, jpkm1 
    655 !$OMP DO schedule(static) private(jj,ji) 
    656             DO jj = 1, jpj 
    657                DO ji = 1, jpi 
    658                   zht(ji,jj) = zht(ji,jj) + e3t_n(ji,jj,jk) * tmask(ji,jj,jk) 
    659                END DO 
    660             END DO 
    661          END DO 
    662 !$OMP END PARALLEL 
     488            zht(:,:) = zht(:,:) + e3t_n(:,:,jk) * tmask(:,:,jk) 
     489         END DO 
    663490         z_tmax = MAXVAL( tmask(:,:,1) * tmask_i(:,:) * ABS( ht_0(:,:) + sshn(:,:) - zht(:,:) ) ) 
    664491         IF( lk_mpp ) CALL mpp_max( z_tmax )                                ! max over the global domain 
    665492         IF( lwp    ) WRITE(numout, *) kt,' MAXVAL(abs(ht_0+sshn-SUM(e3t_n))) =', z_tmax 
    666493         ! 
    667 !$OMP PARALLEL 
    668 !$OMP DO schedule(static) private(jj,ji) 
    669          DO jj = 1, jpj 
    670             DO ji = 1, jpi 
    671                zht(ji,jj) = 0.0_wp 
    672             END DO 
    673          END DO 
     494         zht(:,:) = 0.0_wp 
    674495         DO jk = 1, jpkm1 
    675 !$OMP DO schedule(static) private(jj,ji) 
    676             DO jj = 1, jpj 
    677                DO ji = 1, jpi 
    678                   zht(ji,jj) = zht(ji,jj) + e3t_a(ji,jj,jk) * tmask(ji,jj,jk) 
    679                END DO 
    680             END DO 
    681          END DO 
    682 !$OMP END PARALLEL 
     496            zht(:,:) = zht(:,:) + e3t_a(:,:,jk) * tmask(:,:,jk) 
     497         END DO 
    683498         z_tmax = MAXVAL( tmask(:,:,1) * tmask_i(:,:) * ABS( ht_0(:,:) + ssha(:,:) - zht(:,:) ) ) 
    684499         IF( lk_mpp ) CALL mpp_max( z_tmax )                                ! max over the global domain 
    685500         IF( lwp    ) WRITE(numout, *) kt,' MAXVAL(abs(ht_0+ssha-SUM(e3t_a))) =', z_tmax 
    686501         ! 
    687 !$OMP PARALLEL 
    688 !$OMP DO schedule(static) private(jj,ji) 
    689          DO jj = 1, jpj 
    690             DO ji = 1, jpi 
    691                zht(ji,jj) = 0.0_wp 
    692             END DO 
    693          END DO 
     502         zht(:,:) = 0.0_wp 
    694503         DO jk = 1, jpkm1 
    695 !$OMP DO schedule(static) private(jj,ji) 
    696             DO jj = 1, jpj 
    697                DO ji = 1, jpi 
    698                   zht(ji,jj) = zht(ji,jj) + e3t_b(ji,jj,jk) * tmask(ji,jj,jk) 
    699                END DO 
    700             END DO 
    701          END DO 
    702 !$OMP END PARALLEL 
     504            zht(:,:) = zht(:,:) + e3t_b(:,:,jk) * tmask(:,:,jk) 
     505         END DO 
    703506         z_tmax = MAXVAL( tmask(:,:,1) * tmask_i(:,:) * ABS( ht_0(:,:) + sshb(:,:) - zht(:,:) ) ) 
    704507         IF( lk_mpp ) CALL mpp_max( z_tmax )                                ! max over the global domain 
     
    729532      ! *********************************** ! 
    730533 
    731 !$OMP PARALLEL 
    732 !$OMP DO schedule(static) private(jj,ji) 
    733       DO jj = 1, jpj 
    734          DO ji = 1, jpi 
    735             hu_a(ji,jj) = e3u_a(ji,jj,1) * umask(ji,jj,1) 
    736             hv_a(ji,jj) = e3v_a(ji,jj,1) * vmask(ji,jj,1) 
    737          END DO 
    738       END DO 
     534      hu_a(:,:) = e3u_a(:,:,1) * umask(:,:,1) 
     535      hv_a(:,:) = e3v_a(:,:,1) * vmask(:,:,1) 
    739536      DO jk = 2, jpkm1 
    740 !$OMP DO schedule(static) private(jj,ji) 
    741          DO jj = 1, jpj 
    742             DO ji = 1, jpi 
    743                hu_a(ji,jj) = hu_a(ji,jj) + e3u_a(ji,jj,jk) * umask(ji,jj,jk) 
    744                hv_a(ji,jj) = hv_a(ji,jj) + e3v_a(ji,jj,jk) * vmask(ji,jj,jk) 
    745             END DO 
    746          END DO 
     537         hu_a(:,:) = hu_a(:,:) + e3u_a(:,:,jk) * umask(:,:,jk) 
     538         hv_a(:,:) = hv_a(:,:) + e3v_a(:,:,jk) * vmask(:,:,jk) 
    747539      END DO 
    748540      !                                        ! Inverse of the local depth 
    749541!!gm BUG ?  don't understand the use of umask_i here ..... 
    750 !$OMP DO schedule(static) private(jj,ji) 
    751       DO jj = 1, jpj 
    752          DO ji = 1, jpi 
    753             r1_hu_a(ji,jj) = ssumask(ji,jj) / ( hu_a(ji,jj) + 1._wp - ssumask(ji,jj) ) 
    754             r1_hv_a(ji,jj) = ssvmask(ji,jj) / ( hv_a(ji,jj) + 1._wp - ssvmask(ji,jj) ) 
    755          END DO 
    756       END DO 
    757 !$OMP END PARALLEL 
     542      r1_hu_a(:,:) = ssumask(:,:) / ( hu_a(:,:) + 1._wp - ssumask(:,:) ) 
     543      r1_hv_a(:,:) = ssvmask(:,:) / ( hv_a(:,:) + 1._wp - ssvmask(:,:) ) 
    758544      ! 
    759545      CALL wrk_dealloc( jpi,jpj,       zht, z_scale, zwu, zwv, zhdiv ) 
     
    810596      IF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN 
    811597         IF( neuler == 0 .AND. kt == nit000 ) THEN 
    812 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    813             DO jk = 1, jpk 
    814                DO jj = 1, jpj 
    815                   DO ji = 1, jpi 
    816                      tilde_e3t_b(ji,jj,jk) = tilde_e3t_n(ji,jj,jk) 
    817                   END DO 
    818                END DO 
    819             END DO 
     598            tilde_e3t_b(:,:,:) = tilde_e3t_n(:,:,:) 
    820599         ELSE 
    821 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    822             DO jk = 1, jpk 
    823                DO jj = 1, jpj 
    824                   DO ji = 1, jpi 
    825                      tilde_e3t_b(ji,jj,jk) = tilde_e3t_n(ji,jj,jk) &  
    826                      &         + atfp * ( tilde_e3t_b(ji,jj,jk) - 2.0_wp * tilde_e3t_n(ji,jj,jk) + tilde_e3t_a(ji,jj,jk) ) 
    827                   END DO 
    828                END DO 
    829             END DO 
     600            tilde_e3t_b(:,:,:) = tilde_e3t_n(:,:,:) &  
     601            &         + atfp * ( tilde_e3t_b(:,:,:) - 2.0_wp * tilde_e3t_n(:,:,:) + tilde_e3t_a(:,:,:) ) 
    830602         ENDIF 
    831 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    832          DO jk = 1, jpk 
    833             DO jj = 1, jpj 
    834                DO ji = 1, jpi 
    835                   tilde_e3t_n(ji,jj,jk) = tilde_e3t_a(ji,jj,jk) 
    836                END DO 
    837             END DO 
    838          END DO 
    839       ENDIF 
    840 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    841       DO jk = 1, jpk 
    842          DO jj = 1, jpj 
    843             DO ji = 1, jpi 
    844                gdept_b(ji,jj,jk) = gdept_n(ji,jj,jk) 
    845                gdepw_b(ji,jj,jk) = gdepw_n(ji,jj,jk) 
    846          
    847                e3t_n(ji,jj,jk) = e3t_a(ji,jj,jk) 
    848                e3u_n(ji,jj,jk) = e3u_a(ji,jj,jk) 
    849                e3v_n(ji,jj,jk) = e3v_a(ji,jj,jk) 
    850             END DO 
    851          END DO 
    852       END DO 
     603         tilde_e3t_n(:,:,:) = tilde_e3t_a(:,:,:) 
     604      ENDIF 
     605      gdept_b(:,:,:) = gdept_n(:,:,:) 
     606      gdepw_b(:,:,:) = gdepw_n(:,:,:) 
     607 
     608      e3t_n(:,:,:) = e3t_a(:,:,:) 
     609      e3u_n(:,:,:) = e3u_a(:,:,:) 
     610      e3v_n(:,:,:) = e3v_a(:,:,:) 
    853611 
    854612      ! Compute all missing vertical scale factor and depths 
     
    870628 
    871629      ! t- and w- points depth (set the isf depth as it is in the initial step) 
    872 ! !$OMP PARALLEL 
    873 ! !$OMP DO schedule(static) private(jj,ji) 
    874       DO jj = 1, jpj 
    875          DO ji = 1, jpi 
    876             gdept_n(ji,jj,1) = 0.5_wp * e3w_n(ji,jj,1) 
    877             gdepw_n(ji,jj,1) = 0.0_wp 
    878             gde3w_n(ji,jj,1) = gdept_n(ji,jj,1) - sshn(ji,jj) 
    879          END DO 
    880       END DO 
     630      gdept_n(:,:,1) = 0.5_wp * e3w_n(:,:,1) 
     631      gdepw_n(:,:,1) = 0.0_wp 
     632      gde3w_n(:,:,1) = gdept_n(:,:,1) - sshn(:,:) 
    881633      DO jk = 2, jpk 
    882 ! !$OMP DO schedule(static) private(jj,ji,zcoef) 
    883634         DO jj = 1,jpj 
    884635            DO ji = 1,jpi 
     
    896647      ! Local depth and Inverse of the local depth of the water 
    897648      ! ------------------------------------------------------- 
    898 !$OMP PARALLEL 
    899 !$OMP DO schedule(static) private(jj,ji) 
    900       DO jj = 1, jpj 
    901          DO ji = 1, jpi 
    902             hu_n(ji,jj) = hu_a(ji,jj)   ;   r1_hu_n(ji,jj) = r1_hu_a(ji,jj) 
    903             hv_n(ji,jj) = hv_a(ji,jj)   ;   r1_hv_n(ji,jj) = r1_hv_a(ji,jj) 
    904             ! 
    905             ht_n(ji,jj) = e3t_n(ji,jj,1) * tmask(ji,jj,1) 
    906          END DO 
     649      hu_n(:,:) = hu_a(:,:)   ;   r1_hu_n(:,:) = r1_hu_a(:,:) 
     650      hv_n(:,:) = hv_a(:,:)   ;   r1_hv_n(:,:) = r1_hv_a(:,:) 
     651      ! 
     652      ht_n(:,:) = e3t_n(:,:,1) * tmask(:,:,1) 
     653      DO jk = 2, jpkm1 
     654         ht_n(:,:) = ht_n(:,:) + e3t_n(:,:,jk) * tmask(:,:,jk) 
    907655      END DO 
    908       DO jk = 2, jpkm1 
    909 !$OMP DO schedule(static) private(jj,ji) 
    910          DO jj = 1, jpj 
    911             DO ji = 1, jpi 
    912                ht_n(ji,jj) = ht_n(ji,jj) + e3t_n(ji,jj,jk) * tmask(ji,jj,jk) 
    913             END DO 
    914          END DO 
    915       END DO 
    916 !$OMP END PARALLEL 
     656 
    917657      ! write restart file 
    918658      ! ================== 
     
    954694         ! 
    955695      CASE( 'U' )                   !* from T- to U-point : hor. surface weighted mean 
    956 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    957696         DO jk = 1, jpk 
    958697            DO jj = 1, jpjm1 
     
    965704         END DO 
    966705         CALL lbc_lnk( pe3_out(:,:,:), 'U', 1._wp ) 
    967 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    968          DO jk = 1, jpk 
    969             DO jj = 1, jpj 
    970                DO ji = 1, jpi 
    971                   pe3_out(ji,jj,jk) = pe3_out(ji,jj,jk) + e3u_0(ji,jj,jk) 
    972                END DO 
    973             END DO 
    974          END DO 
     706         pe3_out(:,:,:) = pe3_out(:,:,:) + e3u_0(:,:,:) 
    975707         ! 
    976708      CASE( 'V' )                   !* from T- to V-point : hor. surface weighted mean 
    977 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    978709         DO jk = 1, jpk 
    979710            DO jj = 1, jpjm1 
     
    986717         END DO 
    987718         CALL lbc_lnk( pe3_out(:,:,:), 'V', 1._wp ) 
    988 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    989          DO jk = 1, jpk 
    990             DO jj = 1, jpj 
    991                DO ji = 1, jpi 
    992                   pe3_out(ji,jj,jk) = pe3_out(ji,jj,jk) + e3v_0(ji,jj,jk) 
    993                END DO 
    994             END DO 
    995          END DO 
     719         pe3_out(:,:,:) = pe3_out(:,:,:) + e3v_0(:,:,:) 
    996720         ! 
    997721      CASE( 'F' )                   !* from U-point to F-point : hor. surface weighted mean 
    998 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    999722         DO jk = 1, jpk 
    1000723            DO jj = 1, jpjm1 
     
    1008731         END DO 
    1009732         CALL lbc_lnk( pe3_out(:,:,:), 'F', 1._wp ) 
    1010 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    1011          DO jk = 1, jpk 
    1012             DO jj = 1, jpj 
    1013                DO ji = 1, jpi 
    1014                   pe3_out(ji,jj,jk) = pe3_out(ji,jj,jk) + e3f_0(ji,jj,jk) 
    1015                END DO 
    1016             END DO 
    1017          END DO 
     733         pe3_out(:,:,:) = pe3_out(:,:,:) + e3f_0(:,:,:) 
    1018734         ! 
    1019735      CASE( 'W' )                   !* from T- to W-point : vertical simple mean 
    1020736         ! 
    1021 !$OMP PARALLEL 
    1022 !$OMP DO schedule(static) private(jj,ji) 
    1023          DO jj = 1, jpj 
    1024             DO ji = 1, jpi 
    1025                pe3_out(ji,jj,1) = e3w_0(ji,jj,1) + pe3_in(ji,jj,1) - e3t_0(ji,jj,1) 
    1026             END DO 
    1027          END DO 
     737         pe3_out(:,:,1) = e3w_0(:,:,1) + pe3_in(:,:,1) - e3t_0(:,:,1) 
    1028738         ! - ML - The use of mask in this formulea enables the special treatment of the last w-point without indirect adressing 
    1029739!!gm BUG? use here wmask in case of ISF ?  to be checked 
    1030 !$OMP DO schedule(static) private(jk,jj,ji) 
    1031740         DO jk = 2, jpk 
    1032             DO jj = 1, jpj 
    1033                DO ji = 1, jpi 
    1034                   pe3_out(ji,jj,jk) = e3w_0(ji,jj,jk) + ( 1.0_wp - 0.5_wp * ( tmask(ji,jj,jk) * (1.0_wp - zlnwd) + zlnwd ) )   & 
    1035                      &                            * ( pe3_in(ji,jj,jk-1) - e3t_0(ji,jj,jk-1) )                               & 
    1036                      &                            +            0.5_wp * ( tmask(ji,jj,jk) * (1.0_wp - zlnwd) + zlnwd )     & 
    1037                      &                            * ( pe3_in(ji,jj,jk  ) - e3t_0(ji,jj,jk  ) ) 
    1038                END DO 
    1039             END DO 
    1040          END DO 
    1041 !$OMP END PARALLEL 
     741            pe3_out(:,:,jk) = e3w_0(:,:,jk) + ( 1.0_wp - 0.5_wp * ( tmask(:,:,jk) * (1.0_wp - zlnwd) + zlnwd ) )   & 
     742               &                            * ( pe3_in(:,:,jk-1) - e3t_0(:,:,jk-1) )                               & 
     743               &                            +            0.5_wp * ( tmask(:,:,jk) * (1.0_wp - zlnwd) + zlnwd )     & 
     744               &                            * ( pe3_in(:,:,jk  ) - e3t_0(:,:,jk  ) ) 
     745         END DO 
    1042746         ! 
    1043747      CASE( 'UW' )                  !* from U- to UW-point : vertical simple mean 
    1044748         ! 
    1045 !$OMP PARALLEL 
    1046 !$OMP DO schedule(static) private(jj,ji) 
    1047          DO jj = 1, jpj 
    1048             DO ji = 1, jpi 
    1049                pe3_out(ji,jj,1) = e3uw_0(ji,jj,1) + pe3_in(ji,jj,1) - e3u_0(ji,jj,1) 
    1050             END DO 
    1051          END DO 
     749         pe3_out(:,:,1) = e3uw_0(:,:,1) + pe3_in(:,:,1) - e3u_0(:,:,1) 
    1052750         ! - ML - The use of mask in this formaula enables the special treatment of the last w- point without indirect adressing 
    1053751!!gm BUG? use here wumask in case of ISF ?  to be checked 
    1054 !$OMP DO schedule(static) private(jk,jj,ji) 
    1055752         DO jk = 2, jpk 
    1056             DO jj = 1, jpj 
    1057                DO ji = 1, jpi 
    1058                   pe3_out(ji,jj,jk) = e3uw_0(ji,jj,jk) + ( 1.0_wp - 0.5_wp * ( umask(ji,jj,jk) * (1.0_wp - zlnwd) + zlnwd ) )  & 
    1059                      &                             * ( pe3_in(ji,jj,jk-1) - e3u_0(ji,jj,jk-1) )                              & 
    1060                      &                             +            0.5_wp * ( umask(ji,jj,jk) * (1.0_wp - zlnwd) + zlnwd )    & 
    1061                      &                             * ( pe3_in(ji,jj,jk  ) - e3u_0(ji,jj,jk  ) ) 
    1062                END DO 
    1063             END DO 
    1064          END DO 
    1065 !$OMP END PARALLEL 
     753            pe3_out(:,:,jk) = e3uw_0(:,:,jk) + ( 1.0_wp - 0.5_wp * ( umask(:,:,jk) * (1.0_wp - zlnwd) + zlnwd ) )  & 
     754               &                             * ( pe3_in(:,:,jk-1) - e3u_0(:,:,jk-1) )                              & 
     755               &                             +            0.5_wp * ( umask(:,:,jk) * (1.0_wp - zlnwd) + zlnwd )    & 
     756               &                             * ( pe3_in(:,:,jk  ) - e3u_0(:,:,jk  ) ) 
     757         END DO 
    1066758         ! 
    1067759      CASE( 'VW' )                  !* from V- to VW-point : vertical simple mean 
    1068760         ! 
    1069 !$OMP PARALLEL 
    1070 !$OMP DO schedule(static) private(jj,ji) 
    1071          DO jj = 1, jpj 
    1072             DO ji = 1, jpi 
    1073                pe3_out(ji,jj,1) = e3vw_0(ji,jj,1) + pe3_in(ji,jj,1) - e3v_0(ji,jj,1) 
    1074             END DO 
    1075          END DO 
     761         pe3_out(:,:,1) = e3vw_0(:,:,1) + pe3_in(:,:,1) - e3v_0(:,:,1) 
    1076762         ! - ML - The use of mask in this formaula enables the special treatment of the last w- point without indirect adressing 
    1077763!!gm BUG? use here wvmask in case of ISF ?  to be checked 
    1078 !$OMP DO schedule(static) private(jk,jj,ji) 
    1079764         DO jk = 2, jpk 
    1080             DO jj = 1, jpj 
    1081                DO ji = 1, jpi 
    1082                   pe3_out(ji,jj,jk) = e3vw_0(ji,jj,jk) + ( 1.0_wp - 0.5_wp * ( vmask(ji,jj,jk) * (1.0_wp - zlnwd) + zlnwd ) )  & 
    1083                      &                             * ( pe3_in(ji,jj,jk-1) - e3v_0(ji,jj,jk-1) )                              & 
    1084                      &                             +            0.5_wp * ( vmask(ji,jj,jk) * (1.0_wp - zlnwd) + zlnwd )    & 
    1085                      &                             * ( pe3_in(ji,jj,jk  ) - e3v_0(ji,jj,jk  ) ) 
    1086                END DO 
    1087             END DO 
    1088          END DO 
    1089 !$OMP END PARALLEL 
     765            pe3_out(:,:,jk) = e3vw_0(:,:,jk) + ( 1.0_wp - 0.5_wp * ( vmask(:,:,jk) * (1.0_wp - zlnwd) + zlnwd ) )  & 
     766               &                             * ( pe3_in(:,:,jk-1) - e3v_0(:,:,jk-1) )                              & 
     767               &                             +            0.5_wp * ( vmask(:,:,jk) * (1.0_wp - zlnwd) + zlnwd )    & 
     768               &                             * ( pe3_in(:,:,jk  ) - e3v_0(:,:,jk  ) ) 
     769         END DO 
    1090770      END SELECT 
    1091771      ! 
     
    1225905                     sshb(ji,jj) = rn_wdmin1 - ht_wd(ji,jj)           !!gm I don't understand that ! 
    1226906                     sshn(ji,jj) = rn_wdmin1 - ht_wd(ji,jj) 
    1227                      ssha(ji,jj) = rn_wdmin1 - ht_wd(ji,jj)                      
     907                     ssha(ji,jj) = rn_wdmin1 - ht_wd(ji,jj) 
    1228908                  ENDIF 
    1229909                ENDDO 
  • trunk/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90

    r7698 r7753  
    7272      INTEGER, DIMENSION(:,:), INTENT(out) ::   k_top, k_bot   ! ocean first and last level indices 
    7373      ! 
    74       INTEGER  ::   ji, jj, jk                  ! dummy loop index 
     74      INTEGER  ::   jk                  ! dummy loop index 
    7575      INTEGER  ::   ioptio, ibat, ios   ! local integer 
    7676      REAL(wp) ::   zrefdep             ! depth of the reference level (~10m) 
     
    114114!!gm to be remove when removing the OLD definition of e3 scale factors so that gde3w disappears 
    115115      ! Compute gde3w_0 (vertical sum of e3w) 
    116 !$OMP PARALLEL 
    117 !$OMP DO schedule(static) private(jj, ji) 
    118       DO jj = 1, jpj 
    119          DO ji = 1, jpi 
    120             gde3w_0(ji,jj,1) = 0.5_wp * e3w_0(ji,jj,1) 
    121          END DO 
     116      gde3w_0(:,:,1) = 0.5_wp * e3w_0(:,:,1) 
     117      DO jk = 2, jpk 
     118         gde3w_0(:,:,jk) = gde3w_0(:,:,jk-1) + e3w_0(:,:,jk) 
    122119      END DO 
    123       DO jk = 2, jpk 
    124 !$OMP DO schedule(static) private(jj, ji) 
    125          DO jj = 1, jpj 
    126             DO ji = 1, jpi 
    127                gde3w_0(ji,jj,jk) = gde3w_0(ji,jj,jk-1) + e3w_0(ji,jj,jk) 
    128             END DO 
    129          END DO 
    130       END DO 
    131 !$OMP END PARALLEL 
    132120      ! 
    133121      IF(lwp) THEN                     ! Control print 
     
    202190      INTEGER , DIMENSION(:,:)  , INTENT(out) ::   k_top , k_bot               ! first & last ocean level 
    203191      ! 
    204       INTEGER  ::   jk, jj, ji   ! dummy loop index 
     192      INTEGER  ::   jk     ! dummy loop index 
    205193      INTEGER  ::   inum   ! local logical unit 
    206194      REAL(WP) ::   z_zco, z_zps, z_sco, z_cav 
     
    266254      !                          !* ocean top and bottom level 
    267255      CALL iom_get( inum, jpdom_data, 'top_level'    , z2d  , lrowattr=ln_use_jattr )   ! 1st wet T-points (ISF) 
    268 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    269       DO jj = 1, jpj 
    270          DO ji = 1, jpi 
    271             k_top(ji,jj) = INT( z2d(ji,jj) ) 
    272          END DO 
    273       END DO 
     256      k_top(:,:) = INT( z2d(:,:) ) 
    274257      CALL iom_get( inum, jpdom_data, 'bottom_level' , z2d  , lrowattr=ln_use_jattr )   ! last wet T-points 
    275 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    276       DO jj = 1, jpj 
    277          DO ji = 1, jpi 
    278             k_bot(ji,jj) = INT( z2d(ji,jj) ) 
    279          END DO 
    280       END DO 
     258      k_bot(:,:) = INT( z2d(:,:) ) 
    281259      ! 
    282260      ! bathymetry with orography (wetting and drying only) 
     
    317295      IF(lwp) WRITE(numout,*) '    ~~~~~~~~~~~' 
    318296      ! 
    319 !$OMP PARALLEL 
    320 !$OMP DO schedule(static) private(jj, ji) 
    321       DO jj = 1, jpj 
    322          DO ji = 1, jpi 
    323             mikt(ji,jj) = MAX( k_top(ji,jj) , 1 )    ! top    ocean k-index of T-level (=1 over land) 
    324             ! 
    325             mbkt(ji,jj) = MAX( k_bot(ji,jj) , 1 )    ! bottom ocean k-index of T-level (=1 over land) 
    326          END DO 
    327       END DO 
     297      mikt(:,:) = MAX( k_top(:,:) , 1 )    ! top    ocean k-index of T-level (=1 over land) 
     298      ! 
     299      mbkt(:,:) = MAX( k_bot(:,:) , 1 )    ! bottom ocean k-index of T-level (=1 over land) 
     300  
    328301      !                                    ! N.B.  top     k-index of W-level = mikt 
    329302      !                                    !       bottom  k-index of W-level = mbkt+1 
    330 !$OMP DO schedule(static) private(jj, ji) 
    331303      DO jj = 1, jpjm1 
    332304         DO ji = 1, jpim1 
     
    340312      END DO 
    341313      ! converte into REAL to use lbc_lnk ; impose a min value of 1 as a zero can be set in lbclnk  
    342 !$OMP DO schedule(static) private(jj, ji) 
    343       DO jj = 1, jpj 
    344          DO ji = 1, jpi 
    345             zk(ji,jj) = REAL( miku(ji,jj), wp ) 
    346          END DO 
    347       END DO 
    348 !$OMP END PARALLEL 
    349       CALL lbc_lnk( zk, 'U', 1. ) 
    350 !$OMP PARALLEL 
    351 !$OMP DO schedule(static) private(jj, ji) 
    352       DO jj = 1, jpj 
    353          DO ji = 1, jpi 
    354             miku(ji,jj) = MAX( INT( zk(ji,jj) ), 1 ) 
    355          END DO 
    356       END DO 
    357 !$OMP DO schedule(static) private(jj, ji) 
    358       DO jj = 1, jpj 
    359          DO ji = 1, jpi 
    360             zk(ji,jj) = REAL( mikv(ji,jj), wp ) 
    361          END DO 
    362       END DO 
    363 !$OMP END PARALLEL 
    364       CALL lbc_lnk( zk, 'V', 1. ) 
    365 !$OMP PARALLEL 
    366 !$OMP DO schedule(static) private(jj, ji) 
    367       DO jj = 1, jpj 
    368          DO ji = 1, jpi 
    369             mikv(ji,jj) = MAX( INT( zk(ji,jj) ), 1 ) 
    370          END DO 
    371       END DO 
    372 !$OMP DO schedule(static) private(jj, ji) 
    373       DO jj = 1, jpj 
    374          DO ji = 1, jpi 
    375             zk(ji,jj) = REAL( mikf(ji,jj), wp ) 
    376          END DO 
    377       END DO 
    378 !$OMP END PARALLEL 
    379       CALL lbc_lnk( zk, 'F', 1. ) 
    380 !$OMP PARALLEL 
    381 !$OMP DO schedule(static) private(jj, ji) 
    382       DO jj = 1, jpj 
    383          DO ji = 1, jpi 
    384             mikf(ji,jj) = MAX( INT( zk(ji,jj) ), 1 ) 
    385          END DO 
    386       END DO 
    387       ! 
    388 !$OMP DO schedule(static) private(jj, ji) 
    389       DO jj = 1, jpj 
    390          DO ji = 1, jpi 
    391             zk(ji,jj) = REAL( mbku(ji,jj), wp ) 
    392          END DO 
    393       END DO 
    394 !$OMP END PARALLEL 
    395       CALL lbc_lnk( zk, 'U', 1. ) 
    396 !$OMP PARALLEL 
    397 !$OMP DO schedule(static) private(jj, ji) 
    398       DO jj = 1, jpj 
    399          DO ji = 1, jpi 
    400             mbku(ji,jj) = MAX( INT( zk(ji,jj) ), 1 ) 
    401          END DO 
    402       END DO 
    403 !$OMP DO schedule(static) private(jj, ji) 
    404       DO jj = 1, jpj 
    405          DO ji = 1, jpi 
    406             zk(ji,jj) = REAL( mbkv(ji,jj), wp ) 
    407          END DO 
    408       END DO 
    409 !$OMP END PARALLEL 
    410       CALL lbc_lnk( zk, 'V', 1. ) 
    411 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    412       DO jj = 1, jpj 
    413          DO ji = 1, jpi 
    414             mbkv(ji,jj) = MAX( INT( zk(ji,jj) ), 1 ) 
    415          END DO 
    416       END DO 
     314      zk(:,:) = REAL( miku(:,:), wp )   ;   CALL lbc_lnk( zk, 'U', 1. )   ;   miku(:,:) = MAX( INT( zk(:,:) ), 1 ) 
     315      zk(:,:) = REAL( mikv(:,:), wp )   ;   CALL lbc_lnk( zk, 'V', 1. )   ;   mikv(:,:) = MAX( INT( zk(:,:) ), 1 ) 
     316      zk(:,:) = REAL( mikf(:,:), wp )   ;   CALL lbc_lnk( zk, 'F', 1. )   ;   mikf(:,:) = MAX( INT( zk(:,:) ), 1 ) 
     317      ! 
     318      zk(:,:) = REAL( mbku(:,:), wp )   ;   CALL lbc_lnk( zk, 'U', 1. )   ;   mbku(:,:) = MAX( INT( zk(:,:) ), 1 ) 
     319      zk(:,:) = REAL( mbkv(:,:), wp )   ;   CALL lbc_lnk( zk, 'V', 1. )   ;   mbkv(:,:) = MAX( INT( zk(:,:) ), 1 ) 
    417320      ! 
    418321      CALL wrk_dealloc( jpi,jpj,   zk ) 
  • trunk/NEMOGCM/NEMO/OPA_SRC/DOM/dtatsd.F90

    r7698 r7753  
    161161         ij0 = 101   ;   ij1 = 109                       ! Reduced T & S in the Alboran Sea 
    162162         ii0 = 141   ;   ii1 = 155 
    163 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    164163         DO jj = mj0(ij0), mj1(ij1) 
    165164            DO ji = mi0(ii0), mi1(ii1) 
     
    182181!!gm end 
    183182      ! 
    184 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    185       DO jk = 1, jpk 
    186          DO jj = 1, jpj 
    187             DO ji = 1, jpi 
    188                ptsd(ji,jj,jk,jp_tem) = sf_tsd(jp_tem)%fnow(ji,jj,jk)    ! NO mask 
    189                ptsd(ji,jj,jk,jp_sal) = sf_tsd(jp_sal)%fnow(ji,jj,jk) 
    190             END DO 
    191          END DO 
    192       END DO 
     183      ptsd(:,:,:,jp_tem) = sf_tsd(jp_tem)%fnow(:,:,:)    ! NO mask 
     184      ptsd(:,:,:,jp_sal) = sf_tsd(jp_sal)%fnow(:,:,:)  
    193185      ! 
    194186      IF( ln_sco ) THEN                   !==   s- or mixed s-zps-coordinate   ==! 
     
    201193         ENDIF 
    202194         ! 
    203 !$OMP PARALLEL DO schedule(static) private(jj, ji, jk, zl, jkk, zi) 
    204195         DO jj = 1, jpj                         ! vertical interpolation of T & S 
    205196            DO ji = 1, jpi 
     
    235226      ELSE                                !==   z- or zps- coordinate   ==! 
    236227         !                              
    237 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    238          DO jk = 1, jpk 
    239             DO jj = 1, jpj 
    240                DO ji = 1, jpi 
    241                   ptsd(ji,jj,jk,jp_tem) = ptsd(ji,jj,jk,jp_tem) * tmask(ji,jj,jk)    ! Mask 
    242                   ptsd(ji,jj,jk,jp_sal) = ptsd(ji,jj,jk,jp_sal) * tmask(ji,jj,jk) 
    243                END DO 
    244             END DO 
    245          END DO 
     228         ptsd(:,:,:,jp_tem) = ptsd(:,:,:,jp_tem) * tmask(:,:,:)    ! Mask 
     229         ptsd(:,:,:,jp_sal) = ptsd(:,:,:,jp_sal) * tmask(:,:,:) 
    246230         ! 
    247231         IF( ln_zps ) THEN                      ! zps-coordinate (partial steps) interpolation at the last ocean level 
    248 !$OMP PARALLEL DO schedule(static) private(jj, ji, ik, zl) 
    249232            DO jj = 1, jpj 
    250233               DO ji = 1, jpi 
  • trunk/NEMOGCM/NEMO/OPA_SRC/DOM/istate.F90

    r7698 r7753  
    5959      !! ** Purpose :   Initialization of the dynamics and tracer fields. 
    6060      !!---------------------------------------------------------------------- 
    61       INTEGER ::   ji, jj, jk, jn   ! dummy loop indices 
     61      INTEGER ::   ji, jj, jk   ! dummy loop indices 
    6262      REAL(wp), POINTER, DIMENSION(:,:,:,:) ::   zuvd    ! U & V data workspace 
    6363      !!---------------------------------------------------------------------- 
     
    7575!      IF( lk_c1d )   CALL dta_uvd_init        ! Initialization of U & V input data 
    7676!!gm 
    77 !$OMP PARALLEL 
    78       DO jn = 1, jpts 
    79 !$OMP DO schedule(static) private(jk, jj, ji) 
    80          DO jk = 1, jpk 
    81             DO jj = 1, jpj 
    82                DO ji = 1, jpi 
    83                   tsa  (ji,jj,jk,jn) = 0._wp                                       ! set one for all to 0 at level jpk 
    84                   rab_b(ji,jj,jk,jn) = 0._wp   ;   rab_n(ji,jj,jk,jn) = 0._wp      ! set one for all to 0 at level jpk 
    85                END DO 
    86             END DO 
    87          END DO 
    88       END DO 
    89 !$OMP DO schedule(static) private(jk, jj, ji) 
    90       DO jk = 1, jpk 
    91          DO jj = 1, jpj 
    92             DO ji = 1, jpi 
    93                rhd  (ji,jj,jk  ) = 0._wp   ;   rhop (ji,jj,jk  ) = 0._wp      ! set one for all to 0 at level jpk 
    94                rn2b (ji,jj,jk  ) = 0._wp   ;   rn2  (ji,jj,jk  ) = 0._wp      ! set one for all to 0 at levels 1 and jpk 
    95             END DO 
    96          END DO 
    97       END DO 
    98 !$OMP END PARALLEL 
     77 
     78      rhd  (:,:,:  ) = 0._wp   ;   rhop (:,:,:  ) = 0._wp      ! set one for all to 0 at level jpk 
     79      rn2b (:,:,:  ) = 0._wp   ;   rn2  (:,:,:  ) = 0._wp      ! set one for all to 0 at levels 1 and jpk 
     80      tsa  (:,:,:,:) = 0._wp                                   ! set one for all to 0 at level jpk 
     81      rab_b(:,:,:,:) = 0._wp   ;   rab_n(:,:,:,:) = 0._wp      ! set one for all to 0 at level jpk 
    9982 
    10083      IF( ln_rstart ) THEN                    ! Restart from a file 
     
    11497            CALL dta_tsd( nit000, tsb )       ! read 3D T and S data at nit000 
    11598            ! 
    116 !$OMP PARALLEL 
    117 !$OMP DO schedule(static) private(jj, ji) 
    118             DO jj = 1, jpj 
    119                DO ji = 1, jpi 
    120                   sshb (ji,jj)   = 0._wp      ! set the ocean at rest 
    121                END DO 
    122             END DO 
    123 !$OMP END DO NOWAIT 
    124 !$OMP DO schedule(static) private(jk, jj, ji) 
    125             DO jk = 1, jpk 
    126                DO jj = 1, jpj 
    127                   DO ji = 1, jpi 
    128                      ub  (ji,jj,jk) = 0._wp 
    129                      vb  (ji,jj,jk) = 0._wp   
    130                   END DO 
    131                END DO 
    132             END DO 
    133 !$OMP END PARALLEL 
     99            sshb(:,:)   = 0._wp               ! set the ocean at rest 
     100            ub  (:,:,:) = 0._wp 
     101            vb  (:,:,:) = 0._wp   
    134102            ! 
    135103         ELSE                                 ! user defined initial T and S 
    136104            CALL usr_def_istate( gdept_b, tmask, tsb, ub, vb, sshb  )          
    137105         ENDIF 
    138 !$OMP PARALLEL 
    139          DO jn = 1, jpts 
    140 !$OMP DO schedule(static) private(jk, jj, ji) 
    141             DO jk = 1, jpk 
    142                DO jj = 1, jpj 
    143                   DO ji = 1, jpi 
    144                      tsn  (ji,jj,jk,jn) = tsb (ji,jj,jk,jn)       ! set now values from to before ones 
    145                   END DO 
    146                END DO 
    147             END DO 
    148          END DO 
    149 !$OMP DO schedule(static) private(jk, jj, ji) 
    150          DO jk = 1, jpk 
    151             DO jj = 1, jpj 
    152                DO ji = 1, jpi 
    153                   un   (ji,jj,jk)   = ub  (ji,jj,jk) 
    154                   vn   (ji,jj,jk)   = vb  (ji,jj,jk) 
    155                END DO 
    156             END DO 
    157          END DO 
    158 !$OMP DO schedule(static) private(jj, ji) 
    159          DO jj = 1, jpj 
    160             DO ji = 1, jpi 
    161                sshn (ji,jj)     = sshb(ji,jj)    
    162                hdivn(ji,jj,jpk) = 0._wp               ! bottom divergence set one for 0 to zero at jpk level 
    163             END DO 
    164          END DO 
    165 !$OMP END PARALLEL 
     106         tsn  (:,:,:,:) = tsb (:,:,:,:)       ! set now values from to before ones 
     107         sshn (:,:)     = sshb(:,:)    
     108         un   (:,:,:)   = ub  (:,:,:) 
     109         vn   (:,:,:)   = vb  (:,:,:) 
     110         hdivn(:,:,jpk) = 0._wp               ! bottom divergence set one for 0 to zero at jpk level 
    166111         CALL div_hor( 0 )                    ! compute interior hdivn value   
    167112!!gm                                    hdivn(:,:,:) = 0._wp 
     
    197142      ! Do it whatever the free surface method, these arrays being eventually used 
    198143      ! 
    199 !$OMP PARALLEL 
    200 !$OMP DO schedule(static) private(jj, ji) 
    201       DO jj = 1, jpj 
    202          DO ji = 1, jpi 
    203             un_b(ji,jj) = 0._wp   ;   vn_b(ji,jj) = 0._wp 
    204             ub_b(ji,jj) = 0._wp   ;   vb_b(ji,jj) = 0._wp 
    205          END DO 
    206       END DO 
     144      un_b(:,:) = 0._wp   ;   vn_b(:,:) = 0._wp 
     145      ub_b(:,:) = 0._wp   ;   vb_b(:,:) = 0._wp 
    207146      ! 
    208147!!gm  the use of umsak & vmask is not necessary below as un, vn, ub, vb are always masked 
    209148      DO jk = 1, jpkm1 
    210 !$OMP DO schedule(static) private(jj, ji) 
    211149         DO jj = 1, jpj 
    212150            DO ji = 1, jpi 
     
    220158      END DO 
    221159      ! 
    222 !$OMP DO schedule(static) private(jj, ji) 
    223       DO jj = 1, jpj 
    224          DO ji = 1, jpi 
    225             un_b(ji,jj) = un_b(ji,jj) * r1_hu_n(ji,jj) 
    226             vn_b(ji,jj) = vn_b(ji,jj) * r1_hv_n(ji,jj) 
    227             ! 
    228             ub_b(ji,jj) = ub_b(ji,jj) * r1_hu_b(ji,jj) 
    229             vb_b(ji,jj) = vb_b(ji,jj) * r1_hv_b(ji,jj) 
    230          END DO 
    231       END DO 
    232 !$OMP END PARALLEL 
     160      un_b(:,:) = un_b(:,:) * r1_hu_n(:,:) 
     161      vn_b(:,:) = vn_b(:,:) * r1_hv_n(:,:) 
     162      ! 
     163      ub_b(:,:) = ub_b(:,:) * r1_hu_b(:,:) 
     164      vb_b(:,:) = vb_b(:,:) * r1_hv_b(:,:) 
    233165      ! 
    234166      IF( nn_timing == 1 )   CALL timing_stop('istate_init') 
  • 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