New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 7753 for trunk/NEMOGCM/NEMO/OPA_SRC/TRA – NEMO

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

Reverting trunk to remove OpenMP

Location:
trunk/NEMOGCM/NEMO/OPA_SRC/TRA
Files:
16 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/OPA_SRC/TRA/eosbn2.F90

    r7698 r7753  
    237237      CASE( np_teos10, np_eos80 )                !==  polynomial TEOS-10 / EOS-80 ==! 
    238238         ! 
    239 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji, zh, zt, zs, ztm, zn3, zn2, zn1, zn0, zn) 
    240239         DO jk = 1, jpkm1 
    241240            DO jj = 1, jpj 
     
    278277      CASE( np_seos )                !==  simplified EOS  ==! 
    279278         ! 
    280 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji, zh, zt, zs, ztm, zn) 
    281279         DO jk = 1, jpkm1 
    282280            DO jj = 1, jpj 
     
    347345            END DO 
    348346            ! 
    349 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji, jsmp, jdof, zh, zt, zstemp, zs, ztm, zn3, zn2, zn1) 
    350347            DO jk = 1, jpkm1 
    351348               DO jj = 1, jpj 
     
    402399         ! Non-stochastic equation of state 
    403400         ELSE 
    404 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji, zh, zt, zs, ztm, zn3, zn2, zn1, zn0, zn) 
    405401            DO jk = 1, jpkm1 
    406402               DO jj = 1, jpj 
     
    445441      CASE( np_seos )                !==  simplified EOS  ==! 
    446442         ! 
    447 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji, zh, zt, zs, ztm, zn) 
    448443         DO jk = 1, jpkm1 
    449444            DO jj = 1, jpj 
     
    498493      IF( nn_timing == 1 )   CALL timing_start('eos2d') 
    499494      ! 
    500 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    501       DO jj = 1, jpj 
    502          DO ji = 1, jpi 
    503             prd(ji,jj) = 0._wp 
    504          END DO 
    505       END DO 
     495      prd(:,:) = 0._wp 
    506496      ! 
    507497      SELECT CASE( neos ) 
     
    509499      CASE( np_teos10, np_eos80 )                !==  polynomial TEOS-10 / EOS-80 ==! 
    510500         ! 
    511 !$OMP PARALLEL DO schedule(static) private(jj, ji, zh, zt, zs, zn3, zn2, zn1, zn0, zn) 
    512501         DO jj = 1, jpjm1 
    513502            DO ji = 1, fs_jpim1   ! vector opt. 
     
    549538      CASE( np_seos )                !==  simplified EOS  ==! 
    550539         ! 
    551 !$OMP PARALLEL DO schedule(static) private(jj, ji, zh, zt, zs, zn) 
    552540         DO jj = 1, jpjm1 
    553541            DO ji = 1, fs_jpim1   ! vector opt. 
     
    601589      CASE( np_teos10, np_eos80 )                !==  polynomial TEOS-10 / EOS-80 ==! 
    602590         ! 
    603 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji, zh, zt, zs, ztm, zn3, zn2, zn1, zn0, zn) 
    604591         DO jk = 1, jpkm1 
    605592            DO jj = 1, jpj 
     
    659646      CASE( np_seos )                  !==  simplified EOS  ==! 
    660647         ! 
    661 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji, zh, zt, zs, ztm, zn) 
    662648         DO jk = 1, jpkm1 
    663649            DO jj = 1, jpj 
     
    712698      IF( nn_timing == 1 ) CALL timing_start('rab_2d') 
    713699      ! 
    714 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    715          DO jk = 1, jpts 
    716             DO jj = 1, jpj 
    717                DO ji = 1, jpi 
    718                   pab(ji,jj,jk) = 0._wp 
    719                END DO 
    720             END DO 
    721          END DO 
     700      pab(:,:,:) = 0._wp 
    722701      ! 
    723702      SELECT CASE ( neos ) 
     
    725704      CASE( np_teos10, np_eos80 )                !==  polynomial TEOS-10 / EOS-80 ==! 
    726705         ! 
    727 !$OMP PARALLEL DO schedule(static) private(jj, ji, zh, zt, zs, zn3, zn2, zn1, zn0, zn) 
    728706         DO jj = 1, jpjm1 
    729707            DO ji = 1, fs_jpim1   ! vector opt. 
     
    784762      CASE( np_seos )                  !==  simplified EOS  ==! 
    785763         ! 
    786 !$OMP PARALLEL DO schedule(static) private(jj, ji, zh, zt, zs, zn) 
    787764         DO jj = 1, jpjm1 
    788765            DO ji = 1, fs_jpim1   ! vector opt. 
     
    940917      IF( nn_timing == 1 ) CALL timing_start('bn2') 
    941918      ! 
    942 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji, zrw, zaw, zbw) 
    943919      DO jk = 2, jpkm1           ! interior points only (2=< jk =< jpkm1 ) 
    944920         DO jj = 1, jpj          ! surface and bottom value set to zero one for all in istate.F90 
     
    976952      !!                Rational approximation to TEOS10 algorithm (rms error on WOA13 values: 4.0e-5 degC) 
    977953      !!---------------------------------------------------------------------- 
    978       REAL(wp), DIMENSION(jpi,jpj), INTENT(in   ) ::   ctmp   ! Cons. Temp [Celsius] 
    979       REAL(wp), DIMENSION(jpi,jpj), INTENT(in   ) ::   psal   ! salinity   [psu] 
     954      REAL(wp), DIMENSION(jpi,jpj), INTENT(in   ) ::   ctmp   ! Cons. Temp   [Celsius] 
     955      REAL(wp), DIMENSION(jpi,jpj), INTENT(in   ) ::   psal   ! salinity     [psu] 
    980956      ! Leave result array automatic rather than making explicitly allocated 
    981957      REAL(wp), DIMENSION(jpi,jpj) ::   ptmp   ! potential temperature [Celsius] 
     
    993969      z1_T0   = 1._wp/40._wp 
    994970      ! 
    995 !$OMP PARALLEL DO schedule(static) private(jj, ji, zt, zs, ztm, zn,zd) 
    996971      DO jj = 1, jpj 
    997972         DO ji = 1, jpi 
     
    10491024         ! 
    10501025         z1_S0 = 1._wp / 35.16504_wp 
    1051 !$OMP PARALLEL 
    1052 !$OMP DO schedule(static) private(jj, ji, zs) 
    10531026         DO jj = 1, jpj 
    10541027            DO ji = 1, jpi 
     
    10581031            END DO 
    10591032         END DO 
    1060 !$OMP DO schedule(static) private(jj, ji) 
    1061          DO jj = 1, jpj 
    1062             DO ji = 1, jpi 
    1063                ptf(ji,jj) = ptf(ji,jj) * psal(ji,jj) 
    1064             END DO 
    1065          END DO 
    1066 !$OMP END PARALLEL 
    1067          ! 
    1068          IF( PRESENT( pdep ) ) THEN 
    1069 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    1070            DO jj = 1, jpj 
    1071               DO ji = 1, jpi 
    1072                  ptf(ji,jj) = ptf(ji,jj) - 7.53e-4 * pdep(ji,jj) 
    1073               END DO 
    1074            END DO 
    1075          END IF 
     1033         ptf(:,:) = ptf(:,:) * psal(:,:) 
     1034         ! 
     1035         IF( PRESENT( pdep ) )   ptf(:,:) = ptf(:,:) - 7.53e-4 * pdep(:,:) 
    10761036         ! 
    10771037      CASE ( np_eos80 )                !==  PT,SP (UNESCO formulation)  ==! 
    10781038         ! 
    1079 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    1080          DO jj = 1, jpj 
    1081             DO ji = 1, jpi 
    1082             ptf(ji,jj) = ( - 0.0575_wp + 1.710523e-3_wp * SQRT( psal(ji,jj) )   & 
    1083                &                     - 2.154996e-4_wp *       psal(ji,jj)   ) * psal(ji,jj) 
    1084             END DO 
    1085          END DO 
     1039         ptf(:,:) = ( - 0.0575_wp + 1.710523e-3_wp * SQRT( psal(:,:) )   & 
     1040            &                     - 2.154996e-4_wp *       psal(:,:)   ) * psal(:,:) 
    10861041            ! 
    1087          IF( PRESENT( pdep ) ) THEN 
    1088 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    1089            DO jj = 1, jpj 
    1090               DO ji = 1, jpi 
    1091                  ptf(ji,jj) = ptf(ji,jj) - 7.53e-4 * pdep(ji,jj) 
    1092               END DO 
    1093            END DO 
    1094          END IF 
     1042         IF( PRESENT( pdep ) )   ptf(:,:) = ptf(:,:) - 7.53e-4 * pdep(:,:) 
    10951043         ! 
    10961044      CASE DEFAULT 
     
    11861134      CASE( np_teos10, np_eos80 )                !==  polynomial TEOS-10 / EOS-80 ==! 
    11871135         ! 
    1188 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji, zh, zt, zs, ztm, zn2, zn1, zn0, zn) 
    11891136         DO jk = 1, jpkm1 
    11901137            DO jj = 1, jpj 
     
    12501197      CASE( np_seos )                !==  Vallis (2006) simplified EOS  ==! 
    12511198         ! 
    1252 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji, zh, zt, zs, ztm, zn) 
    12531199         DO jk = 1, jpkm1 
    12541200            DO jj = 1, jpj 
  • trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traadv.F90

    r7698 r7753  
    8888      INTEGER, INTENT( in ) ::   kt   ! ocean time-step index 
    8989      ! 
    90       INTEGER :: ji, jj, jk   ! dummy loop index 
     90      INTEGER ::   jk   ! dummy loop index 
    9191      REAL(wp), POINTER, DIMENSION(:,:,:) :: zun, zvn, zwn 
    9292      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztrdt, ztrds   ! 3D workspace 
     
    9898      ! 
    9999      !                                          ! set time step 
    100 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    101       DO jk = 1, jpk 
    102          DO jj = 1, jpj 
    103             DO ji = 1, jpi 
    104                zun(ji,jj,jk) = 0.0 
    105                zvn(ji,jj,jk) = 0.0 
    106                zwn(ji,jj,jk) = 0.0 
    107             END DO 
    108          END DO 
    109       END DO 
     100      zun(:,:,:) = 0.0 
     101      zvn(:,:,:) = 0.0 
     102      zwn(:,:,:) = 0.0 
    110103      !     
    111104      IF( neuler == 0 .AND. kt == nit000 ) THEN     ! at nit000 
     
    117110      !                                         !==  effective transport  ==! 
    118111      IF( ln_wave .AND. ln_sdw )  THEN 
    119 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    120112         DO jk = 1, jpkm1                                                       ! eulerian transport + Stokes Drift 
    121             DO jj = 1, jpj 
    122                DO ji = 1, jpi 
    123                   zun(ji,jj,jk) = e2u(ji,jj) * e3u_n(ji,jj,jk) * ( un(ji,jj,jk) + usd(ji,jj,jk) ) 
    124                   zvn(ji,jj,jk) = e1v(ji,jj) * e3v_n(ji,jj,jk) * ( vn(ji,jj,jk) + vsd(ji,jj,jk) ) 
    125                   zwn(ji,jj,jk) = e1e2t(ji,jj) * ( wn(ji,jj,jk) + wsd(ji,jj,jk) ) 
    126                END DO 
    127             END DO 
     113            zun(:,:,jk) = e2u  (:,:) * e3u_n(:,:,jk) * ( un(:,:,jk) + usd(:,:,jk) ) 
     114            zvn(:,:,jk) = e1v  (:,:) * e3v_n(:,:,jk) * ( vn(:,:,jk) + vsd(:,:,jk) ) 
     115            zwn(:,:,jk) = e1e2t(:,:)                 * ( wn(:,:,jk) + wsd(:,:,jk) ) 
    128116         END DO 
    129117      ELSE 
    130 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    131118         DO jk = 1, jpkm1 
    132             DO jj = 1, jpj 
    133                DO ji = 1, jpi 
    134                   zun(ji,jj,jk) = e2u  (ji,jj) * e3u_n(ji,jj,jk) * un(ji,jj,jk)    ! eulerian transport only 
    135                   zvn(ji,jj,jk) = e1v  (ji,jj) * e3v_n(ji,jj,jk) * vn(ji,jj,jk) 
    136                   zwn(ji,jj,jk) = e1e2t(ji,jj)                   * wn(ji,jj,jk) 
    137                END DO 
    138             END DO 
     119            zun(:,:,jk) = e2u  (:,:) * e3u_n(:,:,jk) * un(:,:,jk)               ! eulerian transport only 
     120            zvn(:,:,jk) = e1v  (:,:) * e3v_n(:,:,jk) * vn(:,:,jk) 
     121            zwn(:,:,jk) = e1e2t(:,:)                 * wn(:,:,jk) 
    139122         END DO 
    140123      ENDIF 
    141124      ! 
    142125      IF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN                                ! add z-tilde and/or vvl corrections 
    143 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    144          DO jk = 1, jpk 
    145             DO jj = 1, jpj 
    146                DO ji = 1, jpi 
    147                   zun(ji,jj,jk) = zun(ji,jj,jk) + un_td(ji,jj,jk) 
    148                   zvn(ji,jj,jk) = zvn(ji,jj,jk) + vn_td(ji,jj,jk) 
    149                END DO 
    150             END DO 
    151          END DO 
    152       ENDIF 
    153       ! 
    154 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    155       DO jj = 1, jpj 
    156          DO ji = 1, jpi 
    157             zun(ji,jj,jpk) = 0._wp                                              ! no transport trough the bottom 
    158             zvn(ji,jj,jpk) = 0._wp 
    159             zwn(ji,jj,jpk) = 0._wp 
    160          END DO 
    161       END DO 
     126         zun(:,:,:) = zun(:,:,:) + un_td(:,:,:) 
     127         zvn(:,:,:) = zvn(:,:,:) + vn_td(:,:,:) 
     128      ENDIF 
     129      ! 
     130      zun(:,:,jpk) = 0._wp                                                      ! no transport trough the bottom 
     131      zvn(:,:,jpk) = 0._wp 
     132      zwn(:,:,jpk) = 0._wp 
    162133      ! 
    163134      IF( ln_ldfeiv .AND. .NOT. ln_traldf_triad )   & 
     
    176147      IF( l_trdtra )   THEN                    !* Save ta and sa trends 
    177148         CALL wrk_alloc( jpi, jpj, jpk, ztrdt, ztrds ) 
    178 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    179          DO jk = 1, jpk 
    180             DO jj = 1, jpj 
    181                DO ji = 1, jpi 
    182                   ztrdt(ji,jj,jk) = tsa(ji,jj,jk,jp_tem) 
    183                   ztrds(ji,jj,jk) = tsa(ji,jj,jk,jp_sal) 
    184                END DO 
    185             END DO 
    186          END DO 
     149         ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 
     150         ztrds(:,:,:) = tsa(:,:,:,jp_sal) 
    187151      ENDIF 
    188152      ! 
     
    205169      ! 
    206170      IF( l_trdtra )   THEN                      ! save the advective trends for further diagnostics 
    207 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    208171         DO jk = 1, jpkm1 
    209             DO jj = 1, jpj 
    210                DO ji = 1, jpi 
    211                   ztrdt(ji,jj,jk) = tsa(ji,jj,jk,jp_tem) - ztrdt(ji,jj,jk) 
    212                   ztrds(ji,jj,jk) = tsa(ji,jj,jk,jp_sal) - ztrds(ji,jj,jk) 
    213                END DO 
    214             END DO 
     172            ztrdt(:,:,jk) = tsa(:,:,jk,jp_tem) - ztrdt(:,:,jk) 
     173            ztrds(:,:,jk) = tsa(:,:,jk,jp_sal) - ztrds(:,:,jk) 
    215174         END DO 
    216175         CALL trd_tra( kt, 'TRA', jp_tem, jptra_totad, ztrdt ) 
  • trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_fct.F90

    r7698 r7753  
    113113      IF( l_trd .OR. l_hst )  THEN 
    114114         CALL wrk_alloc( jpi, jpj, jpk, ztrdx, ztrdy, ztrdz ) 
    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                   ztrdx(ji,jj,jk) = 0._wp 
    120                   ztrdy(ji,jj,jk) = 0._wp 
    121                   ztrdz(ji,jj,jk) = 0._wp 
    122                END DO 
    123             END DO 
    124          END DO 
     115         ztrdx(:,:,:) = 0._wp   ;    ztrdy(:,:,:) = 0._wp   ;   ztrdz(:,:,:) = 0._wp 
    125116      ENDIF 
    126117      ! 
    127118      IF( l_ptr ) THEN   
    128119         CALL wrk_alloc( jpi, jpj, jpk, zptry ) 
    129 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    130          DO jk = 1, jpk 
    131             DO jj = 1, jpj 
    132                DO ji = 1, jpi 
    133                   zptry(ji,jj,jk) = 0._wp 
    134                END DO 
    135             END DO 
    136          END DO 
     120         zptry(:,:,:) = 0._wp 
    137121      ENDIF 
    138122      !                          ! surface & bottom value : flux set to zero one for all 
    139 !$OMP PARALLEL 
    140 !$OMP DO schedule(static) private(jj, ji) 
    141       DO jj = 1, jpj 
    142          DO ji = 1, jpi 
    143             zwz(ji,jj, 1 ) = 0._wp 
    144             zwx(ji,jj,jpk) = 0._wp 
    145             zwy(ji,jj,jpk) = 0._wp 
    146             zwz(ji,jj,jpk) = 0._wp 
    147          END DO 
    148       END DO 
    149 !$OMP END DO NOWAIT 
    150 !$OMP DO schedule(static) private(jk, jj, ji) 
    151       DO jk = 1, jpk 
    152          DO jj = 1, jpj 
    153             DO ji = 1, jpi 
    154                zwi(ji,jj,jk) = 0._wp 
    155             END DO 
    156          END DO 
    157       END DO 
    158 !$OMP END PARALLEL 
     123      zwz(:,:, 1 ) = 0._wp             
     124      zwx(:,:,jpk) = 0._wp   ;   zwy(:,:,jpk) = 0._wp    ;    zwz(:,:,jpk) = 0._wp 
     125      ! 
     126      zwi(:,:,:) = 0._wp         
    159127      ! 
    160128      DO jn = 1, kjpt            !==  loop over the tracers  ==! 
     
    162130         !        !==  upstream advection with initial mass fluxes & intermediate update  ==! 
    163131         !                    !* upstream tracer flux in the i and j direction  
    164 !$OMP PARALLEL 
    165 !$OMP DO schedule(static) private(jk, jj, ji, zfp_vj, zfm_vj, zfp_ui,zfm_ui) 
    166132         DO jk = 1, jpkm1 
    167133            DO jj = 1, jpjm1 
     
    177143            END DO 
    178144         END DO 
    179 !$OMP END DO NOWAIT 
    180145         !                    !* upstream tracer flux in the k direction *! 
    181 !$OMP DO schedule(static) private(jk, jj, ji, zfp_wk, zfm_wk) 
    182146         DO jk = 2, jpkm1        ! Interior value ( multiplied by wmask) 
    183147            DO jj = 1, jpj 
     
    189153            END DO 
    190154         END DO 
    191 !$OMP END PARALLEL 
    192155         IF( ln_linssh ) THEN    ! top ocean value (only in linear free surface as zwz has been w-masked) 
    193156            IF( ln_isfcav ) THEN             ! top of the ice-shelf cavities and at the ocean surface 
    194 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    195157               DO jj = 1, jpj 
    196158                  DO ji = 1, jpi 
     
    199161               END DO    
    200162            ELSE                             ! no cavities: only at the ocean surface 
    201 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    202                DO jj = 1, jpj 
    203                   DO ji = 1, jpi 
    204                      zwz(ji,jj,1) = pwn(ji,jj,1) * ptb(ji,jj,1,jn) 
    205                   END DO 
    206                END DO 
     163               zwz(:,:,1) = pwn(:,:,1) * ptb(:,:,1,jn) 
    207164            ENDIF 
    208165         ENDIF 
    209166         !                
    210 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji, ztra) 
    211167         DO jk = 1, jpkm1     !* trend and after field with monotonic scheme 
    212168            DO jj = 2, jpjm1 
     
    225181         !                 
    226182         IF( l_trd .OR. l_hst )  THEN             ! trend diagnostics (contribution of upstream fluxes) 
    227 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    228             DO jk = 1, jpk 
    229                DO jj = 1, jpj 
    230                   DO ji = 1, jpi 
    231                      ztrdx(ji,jj,jk) = zwx(ji,jj,jk) 
    232                      ztrdy(ji,jj,jk) = zwy(ji,jj,jk) 
    233                      ztrdz(ji,jj,jk) = zwz(ji,jj,jk) 
    234                   END DO 
    235                END DO 
    236             END DO 
     183            ztrdx(:,:,:) = zwx(:,:,:)   ;   ztrdy(:,:,:) = zwy(:,:,:)   ;   ztrdz(:,:,:) = zwz(:,:,:) 
    237184         END IF 
    238185         !                             ! "Poleward" heat and salt transports (contribution of upstream fluxes) 
    239          IF( l_ptr ) THEN 
    240 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    241             DO jk = 1, jpk 
    242                DO jj = 1, jpj 
    243                   DO ji = 1, jpi 
    244                      zptry(ji,jj,jk) = zwy(ji,jj,jk) 
    245                   END DO 
    246                END DO 
    247             END DO 
    248          END IF 
     186         IF( l_ptr )  zptry(:,:,:) = zwy(:,:,:)  
    249187         ! 
    250188         !        !==  anti-diffusive flux : high order minus low order  ==! 
     
    253191         ! 
    254192         CASE(  2  )                   !- 2nd order centered 
    255 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    256193            DO jk = 1, jpkm1 
    257194               DO jj = 1, jpjm1 
     
    264201            ! 
    265202         CASE(  4  )                   !- 4th order centered 
    266 !$OMP PARALLEL  
    267 !$OMP DO schedule(static) private(jj, ji) 
    268             DO jj = 1, jpj 
    269                DO ji = 1, jpi 
    270                   zltu(ji,jj,jpk) = 0._wp            ! Bottom value : flux set to zero 
    271                   zltv(ji,jj,jpk) = 0._wp 
    272                END DO 
    273             END DO 
    274 !$OMP DO schedule(static) private(jk, jj, ji) 
     203            zltu(:,:,jpk) = 0._wp            ! Bottom value : flux set to zero 
     204            zltv(:,:,jpk) = 0._wp 
    275205            DO jk = 1, jpkm1                 ! Laplacian 
    276206               DO jj = 1, jpjm1                    ! 1st derivative (gradient) 
     
    287217               END DO 
    288218            END DO 
    289 !$OMP END PARALLEL 
    290219            CALL lbc_lnk( zltu, 'T', 1. )   ;    CALL lbc_lnk( zltv, 'T', 1. )   ! Lateral boundary cond. (unchanged sgn) 
    291220            ! 
    292 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji, zC2t_u, zC2t_v) 
    293221            DO jk = 1, jpkm1                 ! Horizontal advective fluxes 
    294222               DO jj = 1, jpjm1 
     
    304232            ! 
    305233         CASE(  41 )                   !- 4th order centered       ==>>   !!gm coding attempt   need to be tested 
    306 !$OMP PARALLEL 
    307 !$OMP DO schedule(static) private(jj, ji) 
    308             DO jj = 1, jpj 
    309                DO ji = 1, jpi 
    310                   ztu(ji,jj,jpk) = 0._wp             ! Bottom value : flux set to zero 
    311                   ztv(ji,jj,jpk) = 0._wp 
    312                END DO 
    313             END DO 
    314 !$OMP DO schedule(static) private(jk, jj, ji) 
     234            ztu(:,:,jpk) = 0._wp             ! Bottom value : flux set to zero 
     235            ztv(:,:,jpk) = 0._wp 
    315236            DO jk = 1, jpkm1                 ! 1st derivative (gradient) 
    316237               DO jj = 1, jpjm1 
     
    321242               END DO 
    322243            END DO 
    323 !$OMP END PARALLEL 
    324244            CALL lbc_lnk( ztu, 'U', -1. )   ;    CALL lbc_lnk( ztv, 'V', -1. )   ! Lateral boundary cond. (unchanged sgn) 
    325245            ! 
    326 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji, zC2t_u, zC2t_v, zC4t_u, zC4t_v) 
    327246            DO jk = 1, jpkm1                 ! Horizontal advective fluxes 
    328247               DO jj = 2, jpjm1 
     
    345264         ! 
    346265         CASE(  2  )                   !- 2nd order centered 
    347 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    348266            DO jk = 2, jpkm1     
    349267               DO jj = 2, jpjm1 
     
    357275         CASE(  4  )                   !- 4th order COMPACT 
    358276            CALL interp_4th_cpt( ptn(:,:,:,jn) , ztw )   ! zwt = COMPACT interpolation of T at w-point 
    359 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    360277            DO jk = 2, jpkm1 
    361278               DO jj = 2, jpjm1 
     
    368285         END SELECT 
    369286         IF( ln_linssh ) THEN    ! top ocean value: high order = upstream  ==>>  zwz=0 
    370 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    371             DO jj = 1, jpj 
    372                DO ji = 1, jpi 
    373                   zwz(ji,jj,1) = 0._wp   ! only ocean surface as interior zwz values have been w-masked 
    374                END DO 
    375             END DO 
     287            zwz(:,:,1) = 0._wp   ! only ocean surface as interior zwz values have been w-masked 
    376288         ENDIF 
    377289         ! 
     
    385297         !        !==  final trend with corrected fluxes  ==! 
    386298         ! 
    387 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    388299         DO jk = 1, jpkm1 
    389300            DO jj = 2, jpjm1 
     
    398309         ! 
    399310         IF( l_trd .OR. l_hst ) THEN     ! trend diagnostics (contribution of upstream fluxes) 
    400 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    401             DO jk = 1, jpk 
    402                DO jj = 1, jpj 
    403                   DO ji = 1, jpi 
    404                      ztrdx(ji,jj,jk) = ztrdx(ji,jj,jk) + zwx(ji,jj,jk)  ! <<< Add to previously computed 
    405                      ztrdy(ji,jj,jk) = ztrdy(ji,jj,jk) + zwy(ji,jj,jk)  ! <<< Add to previously computed 
    406                      ztrdz(ji,jj,jk) = ztrdz(ji,jj,jk) + zwz(ji,jj,jk)  ! <<< Add to previously computed 
    407                   END DO 
    408                END DO 
    409             END DO 
     311            ztrdx(:,:,:) = ztrdx(:,:,:) + zwx(:,:,:)  ! <<< Add to previously computed 
     312            ztrdy(:,:,:) = ztrdy(:,:,:) + zwy(:,:,:)  ! <<< Add to previously computed 
     313            ztrdz(:,:,:) = ztrdz(:,:,:) + zwz(:,:,:)  ! <<< Add to previously computed 
    410314         ENDIF 
    411315            ! 
     
    421325         !                                ! "Poleward" heat and salt transports (contribution of upstream fluxes) 
    422326         IF( l_ptr ) THEN   
    423 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    424             DO jk = 1, jpk 
    425                DO jj = 1, jpj 
    426                   DO ji = 1, jpi 
    427                      zptry(ji,jj,jk) = zptry(ji,jj,jk) + zwy(ji,jj,jk)  ! <<< Add to previously computed 
    428                   END DO 
    429                END DO 
    430             END DO 
     327            zptry(:,:,:) = zptry(:,:,:) + zwy(:,:,:)  ! <<< Add to previously computed 
    431328            CALL dia_ptr_hst( jn, 'adv', zptry(:,:,:) ) 
    432329         ENDIF 
     
    765662      zbig  = 1.e+40_wp 
    766663      zrtrn = 1.e-15_wp 
     664      zbetup(:,:,:) = 0._wp   ;   zbetdo(:,:,:) = 0._wp 
    767665 
    768666      ! Search local extrema 
     
    774672         &        paft * tmask + zbig * ( 1._wp - tmask )  ) 
    775673 
    776 !$OMP PARALLEL 
    777 !$OMP DO schedule(static) private(jk, jj, ji) 
    778       DO jk = 1, jpk 
    779          DO jj = 1, jpj 
    780             DO ji = 1, jpi 
    781                zbetup(ji,jj,jk) = 0._wp 
    782                zbetdo(ji,jj,jk) = 0._wp 
    783             END DO 
    784          END DO 
    785       END DO 
    786 !$OMP DO schedule(static) private(jk, jj, ji, ikm1, zup, zdo, zpos, zneg, zbt) 
    787674      DO jk = 1, jpkm1 
    788675         ikm1 = MAX(jk-1,1) 
     
    819706         END DO 
    820707      END DO 
    821 !$OMP END PARALLEL 
    822708      CALL lbc_lnk( zbetup, 'T', 1. )   ;   CALL lbc_lnk( zbetdo, 'T', 1. )   ! lateral boundary cond. (unchanged sign) 
    823709 
    824710      ! 3. monotonic flux in the i & j direction (paa & pbb) 
    825711      ! ---------------------------------------- 
    826 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji, za, zb, zc, zav, zbv, zcv, zau, zbu, zcu) 
    827712      DO jk = 1, jpkm1 
    828713         DO jj = 2, jpjm1 
  • trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_mle.F90

    r7698 r7753  
    327327            IF( ierr /= 0 )   CALL ctl_stop( 'tra_adv_mle_init: failed to allocate arrays' ) 
    328328            z1_t2 = 1._wp / ( rn_time * rn_time ) 
    329 !$OMP PARALLEL DO schedule(static) private(jj, ji, zfu, zfv) 
    330329            DO jj = 2, jpj                           ! "coriolis+ time^-1" at u- & v-points 
    331330               DO ji = fs_2, jpi   ! vector opt. 
     
    348347         ! 
    349348         z1_t2 = 1._wp / ( rn_time * rn_time ) 
    350 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    351          DO jj = 1, jpj 
    352             DO ji = 1, jpi 
    353                r1_ft(ji,jj) = 1._wp / SQRT(  ff_t(ji,jj) * ff_t(ji,jj) + z1_t2 ) 
    354             END DO 
    355          END DO 
     349         r1_ft(:,:) = 1._wp / SQRT(  ff_t(:,:) * ff_t(:,:) + z1_t2  ) 
    356350         ! 
    357351      ENDIF 
  • trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_mus.F90

    r7698 r7753  
    108108         ! 
    109109         ALLOCATE( xind(jpi,jpj,jpk), STAT=ierr ) 
    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                   xind(ji,jj,jk) = 1._wp              ! set equal to 1 where up-stream is not needed 
    115                END DO 
    116             END DO 
    117          END DO 
     110         xind(:,:,:) = 1._wp              ! set equal to 1 where up-stream is not needed 
    118111         ! 
    119112         IF( ld_msc_ups ) THEN            ! define the upstream indicator (if asked) 
    120113            ALLOCATE( upsmsk(jpi,jpj), STAT=ierr ) 
    121 !$OMP PARALLEL 
    122 !$OMP DO schedule(static) private(jj, ji) 
    123             DO jj = 1, jpj 
    124                DO ji = 1, jpi 
    125                   upsmsk(ji,jj) = 0._wp                             ! not upstream by default 
    126                END DO 
    127             END DO 
     114            upsmsk(:,:) = 0._wp                             ! not upstream by default 
    128115            ! 
    129 !$OMP DO schedule(static) private(jk,jj,ji) 
    130116            DO jk = 1, jpkm1 
    131                DO jj = 1, jpj 
    132                   DO ji = 1, jpi 
    133                      xind(ji,jj,jk) = 1._wp                              &                   ! =>1 where up-stream is not needed 
    134                         &         - MAX ( rnfmsk(ji,jj) * rnfmsk_z(jk),  &                   ! =>0 near runoff mouths (& closed sea outflows) 
    135                         &                 upsmsk(ji,jj)                ) * tmask(ji,jj,jk)   ! =>0 in some user defined area 
    136                   END DO 
    137                END DO 
    138             END DO 
    139 !$OMP END DO NOWAIT 
    140 !$OMP END PARALLEL 
     117               xind(:,:,jk) = 1._wp                              &                 ! =>1 where up-stream is not needed 
     118                  &         - MAX ( rnfmsk(:,:) * rnfmsk_z(jk),  &                 ! =>0 near runoff mouths (& closed sea outflows) 
     119                  &                 upsmsk(:,:)                ) * tmask(:,:,jk)   ! =>0 in some user defined area 
     120            END DO 
    141121         ENDIF  
    142122         ! 
     
    156136         ! 
    157137         !                                !-- first guess of the slopes 
    158 !$OMP PARALLEL 
    159 !$OMP DO schedule(static) private(jj, ji) 
    160          DO jj = 1, jpj 
    161             DO ji = 1, jpi 
    162                zwx(ji,jj,jpk) = 0._wp           ! bottom values 
    163                zwy(ji,jj,jpk) = 0._wp 
    164             END DO 
    165          END DO 
    166 !$OMP DO schedule(static) private(jk, jj, ji) 
     138         zwx(:,:,jpk) = 0._wp                   ! bottom values 
     139         zwy(:,:,jpk) = 0._wp   
    167140         DO jk = 1, jpkm1                       ! interior values 
    168141            DO jj = 1, jpjm1       
     
    173146           END DO 
    174147         END DO 
    175 !$OMP END DO NOWAIT 
    176 !$OMP END PARALLEL 
    177148         CALL lbc_lnk( zwx, 'U', -1. )          ! lateral boundary conditions   (changed sign) 
    178149         CALL lbc_lnk( zwy, 'V', -1. ) 
    179150         !                                !-- Slopes of tracer 
    180 !$OMP PARALLEL 
    181 !$OMP DO schedule(static) private(jj, ji) 
    182          DO jj = 1, jpj 
    183             DO ji = 1, jpi 
    184                zslpx(ji,jj,jpk) = 0._wp                 ! bottom values 
    185                zslpy(ji,jj,jpk) = 0._wp 
    186             END DO 
    187          END DO 
    188 !$OMP DO schedule(static) private(jk, jj, ji) 
     151         zslpx(:,:,jpk) = 0._wp                 ! bottom values 
     152         zslpy(:,:,jpk) = 0._wp 
    189153         DO jk = 1, jpkm1                       ! interior values 
    190154            DO jj = 2, jpj 
     
    198162         END DO 
    199163         ! 
    200 !$OMP DO schedule(static) private(jk, jj, ji) 
    201164         DO jk = 1, jpkm1                 !-- Slopes limitation 
    202165            DO jj = 2, jpj 
     
    212175         END DO 
    213176         ! 
    214 !$OMP DO schedule(static) private(jk, jj, ji, z0u, zalpha, zu, zv, zzwx, zzwy, z0v) 
    215177         DO jk = 1, jpkm1                 !-- MUSCL horizontal advective fluxes 
    216178            DO jj = 2, jpjm1 
     
    233195            END DO 
    234196         END DO 
    235 !$OMP END DO NOWAIT 
    236 !$OMP END PARALLEL 
    237197         CALL lbc_lnk( zwx, 'U', -1. )   ;   CALL lbc_lnk( zwy, 'V', -1. )   ! lateral boundary conditions   (changed sign) 
    238198         ! 
    239 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    240199         DO jk = 1, jpkm1                 !-- Tracer advective trend 
    241200            DO jj = 2, jpjm1       
     
    260219         ! 
    261220         !                                !-- first guess of the slopes 
    262 !$OMP PARALLEL  
    263 !$OMP DO schedule(static) private(jj, ji) 
    264          DO jj = 1, jpj 
    265             DO ji = 1, jpi 
    266                zwx(ji,jj, 1 ) = 0._wp           ! surface & bottom boundary conditions 
    267                zwx(ji,jj,jpk) = 0._wp 
    268            END DO 
    269          END DO 
    270 !$OMP DO schedule(static) private(jk, jj, ji) 
     221         zwx(:,:, 1 ) = 0._wp                   ! surface & bottom boundary conditions 
     222         zwx(:,:,jpk) = 0._wp 
    271223         DO jk = 2, jpkm1                       ! interior values 
    272             DO jj = 1, jpj 
    273                DO ji = 1, jpi 
    274                   zwx(ji,jj,jk) = tmask(ji,jj,jk) * ( ptb(ji,jj,jk-1,jn) - ptb(ji,jj,jk,jn) ) 
    275               END DO 
    276             END DO 
     224            zwx(:,:,jk) = tmask(:,:,jk) * ( ptb(:,:,jk-1,jn) - ptb(:,:,jk,jn) ) 
    277225         END DO 
    278226         !                                !-- Slopes of tracer 
    279 !$OMP END DO NOWAIT 
    280 !$OMP DO schedule(static) private(jj, ji) 
    281          DO jj = 1, jpj 
    282             DO ji = 1, jpi 
    283                zslpx(ji,jj,1) = 0._wp                   ! surface values 
    284            END DO 
    285          END DO 
    286 !$OMP DO schedule(static) private(jk, jj, ji) 
     227         zslpx(:,:,1) = 0._wp                   ! surface values 
    287228         DO jk = 2, jpkm1                       ! interior value 
    288229            DO jj = 1, jpj 
     
    293234            END DO 
    294235         END DO 
    295 !$OMP DO schedule(static) private(jk, jj, ji) 
    296236         DO jk = 2, jpkm1                 !-- Slopes limitation 
    297237            DO jj = 1, jpj                      ! interior values 
     
    303243            END DO 
    304244         END DO 
    305 !$OMP DO schedule(static) private(jk, jj, ji, z0w, zalpha, zw, zzwx, zzwy) 
    306245         DO jk = 1, jpk-2                 !-- vertical advective flux 
    307246            DO jj = 2, jpjm1       
     
    316255            END DO 
    317256         END DO 
    318 !$OMP END DO NOWAIT 
    319 !$OMP END PARALLEL 
    320257         IF( ln_linssh ) THEN                   ! top values, linear free surface only 
    321258            IF( ln_isfcav ) THEN                      ! ice-shelf cavities (top of the ocean) 
    322 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    323259               DO jj = 1, jpj 
    324260                  DO ji = 1, jpi 
     
    327263               END DO    
    328264            ELSE                                      ! no cavities: only at the ocean surface 
    329 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    330                DO jj = 1, jpj 
    331                   DO ji = 1, jpi 
    332                      zwx(ji,jj,1) = pwn(ji,jj,1) * ptb(ji,jj,1,jn) 
    333                   END DO 
    334                END DO 
     265               zwx(:,:,1) = pwn(:,:,1) * ptb(:,:,1,jn) 
    335266            ENDIF 
    336267         ENDIF 
    337268         ! 
    338 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    339269         DO jk = 1, jpkm1                 !-- vertical advective trend 
    340270            DO jj = 2, jpjm1       
  • trunk/NEMOGCM/NEMO/OPA_SRC/TRA/trabbc.F90

    r7698 r7753  
    7676      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
    7777      ! 
    78       INTEGER  ::   ji, jj, jk    ! dummy loop indices 
     78      INTEGER  ::   ji, jj    ! dummy loop indices 
    7979      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztrdt 
    8080      !!---------------------------------------------------------------------- 
     
    8484      IF( l_trdtra )   THEN         ! Save the input temperature trend 
    8585         CALL wrk_alloc( jpi,jpj,jpk,   ztrdt ) 
    86 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    87          DO jk = 1, jpk 
    88             DO jj = 1, jpj 
    89                DO ji = 1, jpi 
    90                   ztrdt(ji,jj,jk) = tsa(ji,jj,jk,jp_tem) 
    91                END DO 
    92             END DO 
    93          END DO 
     86         ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 
    9487      ENDIF 
    9588      !                             !  Add the geothermal trend on temperature 
    96 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    9789      DO jj = 2, jpjm1 
    9890         DO ji = 2, jpim1 
     
    10496      ! 
    10597      IF( l_trdtra ) THEN        ! Send the trend for diagnostics 
    106 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    107          DO jk = 1, jpk 
    108             DO jj = 1, jpj 
    109                DO ji = 1, jpi 
    110                   ztrdt(ji,jj,jk) = tsa(ji,jj,jk,jp_tem) - ztrdt(ji,jj,jk) 
    111                END DO 
    112             END DO 
    113          END DO 
     98         ztrdt(:,:,:) = tsa(:,:,:,jp_tem) - ztrdt(:,:,:) 
    11499         CALL trd_tra( kt, 'TRA', jp_tem, jptra_bbc, ztrdt ) 
    115100         CALL wrk_dealloc( jpi,jpj,jpk,   ztrdt ) 
     
    177162         CASE ( 1 )                          !* constant flux 
    178163            IF(lwp) WRITE(numout,*) '      *** constant heat flux  =   ', rn_geoflx_cst 
    179 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    180             DO jj = 1, jpj 
    181                DO ji = 1, jpi 
    182                   qgh_trd0(ji,jj) = r1_rau0_rcp * rn_geoflx_cst 
    183                END DO 
    184             END DO 
     164            qgh_trd0(:,:) = r1_rau0_rcp * rn_geoflx_cst 
    185165            ! 
    186166         CASE ( 2 )                          !* variable geothermal heat flux : read the geothermal fluxes in mW/m2 
     
    199179 
    200180            CALL fld_read( nit000, 1, sf_qgh )                         ! Read qgh data 
    201 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    202             DO jj = 1, jpj 
    203                DO ji = 1, jpi 
    204                   qgh_trd0(ji,jj) = r1_rau0_rcp * sf_qgh(1)%fnow(ji,jj,1) * 1.e-3 ! conversion in W/m2 
    205                END DO 
    206             END DO 
     181            qgh_trd0(:,:) = r1_rau0_rcp * sf_qgh(1)%fnow(:,:,1) * 1.e-3 ! conversion in W/m2 
    207182            ! 
    208183         CASE DEFAULT 
  • trunk/NEMOGCM/NEMO/OPA_SRC/TRA/trabbl.F90

    r7698 r7753  
    105105      !!---------------------------------------------------------------------- 
    106106      INTEGER, INTENT( in ) ::   kt   ! ocean time-step 
    107       INTEGER  ::   ji, jj, jk        ! dummy loop indices 
    108107      ! 
    109108      REAL(wp), POINTER, DIMENSION(:,:,:) ::  ztrdt, ztrds 
     
    114113      IF( l_trdtra )   THEN                         !* Save the input trends 
    115114         CALL wrk_alloc( jpi, jpj, jpk, ztrdt, ztrds ) 
    116 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    117          DO jk = 1, jpk 
    118             DO jj = 1, jpj 
    119                DO ji = 1, jpi 
    120                   ztrdt(ji,jj,jk) = tsa(ji,jj,jk,jp_tem) 
    121                   ztrds(ji,jj,jk) = tsa(ji,jj,jk,jp_sal) 
    122                END DO 
    123             END DO 
    124          END DO 
     115         ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 
     116         ztrds(:,:,:) = tsa(:,:,:,jp_sal) 
    125117      ENDIF 
    126118 
     
    154146 
    155147      IF( l_trdtra )   THEN                      ! send the trends for further diagnostics 
    156 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    157          DO jk = 1, jpk 
    158             DO jj = 1, jpj 
    159                DO ji = 1, jpi 
    160                   ztrdt(ji,jj,jk) = tsa(ji,jj,jk,jp_tem) - ztrdt(ji,jj,jk) 
    161                   ztrds(ji,jj,jk) = tsa(ji,jj,jk,jp_sal) - ztrds(ji,jj,jk) 
    162                END DO 
    163             END DO 
    164          END DO 
     148         ztrdt(:,:,:) = tsa(:,:,:,jp_tem) - ztrdt(:,:,:) 
     149         ztrds(:,:,:) = tsa(:,:,:,jp_sal) - ztrds(:,:,:) 
    165150         CALL trd_tra( kt, 'TRA', jp_tem, jptra_bbl, ztrdt ) 
    166151         CALL trd_tra( kt, 'TRA', jp_sal, jptra_bbl, ztrds ) 
     
    210195      DO jn = 1, kjpt                                     ! tracer loop 
    211196         !                                                ! =========== 
    212 !$OMP PARALLEL DO schedule(static) private(jj,ji,ik) 
    213197         DO jj = 1, jpj 
    214198            DO ji = 1, jpi 
     
    218202         END DO 
    219203         !                
    220 !$OMP PARALLEL DO schedule(static) private(jj,ji,ik) 
    221204         DO jj = 2, jpjm1                                    ! Compute the trend 
    222205            DO ji = 2, jpim1 
     
    374357      ENDIF 
    375358      !                                        !* bottom variables (T, S, alpha, beta, depth, velocity) 
    376 !$OMP PARALLEL DO schedule(static) private(jj,ji,ik) 
    377359      DO jj = 1, jpj 
    378360         DO ji = 1, jpi 
     
    392374      IF( nn_bbl_ldf == 1 ) THEN          !   diffusive bbl   ! 
    393375         !                                !-------------------! 
    394 !$OMP PARALLEL DO schedule(static) private(jj,ji,za,zb,zgdrho,zsign) 
    395376         DO jj = 1, jpjm1                      ! (criteria for non zero flux: grad(rho).grad(h) < 0 ) 
    396377            DO ji = 1, fs_jpim1   ! vector opt. 
     
    425406         ! 
    426407         CASE( 1 )                                   != use of upper velocity 
    427 !$OMP PARALLEL DO schedule(static) private(jj,ji,za,zb,zgdrho,zsign,zsigna) 
    428408            DO jj = 1, jpjm1                                 ! criteria: grad(rho).grad(h)<0  and grad(rho).grad(h)<0 
    429409               DO ji = 1, fs_jpim1   ! vector opt. 
     
    457437         CASE( 2 )                                 != bbl velocity = F( delta rho ) 
    458438            zgbbl = grav * rn_gambbl 
    459 !$OMP PARALLEL DO schedule(static) private(jj,ji,iid,iis,ikud,ikus,za,zb,zgdrho,ijd,ijs,ikvd,ikvs) 
    460439            DO jj = 1, jpjm1                            ! criteria: rho_up > rho_down 
    461440               DO ji = 1, fs_jpim1   ! vector opt. 
     
    554533 
    555534      !                             !* vertical index of  "deep" bottom u- and v-points 
    556 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    557535      DO jj = 1, jpjm1                    ! (the "shelf" bottom k-indices are mbku and mbkv) 
    558536         DO ji = 1, jpim1 
     
    569547      !                                 !* sign of grad(H) at u- and v-points 
    570548      mgrhu(jpi,:) = 0   ;   mgrhu(:,jpj) = 0   ;   mgrhv(jpi,:) = 0   ;   mgrhv(:,jpj) = 0 
    571 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    572549      DO jj = 1, jpjm1 
    573550         DO ji = 1, jpim1 
     
    577554      END DO 
    578555      ! 
    579 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    580556      DO jj = 1, jpjm1              !* bbl thickness at u- (v-) point 
    581557         DO ji = 1, jpim1                 ! minimum of top & bottom e3u_0 (e3v_0) 
     
    587563      ! 
    588564      !                             !* masked diffusive flux coefficients 
    589 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    590       DO jj = 1, jpj 
    591          DO ji = 1, jpi 
    592             ahu_bbl_0(ji,jj) = rn_ahtbbl * e2_e1u(ji,jj) * e3u_bbl_0(ji,jj) * umask(ji,jj,1) 
    593             ahv_bbl_0(ji,jj) = rn_ahtbbl * e1_e2v(ji,jj) * e3v_bbl_0(ji,jj) * vmask(ji,jj,1) 
    594          END DO 
    595       END DO 
     565      ahu_bbl_0(:,:) = rn_ahtbbl * e2_e1u(:,:) * e3u_bbl_0(:,:) * umask(:,:,1) 
     566      ahv_bbl_0(:,:) = rn_ahtbbl * e1_e2v(:,:) * e3v_bbl_0(:,:) * vmask(:,:,1) 
    596567 
    597568      ! 
  • trunk/NEMOGCM/NEMO/OPA_SRC/TRA/tradmp.F90

    r7698 r7753  
    102102      IF( l_trdtra )   THEN                    !* Save ta and sa trends 
    103103         CALL wrk_alloc( jpi,jpj,jpk,jpts,   ztrdts )  
    104          DO jn = 1, jpts 
    105 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    106             DO jk = 1, jpk 
    107                DO jj = 1, jpj 
    108                   DO ji = 1, jpi 
    109                      ztrdts(ji,jj,jk,jn) = tsa(ji,jj,jk,jn)  
    110                   END DO 
    111                END DO 
    112             END DO 
    113          END DO 
     104         ztrdts(:,:,:,:) = tsa(:,:,:,:)  
    114105      ENDIF 
    115106      !                           !==  input T-S data at kt  ==! 
     
    120111      CASE( 0 )                        !*  newtonian damping throughout the water column  *! 
    121112         DO jn = 1, jpts 
    122 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    123113            DO jk = 1, jpkm1 
    124114               DO jj = 2, jpjm1 
     
    131121         ! 
    132122      CASE ( 1 )                       !*  no damping in the turbocline (avt > 5 cm2/s)  *! 
    133 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    134123         DO jk = 1, jpkm1 
    135124            DO jj = 2, jpjm1 
     
    146135         ! 
    147136      CASE ( 2 )                       !*  no damping in the mixed layer   *! 
    148 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    149137         DO jk = 1, jpkm1 
    150138            DO jj = 2, jpjm1 
     
    163151      ! 
    164152      IF( l_trdtra )   THEN       ! trend diagnostic 
    165          DO jn = 1, jpts 
    166 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    167             DO jk = 1, jpk 
    168                DO jj = 1, jpj 
    169                   DO ji = 1, jpi 
    170                      ztrdts(ji,jj,jk,jn) = tsa(ji,jj,jk,jn) - ztrdts(ji,jj,jk,jn) 
    171                   END DO 
    172                END DO 
    173             END DO 
    174          END DO 
     153         ztrdts(:,:,:,:) = tsa(:,:,:,:) - ztrdts(:,:,:,:) 
    175154         CALL trd_tra( kt, 'TRA', jp_tem, jptra_dmp, ztrdts(:,:,:,jp_tem) ) 
    176155         CALL trd_tra( kt, 'TRA', jp_sal, jptra_dmp, ztrdts(:,:,:,jp_sal) ) 
  • trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traldf.F90

    r7698 r7753  
    5757      !!---------------------------------------------------------------------- 
    5858      INTEGER, INTENT( in ) ::   kt   ! ocean time-step index 
    59       INTEGER ::   jk, jj, ji         ! dummy loop indices 
    6059      !! 
    6160      REAL(wp), POINTER, DIMENSION(:,:,:) ::  ztrdt, ztrds 
     
    6665      IF( l_trdtra )   THEN                    !* Save ta and sa trends 
    6766         CALL wrk_alloc( jpi,jpj,jpk,   ztrdt, ztrds )  
    68 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    69          DO jk = 1, jpk 
    70             DO jj = 1, jpj 
    71                DO ji = 1, jpi 
    72                   ztrdt(ji,jj,jk) = tsa(ji,jj,jk,jp_tem) 
    73                   ztrds(ji,jj,jk) = tsa(ji,jj,jk,jp_sal) 
    74                END DO 
    75             END DO 
    76          END DO 
     67         ztrdt(:,:,:) = tsa(:,:,:,jp_tem)  
     68         ztrds(:,:,:) = tsa(:,:,:,jp_sal) 
    7769      ENDIF 
    7870      ! 
     
    8981      ! 
    9082      IF( l_trdtra )   THEN                    !* save the horizontal diffusive trends for further diagnostics 
    91 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    92          DO jk = 1, jpk 
    93             DO jj = 1, jpj 
    94                DO ji = 1, jpi 
    95                   ztrdt(ji,jj,jk) = tsa(ji,jj,jk,jp_tem) - ztrdt(ji,jj,jk) 
    96                   ztrds(ji,jj,jk) = tsa(ji,jj,jk,jp_sal) - ztrds(ji,jj,jk) 
    97                END DO 
    98             END DO 
    99          END DO 
     83         ztrdt(:,:,:) = tsa(:,:,:,jp_tem) - ztrdt(:,:,:) 
     84         ztrds(:,:,:) = tsa(:,:,:,jp_sal) - ztrds(:,:,:) 
    10085         CALL trd_tra( kt, 'TRA', jp_tem, jptra_ldf, ztrdt ) 
    10186         CALL trd_tra( kt, 'TRA', jp_sal, jptra_ldf, ztrds ) 
  • trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_iso.F90

    r7698 r7753  
    125125         IF(lwp) WRITE(numout,*) '~~~~~~~~~~~' 
    126126         ! 
    127 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    128          DO jk = 1, jpk 
    129             DO jj = 1, jpj 
    130                DO ji = 1, jpi 
    131                   akz     (ji,jj,jk) = 0._wp 
    132                   ah_wslp2(ji,jj,jk) = 0._wp 
    133                END DO 
    134             END DO 
    135          END DO 
     127         akz     (:,:,:) = 0._wp       
     128         ah_wslp2(:,:,:) = 0._wp 
    136129      ENDIF 
    137130      !    
     
    158151      IF( kpass == 1 ) THEN                  !==  first pass only  ==! 
    159152         ! 
    160 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji, zmsku, zmskv, zahu_w, zahv_w) 
    161153         DO jk = 2, jpkm1 
    162154            DO jj = 2, jpjm1 
     
    180172         ! 
    181173         IF( ln_traldf_msc ) THEN                ! stabilizing vertical diffusivity coefficient 
    182 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    183174            DO jk = 2, jpkm1 
    184175               DO jj = 2, jpjm1 
     
    194185            ! 
    195186            IF( ln_traldf_blp ) THEN                ! bilaplacian operator 
    196 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    197187               DO jk = 2, jpkm1 
    198188                  DO jj = 1, jpjm1 
     
    204194               END DO 
    205195            ELSEIF( ln_traldf_lap ) THEN              ! laplacian operator 
    206 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji, ze3w_2, zcoef0) 
    207196               DO jk = 2, jpkm1 
    208197                  DO jj = 1, jpjm1 
     
    217206           ! 
    218207         ELSE                                    ! 33 flux set to zero with akz=ah_wslp2 ==>> computed in full implicit 
    219 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    220            DO jk = 1, jpk 
    221               DO jj = 1, jpj 
    222                  DO ji = 1, jpi 
    223                     akz(ji,jj,jk) = ah_wslp2(ji,jj,jk) 
    224                  END DO 
    225               END DO 
    226            END DO 
     208            akz(:,:,:) = ah_wslp2(:,:,:)       
    227209         ENDIF 
    228210      ENDIF 
     
    236218         !!---------------------------------------------------------------------- 
    237219!!gm : bug.... why (x,:,:)?   (1,jpj,:) and (jpi,1,:) should be sufficient.... 
    238 !$OMP PARALLEL 
    239 !$OMP DO schedule(static) private(jk, jj) 
    240          DO jk = 1, jpk 
    241             DO jj = 1, jpj 
    242                zdit (1,jj,jk) = 0._wp     ;     zdit (jpi,jj,jk) = 0._wp 
    243                zdjt (1,jj,jk) = 0._wp     ;     zdjt (jpi,jj,jk) = 0._wp 
    244             END DO 
    245          END DO 
     220         zdit (1,:,:) = 0._wp     ;     zdit (jpi,:,:) = 0._wp 
     221         zdjt (1,:,:) = 0._wp     ;     zdjt (jpi,:,:) = 0._wp 
    246222         !!end 
    247223 
    248224         ! Horizontal tracer gradient  
    249 !$OMP DO schedule(static) private(jk, jj, ji) 
    250225         DO jk = 1, jpkm1 
    251226            DO jj = 1, jpjm1 
     
    256231            END DO 
    257232         END DO 
    258 !$OMP END PARALLEL 
    259233         IF( ln_zps ) THEN      ! botton and surface ocean correction of the horizontal gradient 
    260 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    261234            DO jj = 1, jpjm1              ! bottom correction (partial bottom cell) 
    262235               DO ji = 1, fs_jpim1   ! vector opt. 
     
    266239            END DO 
    267240            IF( ln_isfcav ) THEN      ! first wet level beneath a cavity 
    268 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    269241               DO jj = 1, jpjm1 
    270242                  DO ji = 1, fs_jpim1   ! vector opt. 
     
    280252         !!---------------------------------------------------------------------- 
    281253         ! 
    282 !$OMP PARALLEL 
    283254         DO jk = 1, jpkm1                                 ! Horizontal slab 
    284255            ! 
    285256            !                             !== Vertical tracer gradient 
    286 !$OMP DO schedule(static) private(jj, ji) 
    287             DO jj = 1 , jpj 
    288                DO ji = 1, jpi 
    289                   zdk1t(ji,jj) = ( ptb(ji,jj,jk,jn) - ptb(ji,jj,jk+1,jn) ) * wmask(ji,jj,jk+1)     ! level jk+1 
    290                END DO 
    291             END DO 
    292             ! 
    293             IF( jk == 1 ) THEN    
    294 !$OMP DO schedule(static) private(jj, ji) 
    295                DO jj = 1 , jpj 
    296                   DO ji = 1, jpi 
    297                      zdkt(ji,jj) = zdk1t(ji,jj)                          ! surface: zdkt(jk=1)=zdkt(jk=2) 
    298                   END DO 
    299                END DO 
    300             ELSE   
    301 !$OMP DO schedule(static) private(jj, ji) 
    302                DO jj = 1 , jpj 
    303                   DO ji = 1, jpi 
    304                      zdkt(ji,jj) = ( ptb(ji,jj,jk-1,jn) - ptb(ji,jj,jk,jn) ) * wmask(ji,jj,jk) 
    305                   END DO 
    306                END DO 
     257            zdk1t(:,:) = ( ptb(:,:,jk,jn) - ptb(:,:,jk+1,jn) ) * wmask(:,:,jk+1)     ! level jk+1 
     258            ! 
     259            IF( jk == 1 ) THEN   ;   zdkt(:,:) = zdk1t(:,:)                          ! surface: zdkt(jk=1)=zdkt(jk=2) 
     260            ELSE                 ;   zdkt(:,:) = ( ptb(:,:,jk-1,jn) - ptb(:,:,jk,jn) ) * wmask(:,:,jk) 
    307261            ENDIF 
    308 !$OMP DO schedule(static) private(jj, ji, zmsku, zmskv, zabe1, zabe2, zcof1, zcof2) 
    309262            DO jj = 1 , jpjm1            !==  Horizontal fluxes 
    310263               DO ji = 1, fs_jpim1   ! vector opt. 
     
    330283            END DO 
    331284            ! 
    332 !$OMP DO schedule(static) private(jj, ji) 
    333285            DO jj = 2 , jpjm1          !== horizontal divergence and add to pta 
    334286               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    344296         !!---------------------------------------------------------------------- 
    345297         ! 
    346 !$OMP DO schedule(static) private(jk, jj) 
    347          DO jk = 1, jpk 
    348             DO jj = 1, jpj 
    349                ztfw(1,jj,jk) = 0._wp     ;     ztfw(jpi,jj,jk) = 0._wp 
    350             END DO 
    351          END DO 
     298         ztfw(1,:,:) = 0._wp     ;     ztfw(jpi,:,:) = 0._wp 
    352299         ! 
    353300         ! Vertical fluxes 
    354301         ! --------------- 
    355302         !                          ! Surface and bottom vertical fluxes set to zero 
    356 !$OMP DO schedule(static) private(jj, ji) 
    357          DO jj = 1, jpj 
    358             DO ji = 1, jpi 
    359                ztfw(ji,jj, 1 ) = 0._wp      ;      ztfw(ji,jj,jpk) = 0._wp 
    360             END DO 
    361          END DO 
     303         ztfw(:,:, 1 ) = 0._wp      ;      ztfw(:,:,jpk) = 0._wp 
    362304          
    363 !$OMP DO schedule(static) private(jk, jj, ji, zmsku, zmskv, zahu_w, zahv_w, zcoef3, zcoef4) 
    364305         DO jk = 2, jpkm1           ! interior (2=<jk=<jpk-1) 
    365306            DO jj = 2, jpjm1 
     
    386327            END DO 
    387328         END DO 
    388 !$OMP END PARALLEL 
    389329         !                                !==  add the vertical 33 flux  ==! 
    390330         IF( ln_traldf_lap ) THEN               ! laplacian case: eddy coef = ah_wslp2 - akz 
    391 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    392331            DO jk = 2, jpkm1        
    393332               DO jj = 1, jpjm1 
     
    403342            SELECT CASE( kpass ) 
    404343            CASE(  1  )                            ! 1st pass : eddy coef = ah_wslp2 
    405 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    406344               DO jk = 2, jpkm1  
    407345                  DO jj = 1, jpjm1 
     
    414352               END DO  
    415353            CASE(  2  )                         ! 2nd pass : eddy flux = ah_wslp2 and akz applied on ptb  and ptbb gradients, resp. 
    416 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    417354               DO jk = 2, jpkm1  
    418355                  DO jj = 1, jpjm1 
     
    427364         ENDIF 
    428365         !          
    429 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    430366         DO jk = 1, jpkm1                 !==  Divergence of vertical fluxes added to pta  ==! 
    431367            DO jj = 2, jpjm1 
  • trunk/NEMOGCM/NEMO/OPA_SRC/TRA/tranxt.F90

    r7698 r7753  
    121121      IF( l_trdtra )   THEN                     
    122122         CALL wrk_alloc( jpi, jpj, jpk, ztrdt, ztrds ) 
    123 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    124          DO jk = 1, jpk 
    125             DO jj = 1, jpj 
    126                DO ji = 1, jpi 
    127                   ztrdt(ji,jj,jk) = 0._wp  
    128                   ztrds(ji,jj,jk) = 0._wp 
    129                END DO 
    130             END DO 
    131          END DO 
     123         ztrdt(:,:,jk) = 0._wp 
     124         ztrds(:,:,jk) = 0._wp 
    132125         IF( ln_traldf_iso ) THEN              ! diagnose the "pure" Kz diffusive trend  
    133126            CALL trd_tra( kt, 'TRA', jp_tem, jptra_zdfp, ztrdt ) 
     
    136129         ! total trend for the non-time-filtered variables.  
    137130            zfact = 1.0 / rdt 
    138 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    139131         DO jk = 1, jpkm1 
    140             DO jj = 1, jpj 
    141                DO ji = 1, jpi 
    142                   ztrdt(ji,jj,jk) = ( tsa(ji,jj,jk,jp_tem) - tsn(ji,jj,jk,jp_tem) ) * zfact 
    143                   ztrds(ji,jj,jk) = ( tsa(ji,jj,jk,jp_sal) - tsn(ji,jj,jk,jp_sal) ) * zfact 
    144                END DO 
    145             END DO 
     132            ztrdt(:,:,jk) = ( tsa(:,:,jk,jp_tem) - tsn(:,:,jk,jp_tem) ) * zfact  
     133            ztrds(:,:,jk) = ( tsa(:,:,jk,jp_sal) - tsn(:,:,jk,jp_sal) ) * zfact  
    146134         END DO 
    147135         CALL trd_tra( kt, 'TRA', jp_tem, jptra_tot, ztrdt ) 
     
    149137         ! Store now fields before applying the Asselin filter  
    150138         ! in order to calculate Asselin filter trend later. 
    151 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    152          DO jk = 1, jpkm1 
    153             DO jj = 1, jpj 
    154                DO ji = 1, jpi 
    155                   ztrdt(ji,jj,jk) = tsn(ji,jj,jk,jp_tem) 
    156                   ztrds(ji,jj,jk) = tsn(ji,jj,jk,jp_sal) 
    157                END DO 
    158             END DO 
    159          END DO 
     139         ztrdt(:,:,:) = tsn(:,:,:,jp_tem)  
     140         ztrds(:,:,:) = tsn(:,:,:,jp_sal) 
    160141      ENDIF 
    161142 
    162143      IF( neuler == 0 .AND. kt == nit000 ) THEN       ! Euler time-stepping at first time-step (only swap) 
    163144         DO jn = 1, jpts 
    164 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    165145            DO jk = 1, jpkm1 
    166                DO jj = 1, jpj 
    167                   DO ji = 1, jpi 
    168                      tsn(ji,jj,jk,jn) = tsa(ji,jj,jk,jn)     
    169                   END DO 
    170                END DO 
     146               tsn(:,:,jk,jn) = tsa(:,:,jk,jn)     
    171147            END DO 
    172148         END DO 
     
    187163      ! 
    188164      IF( l_trdtra ) THEN      ! trend of the Asselin filter (tb filtered - tb)/dt      
    189 !$OMP PARALLEL DO schedule(static) private(jk, zfact) 
    190165         DO jk = 1, jpkm1 
    191             DO jj = 1, jpj 
    192                DO ji = 1, jpi 
    193                   zfact = 1._wp / r2dt              
    194                   ztrdt(ji,jj,jk) = ( tsb(ji,jj,jk,jp_tem) - ztrdt(ji,jj,jk) ) * zfact 
    195                   ztrds(ji,jj,jk) = ( tsb(ji,jj,jk,jp_sal) - ztrds(ji,jj,jk) ) * zfact 
    196                END DO 
    197             END DO 
     166            zfact = 1._wp / r2dt              
     167            ztrdt(:,:,jk) = ( tsb(:,:,jk,jp_tem) - ztrdt(:,:,jk) ) * zfact 
     168            ztrds(:,:,jk) = ( tsb(:,:,jk,jp_sal) - ztrds(:,:,jk) ) * zfact 
    198169         END DO 
    199170         CALL trd_tra( kt, 'TRA', jp_tem, jptra_atf, ztrdt ) 
     
    243214      DO jn = 1, kjpt 
    244215         ! 
    245 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji,ztn,ztd) 
    246216         DO jk = 1, jpkm1 
    247217            DO jj = 2, jpjm1 
     
    310280      ! 
    311281      DO jn = 1, kjpt       
    312 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji,zfact1,zfact2,ze3t_b,ze3t_n,ze3t_a,ze3t_d,ze3t_f,ztc_b,ztc_n,ztc_a,ztc_d,ztc_f) 
    313282         DO jk = 1, jpkm1 
    314283            zfact1 = atfp * p2dt 
  • trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traqsr.F90

    r7698 r7753  
    128128      IF( l_trdtra ) THEN      ! trends diagnostic: save the input temperature trend 
    129129         CALL wrk_alloc( jpi,jpj,jpk,   ztrdt )  
    130 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    131             DO jk = 1, jpk 
    132                DO jj = 1, jpj 
    133                   DO ji = 1, jpi 
    134                      ztrdt(ji,jj,jk) = tsa(ji,jj,jk,jp_tem) 
    135                   END DO 
    136                END DO 
    137             END DO 
     130         ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 
    138131      ENDIF 
    139132      ! 
     
    149142         ELSE                                           ! No restart or restart not found: Euler forward time stepping 
    150143            z1_2 = 1._wp 
    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                      qsr_hc_b(ji,jj,jk) = 0._wp 
    156                   END DO 
    157                END DO 
    158             END DO 
     144            qsr_hc_b(:,:,:) = 0._wp 
    159145         ENDIF 
    160146      ELSE                             !==  Swap of qsr heat content  ==! 
    161147         z1_2 = 0.5_wp 
    162 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    163             DO jk = 1, jpk 
    164                DO jj = 1, jpj 
    165                   DO ji = 1, jpi 
    166                      qsr_hc_b(ji,jj,jk) = qsr_hc(ji,jj,jk) 
    167                   END DO 
    168                END DO 
    169             END DO 
     148         qsr_hc_b(:,:,:) = qsr_hc(:,:,:) 
    170149      ENDIF 
    171150      ! 
     
    176155      CASE( np_BIO )                   !==  bio-model fluxes  ==! 
    177156         ! 
    178 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    179157         DO jk = 1, nksr 
    180             DO jj = 1, jpj 
    181                DO ji = 1, jpi 
    182                   qsr_hc(ji,jj,jk) = r1_rau0_rcp * ( etot3(ji,jj,jk) - etot3(ji,jj,jk+1) ) 
    183                END DO 
    184              END DO 
     158            qsr_hc(:,:,jk) = r1_rau0_rcp * ( etot3(:,:,jk) - etot3(:,:,jk+1) ) 
    185159         END DO 
    186160         ! 
     
    192166         IF( nqsr == np_RGBc ) THEN          !*  Variable Chlorophyll 
    193167            CALL fld_read( kt, 1, sf_chl )         ! Read Chl data and provides it at the current time step 
    194 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji,zchl,zCtot,zze,zpsi,zlogc,zlogc2,zlogc3,zCb,zCmax,zpsimax,zdelpsi,zCze) 
    195168            DO jk = 1, nksr + 1 
    196169               DO jj = 2, jpjm1                       ! Separation in R-G-B depending of the surface Chl 
     
    217190            END DO 
    218191         ELSE                                !* constant chrlorophyll 
    219 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    220192           DO jk = 1, nksr + 1 
    221               DO jj = 1, jpj 
    222                  DO ji = 1, jpi 
    223                     zchl3d(ji,jj,jk) = 0.05 
    224                  ENDDO 
    225               ENDDO 
     193              zchl3d(:,:,jk) = 0.05  
    226194            ENDDO 
    227195         ENDIF 
    228196         ! 
    229197         zcoef  = ( 1. - rn_abs ) / 3._wp    !* surface equi-partition in R-G-B 
    230 !$OMP PARALLEL 
    231 !$OMP DO schedule(static) private(jj,ji) 
    232198         DO jj = 2, jpjm1 
    233199            DO ji = fs_2, fs_jpim1 
     
    239205            END DO 
    240206         END DO 
    241 !$OMP END DO NOWAIT 
    242207         ! 
    243208         DO jk = 2, nksr+1                   !* interior equi-partition in R-G-B depending of vertical profile of Chl 
    244 !$OMP DO schedule(static) private(jj,ji,zchl,irgb) 
    245209            DO jj = 2, jpjm1 
    246210               DO ji = fs_2, fs_jpim1 
     
    253217            END DO 
    254218 
    255 !$OMP DO schedule(static) private(jj,ji,zc0,zc1,zc2,zc3) 
    256219            DO jj = 2, jpjm1 
    257220               DO ji = fs_2, fs_jpim1 
     
    269232         END DO 
    270233         ! 
    271 !$OMP DO schedule(static) private(jk,jj,ji) 
    272234         DO jk = 1, nksr                     !* now qsr induced heat content 
    273235            DO jj = 2, jpjm1 
     
    277239            END DO 
    278240         END DO 
    279 !$OMP END PARALLEL 
    280241         ! 
    281242         CALL wrk_dealloc( jpi,jpj,        zekb, zekg, zekr        )  
     
    286247         zz0 =        rn_abs   * r1_rau0_rcp      ! surface equi-partition in 2-bands 
    287248         zz1 = ( 1. - rn_abs ) * r1_rau0_rcp 
    288 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji,zc0,zc1) 
    289249         DO jk = 1, nksr                          ! solar heat absorbed at T-point in the top 400m  
    290250            DO jj = 2, jpjm1 
     
    300260      ! 
    301261      !                          !-----------------------------! 
    302 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    303262      DO jk = 1, nksr            !  update to the temp. trend  ! 
    304263         DO jj = 2, jpjm1        !-----------------------------! 
     
    311270      ! 
    312271      IF( ln_qsr_ice ) THEN      ! sea-ice: store the 1st ocean level attenuation coefficient 
    313 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    314272         DO jj = 2, jpjm1  
    315273            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    326284         CALL wrk_alloc( jpi,jpj,jpk,   zetot ) 
    327285         ! 
    328 !$OMP PARALLEL 
    329 !$OMP DO schedule(static) private(jj,ji) 
    330          DO jj = 1, jpj  
    331             DO ji = 1, jpi   ! vector opt. 
    332                zetot(ji,jj,nksr+1:jpk) = 0._wp     ! below ~400m set to zero 
    333             END DO 
    334          END DO 
     286         zetot(:,:,nksr+1:jpk) = 0._wp     ! below ~400m set to zero 
    335287         DO jk = nksr, 1, -1 
    336 !$OMP DO schedule(static) private(jj,ji) 
    337             DO jj = 1, jpj  
    338                DO ji = 1, jpi   ! vector opt. 
    339                   zetot(ji,jj,jk) = zetot(ji,jj,jk+1) + qsr_hc(ji,jj,jk) / r1_rau0_rcp 
    340                END DO 
    341             END DO 
     288            zetot(:,:,jk) = zetot(:,:,jk+1) + qsr_hc(:,:,jk) / r1_rau0_rcp 
    342289         END DO          
    343 !$OMP END PARALLEL 
    344290         CALL iom_put( 'qsr3d', zetot )   ! 3D distribution of shortwave Radiation 
    345291         ! 
     
    353299      ! 
    354300      IF( l_trdtra ) THEN     ! qsr tracers trends saved for diagnostics 
    355 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    356          DO jk = 1, jpk 
    357             DO jj = 1, jpj 
    358                DO ji = 1, jpi 
    359                   ztrdt(ji,jj,jk) = tsa(ji,jj,jk,jp_tem) - ztrdt(ji,jj,jk) 
    360                END DO 
    361             END DO 
    362          END DO 
     301         ztrdt(:,:,:) = tsa(:,:,:,jp_tem) - ztrdt(:,:,:) 
    363302         CALL trd_tra( kt, 'TRA', jp_tem, jptra_qsr, ztrdt ) 
    364303         CALL wrk_dealloc( jpi,jpj,jpk,   ztrdt )  
     
    487426      END SELECT 
    488427      ! 
    489 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    490       DO jk = 1, jpk 
    491          DO jj = 1, jpj 
    492             DO ji = 1, jpi 
    493                qsr_hc(ji,jj,jk) = 0._wp     ! now qsr heat content set to zero where it will not be computed 
    494             END DO 
    495          END DO 
    496       END DO 
     428      qsr_hc(:,:,:) = 0._wp     ! now qsr heat content set to zero where it will not be computed 
    497429      ! 
    498430      ! 1st ocean level attenuation coefficient (used in sbcssm) 
     
    500432         CALL iom_get( numror, jpdom_autoglo, 'fraqsr_1lev'  , fraqsr_1lev  ) 
    501433      ELSE 
    502 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    503          DO jj = 1, jpj 
    504             DO ji = 1, jpi 
    505                fraqsr_1lev(ji,jj) = 1._wp   ! default : no penetration 
    506             END DO 
    507          END DO 
     434         fraqsr_1lev(:,:) = 1._wp   ! default : no penetration 
    508435      ENDIF 
    509436      ! 
  • trunk/NEMOGCM/NEMO/OPA_SRC/TRA/trasbc.F90

    r7710 r7753  
    8888      IF( l_trdtra ) THEN                    !* Save ta and sa trends 
    8989         CALL wrk_alloc( jpi, jpj, jpk, ztrdt, ztrds )  
    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                   ztrdt(ji,jj,jk) = tsa(ji,jj,jk,jp_tem) 
    95                   ztrds(ji,jj,jk) = tsa(ji,jj,jk,jp_sal) 
    96                END DO 
    97             END DO 
    98          END DO 
     90         ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 
     91         ztrds(:,:,:) = tsa(:,:,:,jp_sal) 
    9992      ENDIF 
    10093      ! 
    10194!!gm  This should be moved into sbcmod.F90 module ? (especially now that ln_traqsr is read in namsbc namelist) 
    10295      IF( .NOT.ln_traqsr ) THEN     ! no solar radiation penetration 
    103 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    104          DO jj = 1, jpj 
    105             DO ji = 1, jpi 
    106                qns(ji,jj) = qns(ji,jj) + qsr(ji,jj)      ! total heat flux in qns 
    107                qsr(ji,jj) = 0._wp                     ! qsr set to zero 
    108             END DO 
    109          END DO 
     96         qns(:,:) = qns(:,:) + qsr(:,:)      ! total heat flux in qns 
     97         qsr(:,:) = 0._wp                     ! qsr set to zero 
    11098      ENDIF 
    11199 
     
    119107            IF(lwp) WRITE(numout,*) '          nit000-1 sbc tracer content field read in the restart file' 
    120108            zfact = 0.5_wp 
    121             DO jn = 1, jpts 
    122 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    123                DO jj = 1, jpj 
    124                   DO ji = 1, jpi 
    125                      sbc_tsc(ji,jj,jn) = 0._wp  ! needed just to ensure haloes are consistent across restarts 
    126                   END DO 
    127                END DO 
    128             END DO 
     109            sbc_tsc(:,:,:) = 0._wp 
    129110            CALL iom_get( numror, jpdom_autoglo, 'sbc_hc_b', sbc_tsc_b(:,:,jp_tem) )   ! before heat content sbc trend 
    130111            CALL iom_get( numror, jpdom_autoglo, 'sbc_sc_b', sbc_tsc_b(:,:,jp_sal) )   ! before salt content sbc trend 
    131112         ELSE                                   ! No restart or restart not found: Euler forward time stepping 
    132113            zfact = 1._wp 
    133             DO jn = 1, jpts 
    134 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    135                DO jj = 1, jpj 
    136                   DO ji = 1, jpi 
    137                      sbc_tsc(ji,jj,jn) = 0._wp 
    138                      sbc_tsc_b(ji,jj,jn) = 0._wp 
    139                   END DO 
    140                END DO 
    141             END DO 
     114            sbc_tsc(:,:,:) = 0._wp 
     115            sbc_tsc_b(:,:,:) = 0._wp 
    142116         ENDIF 
    143117      ELSE                                !* other time-steps: swap of forcing fields 
    144118         zfact = 0.5_wp 
    145          DO jn = 1, jpts 
    146 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    147             DO jj = 1, jpj 
    148                DO ji = 1, jpi 
    149                   sbc_tsc_b(ji,jj,jn) = sbc_tsc(ji,jj,jn) 
    150                END DO 
    151             END DO 
    152          END DO 
     119         sbc_tsc_b(:,:,:) = sbc_tsc(:,:,:) 
    153120      ENDIF 
    154121      !                             !==  Now sbc tracer content fields  ==! 
    155 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    156122      DO jj = 2, jpj 
    157123         DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    161127      END DO 
    162128      IF( ln_linssh ) THEN                !* linear free surface   
    163 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    164129         DO jj = 2, jpj                         !==>> add concentration/dilution effect due to constant volume cell 
    165130            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    173138      ! 
    174139      DO jn = 1, jpts               !==  update tracer trend  ==! 
    175 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    176140         DO jj = 2, jpj 
    177141            DO ji = fs_2, fs_jpim1   ! vector opt.   
     
    255219      ! 
    256220      IF( ln_iscpl .AND. ln_hsb) THEN         ! input of heat and salt due to river runoff  
    257 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji, zdep) 
    258221         DO jk = 1,jpk 
    259222            DO jj = 2, jpj  
     
    270233 
    271234      IF( l_trdtra )   THEN                      ! save the horizontal diffusive trends for further diagnostics 
    272 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    273          DO jk = 1, jpk 
    274             DO jj = 1, jpj 
    275                DO ji = 1, jpi 
    276                   ztrdt(ji,jj,jk) = tsa(ji,jj,jk,jp_tem) - ztrdt(ji,jj,jk) 
    277                   ztrds(ji,jj,jk) = tsa(ji,jj,jk,jp_sal) - ztrds(ji,jj,jk) 
    278                END DO   
    279             END DO   
    280          END DO 
     235         ztrdt(:,:,:) = tsa(:,:,:,jp_tem) - ztrdt(:,:,:) 
     236         ztrds(:,:,:) = tsa(:,:,:,jp_sal) - ztrds(:,:,:) 
    281237         CALL trd_tra( kt, 'TRA', jp_tem, jptra_nsr, ztrdt ) 
    282238         CALL trd_tra( kt, 'TRA', jp_sal, jptra_nsr, ztrds ) 
  • trunk/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf.F90

    r7698 r7753  
    5858      INTEGER, INTENT( in ) ::   kt      ! ocean time-step index 
    5959      ! 
    60       INTEGER  ::   jk, jj, ji           ! Dummy loop indices 
     60      INTEGER  ::   jk                   ! Dummy loop indices 
    6161      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztrdt, ztrds   ! 3D workspace 
    6262      !!--------------------------------------------------------------------- 
     
    7272      IF( l_trdtra )   THEN                    !* Save ta and sa trends 
    7373         CALL wrk_alloc( jpi, jpj, jpk, ztrdt, ztrds ) 
    74 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    75          DO jk = 1, jpk 
    76             DO jj = 1, jpj 
    77                DO ji = 1, jpi 
    78                   ztrdt(ji,jj,jk) = tsa(ji,jj,jk,jp_tem) 
    79                   ztrds(ji,jj,jk) = tsa(ji,jj,jk,jp_sal) 
    80                END DO 
    81             END DO 
    82          END DO 
     74         ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 
     75         ztrds(:,:,:) = tsa(:,:,:,jp_sal) 
    8376      ENDIF 
    8477      ! 
     
    9184      ! JMM avoid negative salinities near river outlet ! Ugly fix 
    9285      ! JMM : restore negative salinities to small salinities: 
    93 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    94       DO jk = 1, jpk 
    95          DO jj = 1, jpj 
    96             DO ji = 1, jpi 
    97                IF( tsa(ji,jj,jk,jp_sal) < 0._wp )   tsa(ji,jj,jk,jp_sal) = 0.1_wp 
    98             END DO 
    99          END DO 
    100       END DO 
     86      WHERE( tsa(:,:,:,jp_sal) < 0._wp )   tsa(:,:,:,jp_sal) = 0.1_wp 
    10187!!gm 
    10288 
    10389      IF( l_trdtra )   THEN                      ! save the vertical diffusive trends for further diagnostics 
    104 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    10590         DO jk = 1, jpkm1 
    106             DO jj = 1, jpj 
    107                DO ji = 1, jpi 
    108                   ztrdt(ji,jj,jk) = ( ( tsa(ji,jj,jk,jp_tem) - tsb(ji,jj,jk,jp_tem) ) / r2dt ) - ztrdt(ji,jj,jk) 
    109                   ztrds(ji,jj,jk) = ( ( tsa(ji,jj,jk,jp_sal) - tsb(ji,jj,jk,jp_sal) ) / r2dt ) - ztrds(ji,jj,jk) 
    110                END DO 
    111             END DO 
     91            ztrdt(:,:,jk) = ( ( tsa(:,:,jk,jp_tem) - tsb(:,:,jk,jp_tem) ) / r2dt ) - ztrdt(:,:,jk) 
     92            ztrds(:,:,jk) = ( ( tsa(:,:,jk,jp_sal) - tsb(:,:,jk,jp_sal) ) / r2dt ) - ztrds(:,:,jk) 
    11293         END DO 
    11394!!gm this should be moved in trdtra.F90 and done on all trends 
  • trunk/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf_imp.F90

    r7698 r7753  
    106106            ! 
    107107            ! vertical mixing coef.: avt for temperature, avs for salinity and passive tracers 
    108             IF( cdtype == 'TRA' .AND. jn == jp_tem ) THEN 
    109 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    110                DO jj = 1, jpj 
    111                   DO ji = 1, jpi 
    112                      zwt(ji,jj,2:jpk) = avt  (ji,jj,2:jpk) 
    113                   END DO 
    114                END DO 
    115             ELSE                                             
    116 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    117                DO jj = 1, jpj 
    118                   DO ji = 1, jpi 
    119                      zwt(ji,jj,2:jpk) = fsavs(ji,jj,2:jpk) 
    120                   END DO 
    121                END DO 
     108            IF( cdtype == 'TRA' .AND. jn == jp_tem ) THEN   ;   zwt(:,:,2:jpk) = avt  (:,:,2:jpk) 
     109            ELSE                                            ;   zwt(:,:,2:jpk) = fsavs(:,:,2:jpk) 
    122110            ENDIF 
    123 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    124             DO jj = 1, jpj 
    125                DO ji = 1, jpi 
    126                   zwt(ji,jj,1) = 0._wp 
    127                END DO 
    128             END DO 
     111            zwt(:,:,1) = 0._wp 
    129112            ! 
    130113            IF( l_ldfslp ) THEN            ! isoneutral diffusion: add the contribution  
    131114               IF( ln_traldf_msc  ) THEN     ! MSC iso-neutral operator  
    132 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    133115                  DO jk = 2, jpkm1 
    134116                     DO jj = 2, jpjm1 
     
    139121                  END DO 
    140122               ELSE                          ! standard or triad iso-neutral operator 
    141 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    142123                  DO jk = 2, jpkm1 
    143124                     DO jj = 2, jpjm1 
     
    151132            ! 
    152133            ! Diagonal, lower (i), upper (s)  (including the bottom boundary condition since avt is masked) 
    153 !$OMP PARALLEL  
    154 !$OMP DO schedule(static) private(jk, jj, ji) 
    155134            DO jk = 1, jpkm1 
    156135               DO jj = 2, jpjm1 
     
    183162            !   used as a work space array: its value is modified. 
    184163            ! 
    185 !$OMP DO schedule(static) private(jj, ji) 
    186164            DO jj = 2, jpjm1        !* 1st recurrence:   Tk = Dk - Ik Sk-1 / Tk-1   (increasing k) 
    187165               DO ji = fs_2, fs_jpim1            ! done one for all passive tracers (so included in the IF instruction) 
     
    189167               END DO 
    190168            END DO 
    191 !$OMP END DO NOWAIT  
    192169            DO jk = 2, jpkm1 
    193 !$OMP DO schedule(static) private(jj, ji) 
    194170               DO jj = 2, jpjm1 
    195171                  DO ji = fs_2, fs_jpim1 
     
    198174               END DO 
    199175            END DO 
    200 !$OMP END PARALLEL  
    201176            ! 
    202177         ENDIF  
    203178         !          
    204 !$OMP PARALLEL  
    205 !$OMP DO schedule(static) private(jj, ji) 
    206179         DO jj = 2, jpjm1           !* 2nd recurrence:    Zk = Yk - Ik / Tk-1  Zk-1 
    207180            DO ji = fs_2, fs_jpim1 
     
    210183         END DO 
    211184         DO jk = 2, jpkm1 
    212 !$OMP DO schedule(static) private(jj, ji, zrhs) 
    213185            DO jj = 2, jpjm1 
    214186               DO ji = fs_2, fs_jpim1 
     
    219191         END DO 
    220192         ! 
    221 !$OMP DO schedule(static) private(jj, ji) 
    222193         DO jj = 2, jpjm1           !* 3d recurrence:    Xk = (Zk - Sk Xk+1 ) / Tk   (result is the after tracer) 
    223194            DO ji = fs_2, fs_jpim1 
     
    226197         END DO 
    227198         DO jk = jpk-2, 1, -1 
    228 !$OMP DO schedule(static) private(jj, ji) 
    229199            DO jj = 2, jpjm1 
    230200               DO ji = fs_2, fs_jpim1 
     
    234204            END DO 
    235205         END DO 
    236 !$OMP END PARALLEL  
    237206         !                                            ! ================= ! 
    238207      END DO                                          !  end tracer loop  ! 
  • trunk/NEMOGCM/NEMO/OPA_SRC/TRA/zpshde.F90

    r7698 r7753  
    101101      IF( nn_timing == 1 )   CALL timing_start( 'zps_hde') 
    102102      ! 
    103       DO jn = 1, kjpt 
    104 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    105          DO jj = 1, jpjm1 
    106             DO ji = 1, jpim1 
    107                pgtu(ji,jj,jn)=0._wp   ;   zti (ji,jj,jn)=0._wp 
    108                pgtv(ji,jj,jn)=0._wp   ;   ztj (ji,jj,jn)=0._wp 
    109             END DO 
    110          END DO 
    111       END DO 
    112 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    113       DO jj = 1, jpjm1 
    114          DO ji = 1, jpim1 
    115             zhi (ji,jj  )=0._wp 
    116             zhj (ji,jj  )=0._wp 
    117          END DO 
    118        END DO 
     103      pgtu(:,:,:)=0._wp   ;   zti (:,:,:)=0._wp   ;   zhi (:,:  )=0._wp 
     104      pgtv(:,:,:)=0._wp   ;   ztj (:,:,:)=0._wp   ;   zhj (:,:  )=0._wp 
    119105      ! 
    120106      DO jn = 1, kjpt      !==   Interpolation of tracers at the last ocean level   ==! 
    121107         ! 
    122 !$OMP PARALLEL DO schedule(static) private(jj,ji,iku,ikv,ze3wu,ze3wv,zmaxu,zmaxv) 
    123108         DO jj = 1, jpjm1 
    124109            DO ji = 1, jpim1 
     
    165150      !                 
    166151      IF( PRESENT( prd ) ) THEN    !==  horizontal derivative of density anomalies (rd)  ==!    (optional part) 
    167 !$OMP PARALLEL 
    168 !$OMP DO schedule(static) private(jj,ji) 
    169          DO jj = 1, jpjm1 
    170             DO ji = 1, jpim1 
    171                pgru(ji,jj) = 0._wp 
    172                pgrv(ji,jj) = 0._wp                ! depth of the partial step level 
    173             END DO 
    174          END DO 
    175 !$OMP END DO NOWAIT 
    176 !$OMP DO schedule(static) private(jj,ji,iku,ikv,ze3wu,ze3wv) 
     152         pgru(:,:) = 0._wp 
     153         pgrv(:,:) = 0._wp                ! depth of the partial step level 
    177154         DO jj = 1, jpjm1 
    178155            DO ji = 1, jpim1 
     
    189166            END DO 
    190167         END DO 
    191 !$OMP END DO NOWAIT 
    192 !$OMP END PARALLEL 
    193168         ! 
    194169         CALL eos( zti, zhi, zri )        ! interpolated density from zti, ztj  
    195170         CALL eos( ztj, zhj, zrj )        ! at the partial step depth output in  zri, zrj  
    196171         ! 
    197 !$OMP PARALLEL DO schedule(static) private(jj,ji,iku,ikv,ze3wu,ze3wv) 
    198172         DO jj = 1, jpjm1                 ! Gradient of density at the last level  
    199173            DO ji = 1, jpim1 
Note: See TracChangeset for help on using the changeset viewer.