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 7508 for branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90 – NEMO

Ignore:
Timestamp:
2016-12-19T13:15:59+01:00 (7 years ago)
Author:
mocavero
Message:

changes on code duplication and workshare construct

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90

    r7037 r7508  
    244244            ! 
    245245!$OMP PARALLEL 
    246 !$OMP WORKSHARE 
    247             ftne(1,:) = 0._wp ; ftnw(1,:) = 0._wp ; ftse(1,:) = 0._wp ; ftsw(1,:) = 0._wp 
    248 !$OMP END WORKSHARE 
    249  
     246!$OMP DO schedule(static) private(jj) 
     247            DO jj = 1, jpj 
     248               ftne(1,jj) = 0._wp ; ftnw(1,jj) = 0._wp ; ftse(1,jj) = 0._wp ; ftsw(1,jj) = 0._wp 
     249            END DO 
    250250!$OMP DO schedule(static) private(jj, ji) 
    251251            DO jj = 2, jpj 
     
    261261            ! 
    262262         ELSE                                !== all other schemes (ENE, ENS, MIX) 
    263 !$OMP PARALLEL WORKSHARE 
    264             zwz(:,:) = 0._wp 
    265             zhf(:,:) = 0._wp 
    266 !$OMP END PARALLEL WORKSHARE 
     263!$OMP PARALLEL DO schedule(static) private(jj, ji) 
     264            DO jj = 1, jpj 
     265               DO ji = 1, jpi 
     266                  zwz(ji,jj) = 0._wp 
     267                  zhf(ji,jj) = 0._wp 
     268               END DO 
     269            END DO 
    267270            IF ( .not. ln_sco ) THEN 
    268271 
     
    276279!              zhf(:,:) = gdepw_0(:,:,jk+1) 
    277280            ELSE 
    278 !$OMP PARALLEL WORKSHARE 
    279                zhf(:,:) = hbatf(:,:) 
    280 !$OMP END PARALLEL WORKSHARE 
     281!$OMP PARALLEL DO schedule(static) private(jj, ji) 
     282               DO jj = 1, jpj 
     283                  DO ji = 1, jpi 
     284                     zhf(ji,jj) = hbatf(ji,jj) 
     285                  END DO 
     286               END DO 
    281287            END IF 
    282288 
     
    308314               END DO 
    309315            END DO 
    310 !$OMP WORKSHARE 
    311             zwz(:,:) = ff(:,:) * zwz(:,:) 
    312 !$OMP END WORKSHARE NOWAIT 
     316!$OMP DO schedule(static) private(jj, ji) 
     317               DO jj = 1, jpj 
     318                  DO ji = 1, jpi 
     319                     zwz(ji,jj) = ff(ji,jj) * zwz(ji,jj) 
     320                  END DO 
     321               END DO 
    313322!$OMP END PARALLEL 
    314323         ENDIF 
     
    330339      !                                   ! -------------------------------------------------- 
    331340!$OMP PARALLEL 
    332 !$OMP WORKSHARE 
    333       zu_frc(:,:) = 0._wp 
    334       zv_frc(:,:) = 0._wp 
    335 !$OMP END WORKSHARE 
     341!$OMP DO schedule(static) private(jj, ji) 
     342      DO jj = 1, jpj 
     343         DO ji = 1, jpi 
     344            zu_frc(ji,jj) = 0._wp 
     345            zv_frc(ji,jj) = 0._wp 
     346         END DO 
     347      END DO 
    336348      ! 
    337349      DO jk = 1, jpkm1 
     
    345357      END DO 
    346358      ! 
    347 !$OMP WORKSHARE 
    348       zu_frc(:,:) = zu_frc(:,:) * r1_hu_n(:,:) 
    349       zv_frc(:,:) = zv_frc(:,:) * r1_hv_n(:,:) 
    350 !$OMP END WORKSHARE 
    351       ! 
     359!$OMP DO schedule(static) private(jj, ji) 
     360      DO jj = 1, jpj 
     361         DO ji = 1, jpi 
     362            zu_frc(ji,jj) = zu_frc(ji,jj) * r1_hu_n(ji,jj) 
     363            zv_frc(ji,jj) = zv_frc(ji,jj) * r1_hv_n(ji,jj) 
     364         END DO 
     365      END DO 
    352366      ! 
    353367      !                                   !* baroclinic momentum trend (remove the vertical mean trend) 
     
    364378      !                                   !* barotropic Coriolis trends (vorticity scheme dependent) 
    365379      !                                   ! -------------------------------------------------------- 
    366 !$OMP WORKSHARE 
    367       zwx(:,:) = un_b(:,:) * hu_n(:,:) * e2u(:,:)        ! now fluxes  
    368       zwy(:,:) = vn_b(:,:) * hv_n(:,:) * e1v(:,:) 
    369 !$OMP END WORKSHARE NOWAIT 
     380!$OMP DO schedule(static) private(jj, ji) 
     381      DO jj = 1, jpj 
     382         DO ji = 1, jpi 
     383            zwx(ji,jj) = un_b(ji,jj) * hu_n(ji,jj) * e2u(ji,jj)        ! now fluxes  
     384            zwy(ji,jj) = vn_b(ji,jj) * hv_n(ji,jj) * e1v(ji,jj) 
     385         END DO 
     386      END DO 
    370387!$OMP END PARALLEL 
    371388      ! 
     
    419436        IF( ln_wd ) THEN                        ! Calculating and applying W/D gravity filters 
    420437!$OMP PARALLEL 
    421 !$OMP WORKSHARE 
    422           wduflt1(:,:) = 1.0_wp 
    423           wdvflt1(:,:) = 1.0_wp 
    424 !$OMP END WORKSHARE 
     438!$OMP DO schedule(static) private(jj, ji) 
     439          DO jj = 1, jpj 
     440             DO ji = 1, jpi 
     441                wduflt1(ji,jj) = 1.0_wp 
     442                wdvflt1(ji,jj) = 1.0_wp 
     443             END DO 
     444          END DO 
    425445!$OMP DO schedule(static) private(jj,ji,ll_tmp1,ll_tmp2) 
    426446          DO jj = 2, jpjm1 
     
    529549         END DO 
    530550      ELSE 
    531 !$OMP PARALLEL WORKSHARE 
    532         zu_frc(:,:) = zu_frc(:,:) + r1_hu_n(:,:) * bfrua(:,:) * zwx(:,:) 
    533         zv_frc(:,:) = zv_frc(:,:) + r1_hv_n(:,:) * bfrva(:,:) * zwy(:,:) 
    534 !$OMP END PARALLEL WORKSHARE 
     551!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     552         DO jj = 1, jpj 
     553            DO ji = 1, jpi 
     554               zu_frc(ji,jj) = zu_frc(ji,jj) + r1_hu_n(ji,jj) * bfrua(ji,jj) * zwx(ji,jj) 
     555               zv_frc(ji,jj) = zv_frc(ji,jj) + r1_hv_n(ji,jj) * bfrva(ji,jj) * zwy(ji,jj) 
     556            END DO 
     557         END DO 
    535558      END IF 
    536559      ! 
     
    559582      ! 
    560583      ! Note that the "unclipped" top friction parameter is used even with explicit drag 
    561 !$OMP PARALLEL WORKSHARE 
    562       zu_frc(:,:) = zu_frc(:,:) + r1_hu_n(:,:) * tfrua(:,:) * zwx(:,:) 
    563       zv_frc(:,:) = zv_frc(:,:) + r1_hv_n(:,:) * tfrva(:,:) * zwy(:,:) 
    564 !$OMP END PARALLEL WORKSHARE 
     584!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     585      DO jj = 1, jpj 
     586         DO ji = 1, jpi 
     587            zu_frc(ji,jj) = zu_frc(ji,jj) + r1_hu_n(ji,jj) * tfrua(ji,jj) * zwx(ji,jj) 
     588            zv_frc(ji,jj) = zv_frc(ji,jj) + r1_hv_n(ji,jj) * tfrva(ji,jj) * zwy(ji,jj) 
     589         END DO 
     590      END DO 
    565591      !        
    566592      IF (ln_bt_fw) THEN                        ! Add wind forcing 
    567 !$OMP PARALLEL WORKSHARE 
    568          zu_frc(:,:) =  zu_frc(:,:) + zraur * utau(:,:) * r1_hu_n(:,:) 
    569          zv_frc(:,:) =  zv_frc(:,:) + zraur * vtau(:,:) * r1_hv_n(:,:) 
    570 !$OMP END PARALLEL WORKSHARE 
     593!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     594         DO jj = 1, jpj 
     595            DO ji = 1, jpi 
     596               zu_frc(ji,jj) =  zu_frc(ji,jj) + zraur * utau(ji,jj) * r1_hu_n(ji,jj) 
     597               zv_frc(ji,jj) =  zv_frc(ji,jj) + zraur * vtau(ji,jj) * r1_hv_n(ji,jj) 
     598            END DO 
     599         END DO 
    571600      ELSE 
    572 !$OMP PARALLEL WORKSHARE 
    573          zu_frc(:,:) =  zu_frc(:,:) + zraur * z1_2 * ( utau_b(:,:) + utau(:,:) ) * r1_hu_n(:,:) 
    574          zv_frc(:,:) =  zv_frc(:,:) + zraur * z1_2 * ( vtau_b(:,:) + vtau(:,:) ) * r1_hv_n(:,:) 
    575 !$OMP END PARALLEL WORKSHARE 
     601!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     602         DO jj = 1, jpj 
     603            DO ji = 1, jpi 
     604               zu_frc(ji,jj) =  zu_frc(ji,jj) + zraur * z1_2 * ( utau_b(ji,jj) + utau(ji,jj) ) * r1_hu_n(ji,jj) 
     605               zv_frc(ji,jj) =  zv_frc(ji,jj) + zraur * z1_2 * ( vtau_b(ji,jj) + vtau(ji,jj) ) * r1_hv_n(ji,jj) 
     606            END DO 
     607         END DO 
    576608      ENDIF   
    577609      ! 
     
    605637      !                                         ! Surface net water flux and rivers 
    606638      IF (ln_bt_fw) THEN 
    607 !$OMP PARALLEL WORKSHARE 
    608          zssh_frc(:,:) = zraur * ( emp(:,:) - rnf(:,:) + fwfisf(:,:) ) 
    609 !$OMP END PARALLEL WORKSHARE 
     639!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     640         DO jj = 1, jpj 
     641            DO ji = 1, jpi 
     642               zssh_frc(ji,jj) = zraur * ( emp(ji,jj) - rnf(ji,jj) + fwfisf(ji,jj) ) 
     643            END DO 
     644         END DO 
    610645      ELSE 
    611 !$OMP PARALLEL WORKSHARE 
    612          zssh_frc(:,:) = zraur * z1_2 * (  emp(:,:) + emp_b(:,:) - rnf(:,:) - rnf_b(:,:)   & 
    613                 &                        + fwfisf(:,:) + fwfisf_b(:,:)                     ) 
    614 !$OMP END PARALLEL WORKSHARE 
     646!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     647         DO jj = 1, jpj 
     648            DO ji = 1, jpi 
     649               zssh_frc(ji,jj) = zraur * z1_2 * (  emp(ji,jj) + emp_b(ji,jj) - rnf(ji,jj) - rnf_b(ji,jj)   & 
     650                &                        + fwfisf(ji,jj) + fwfisf_b(ji,jj)                     ) 
     651            END DO 
     652         END DO 
    615653      ENDIF 
    616654#if defined key_asminc 
    617655      !                                         ! Include the IAU weighted SSH increment 
    618656      IF( lk_asminc .AND. ln_sshinc .AND. ln_asmiau ) THEN 
    619 !$OMP PARALLEL WORKSHARE 
    620          zssh_frc(:,:) = zssh_frc(:,:) - ssh_iau(:,:) 
    621 !$OMP END PARALLEL WORKSHARE 
     657!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     658         DO jj = 1, jpj 
     659            DO ji = 1, jpi 
     660               zssh_frc(ji,jj) = zssh_frc(ji,jj) - ssh_iau(ji,jj) 
     661            END DO 
     662         END DO 
    622663      ENDIF 
    623664#endif 
     
    637678      ! Initialize barotropic variables:       
    638679      IF( ll_init )THEN 
    639 !$OMP PARALLEL WORKSHARE 
    640          sshbb_e(:,:) = 0._wp 
    641          ubb_e  (:,:) = 0._wp 
    642          vbb_e  (:,:) = 0._wp 
    643          sshb_e (:,:) = 0._wp 
    644          ub_e   (:,:) = 0._wp 
    645          vb_e   (:,:) = 0._wp 
    646 !$OMP END PARALLEL WORKSHARE 
     680!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     681         DO jj = 1, jpj 
     682            DO ji = 1, jpi 
     683               sshbb_e(ji,jj) = 0._wp 
     684               ubb_e  (ji,jj) = 0._wp 
     685               vbb_e  (ji,jj) = 0._wp 
     686               sshb_e (ji,jj) = 0._wp 
     687               ub_e   (ji,jj) = 0._wp 
     688               vb_e   (ji,jj) = 0._wp 
     689            END DO 
     690         END DO 
    647691      ENDIF 
    648692 
     
    659703      ! 
    660704      IF (ln_bt_fw) THEN                  ! FORWARD integration: start from NOW fields                     
    661 !$OMP PARALLEL WORKSHARE 
    662          sshn_e(:,:) =    sshn(:,:)             
    663          un_e  (:,:) =    un_b(:,:)             
    664          vn_e  (:,:) =    vn_b(:,:) 
    665          ! 
    666          hu_e  (:,:) =    hu_n(:,:)        
    667          hv_e  (:,:) =    hv_n(:,:)  
    668          hur_e (:,:) = r1_hu_n(:,:)     
    669          hvr_e (:,:) = r1_hv_n(:,:) 
    670 !$OMP END PARALLEL WORKSHARE 
     705!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     706         DO jj = 1, jpj 
     707            DO ji = 1, jpi 
     708               sshn_e(ji,jj) =    sshn(ji,jj)             
     709               un_e  (ji,jj) =    un_b(ji,jj)             
     710               vn_e  (ji,jj) =    vn_b(ji,jj) 
     711                ! 
     712               hu_e  (ji,jj) =    hu_n(ji,jj)        
     713               hv_e  (ji,jj) =    hv_n(ji,jj)  
     714               hur_e (ji,jj) = r1_hu_n(ji,jj)     
     715               hvr_e (ji,jj) = r1_hv_n(ji,jj) 
     716            END DO 
     717         END DO 
    671718      ELSE                                ! CENTRED integration: start from BEFORE fields 
    672 !$OMP PARALLEL WORKSHARE 
    673          sshn_e(:,:) =    sshb(:,:) 
    674          un_e  (:,:) =    ub_b(:,:)          
    675          vn_e  (:,:) =    vb_b(:,:) 
    676          ! 
    677          hu_e  (:,:) =    hu_b(:,:)        
    678          hv_e  (:,:) =    hv_b(:,:)  
    679          hur_e (:,:) = r1_hu_b(:,:)     
    680          hvr_e (:,:) = r1_hv_b(:,:) 
    681 !$OMP END PARALLEL WORKSHARE 
     719!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     720         DO jj = 1, jpj 
     721            DO ji = 1, jpi 
     722               sshn_e(ji,jj) =    sshb(ji,jj) 
     723               un_e  (ji,jj) =    ub_b(ji,jj)          
     724               vn_e  (ji,jj) =    vb_b(ji,jj) 
     725                 ! 
     726               hu_e  (ji,jj) =    hu_b(ji,jj)        
     727               hv_e  (ji,jj) =    hv_b(ji,jj)  
     728               hur_e (ji,jj) = r1_hu_b(ji,jj)     
     729               hvr_e (ji,jj) = r1_hv_b(ji,jj) 
     730            END DO 
     731         END DO 
    682732      ENDIF 
    683733      ! 
     
    685735      ! 
    686736      ! Initialize sums: 
    687 !$OMP PARALLEL WORKSHARE 
    688       ua_b  (:,:) = 0._wp       ! After barotropic velocities (or transport if flux form)           
    689       va_b  (:,:) = 0._wp 
    690       ssha  (:,:) = 0._wp       ! Sum for after averaged sea level 
    691       un_adv(:,:) = 0._wp       ! Sum for now transport issued from ts loop 
    692       vn_adv(:,:) = 0._wp 
    693 !$OMP END PARALLEL WORKSHARE 
     737!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     738         DO jj = 1, jpj 
     739            DO ji = 1, jpi 
     740               ua_b  (ji,jj) = 0._wp       ! After barotropic velocities (or transport if flux form)           
     741               va_b  (ji,jj) = 0._wp 
     742               ssha  (ji,jj) = 0._wp       ! Sum for after averaged sea level 
     743               un_adv(ji,jj) = 0._wp       ! Sum for now transport issued from ts loop 
     744               vn_adv(ji,jj) = 0._wp 
     745            END DO 
     746         END DO 
    694747      !                                             ! ==================== ! 
    695748      DO jn = 1, icycle                             !  sub-time-step loop  ! 
     
    715768 
    716769         ! Extrapolate barotropic velocities at step jit+0.5: 
    717 !$OMP PARALLEL WORKSHARE 
    718          ua_e(:,:) = za1 * un_e(:,:) + za2 * ub_e(:,:) + za3 * ubb_e(:,:) 
    719          va_e(:,:) = za1 * vn_e(:,:) + za2 * vb_e(:,:) + za3 * vbb_e(:,:) 
    720 !$OMP END PARALLEL WORKSHARE 
     770!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     771         DO jj = 1, jpj 
     772            DO ji = 1, jpi 
     773               ua_e(ji,jj) = za1 * un_e(ji,jj) + za2 * ub_e(ji,jj) + za3 * ubb_e(ji,jj) 
     774               va_e(ji,jj) = za1 * vn_e(ji,jj) + za2 * vb_e(ji,jj) + za3 * vbb_e(ji,jj) 
     775            END DO 
     776         END DO 
    721777 
    722778         IF( .NOT.ln_linssh ) THEN                        !* Update ocean depth (variable volume case only) 
     
    724780            ! Extrapolate Sea Level at step jit+0.5: 
    725781!$OMP PARALLEL  
    726 !$OMP WORKSHARE 
    727             zsshp2_e(:,:) = za1 * sshn_e(:,:)  + za2 * sshb_e(:,:) + za3 * sshbb_e(:,:) 
    728 !$OMP END WORKSHARE 
     782!$OMP DO schedule(static) private(jj,ji) 
     783            DO jj = 1, jpj 
     784               DO ji = 1, jpi 
     785                  zsshp2_e(ji,jj) = za1 * sshn_e(ji,jj)  + za2 * sshb_e(ji,jj) + za3 * sshbb_e(ji,jj) 
     786               END DO 
     787            END DO 
    729788            ! 
    730789!$OMP DO schedule(static) private(jj,ji) 
     
    743802            CALL lbc_lnk_multi( zwx, 'U', 1._wp, zwy, 'V', 1._wp ) 
    744803            ! 
    745 !$OMP PARALLEL WORKSHARE 
    746             zhup2_e (:,:) = hu_0(:,:) + zwx(:,:)                ! Ocean depth at U- and V-points 
    747             zhvp2_e (:,:) = hv_0(:,:) + zwy(:,:) 
    748 !$OMP END PARALLEL WORKSHARE 
     804!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     805            DO jj = 1, jpj 
     806               DO ji = 1, jpi 
     807                  zhup2_e (ji,jj) = hu_0(ji,jj) + zwx(ji,jj)                ! Ocean depth at U- and V-points 
     808                  zhvp2_e (ji,jj) = hv_0(ji,jj) + zwy(ji,jj) 
     809               END DO 
     810            END DO 
    749811            IF( ln_wd ) THEN 
    750812!$OMP PARALLEL DO schedule(static) private(jj,ji) 
    751             DO jj = 1, jpj 
    752                DO ji = 1, jpi   ! vector opt. 
    753                   zhup2_e(ji,jj) = MAX(zhup2_e (ji,jj), rn_wdmin1) 
    754                   zhvp2_e(ji,jj) = MAX(zhvp2_e (ji,jj), rn_wdmin1) 
    755                END DO 
    756             END DO 
     813               DO jj = 1, jpj 
     814                  DO ji = 1, jpi   ! vector opt. 
     815                     zhup2_e(ji,jj) = MAX(zhup2_e (ji,jj), rn_wdmin1) 
     816                     zhvp2_e(ji,jj) = MAX(zhvp2_e (ji,jj), rn_wdmin1) 
     817                  END DO 
     818               END DO 
    757819            END IF 
    758820         ELSE 
    759 !$OMP PARALLEL WORKSHARE 
    760             zhup2_e (:,:) = hu_n(:,:) 
    761             zhvp2_e (:,:) = hv_n(:,:) 
    762 !$OMP END PARALLEL WORKSHARE 
     821!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     822            DO jj = 1, jpj 
     823               DO ji = 1, jpi 
     824                  zhup2_e (ji,jj) = hu_n(ji,jj) 
     825                  zhvp2_e (ji,jj) = hv_n(ji,jj) 
     826               END DO 
     827            END DO 
    763828         ENDIF 
    764829         !                                                !* after ssh 
     
    767832         ! considering fluxes below: 
    768833         ! 
    769 !$OMP PARALLEL WORKSHARE 
    770          zwx(:,:) = e2u(:,:) * ua_e(:,:) * zhup2_e(:,:)         ! fluxes at jn+0.5 
    771          zwy(:,:) = e1v(:,:) * va_e(:,:) * zhvp2_e(:,:) 
    772 !$OMP END PARALLEL WORKSHARE 
     834!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     835         DO jj = 1, jpj 
     836            DO ji = 1, jpi 
     837               zwx(ji,jj) = e2u(ji,jj) * ua_e(ji,jj) * zhup2_e(ji,jj)         ! fluxes at jn+0.5 
     838               zwy(ji,jj) = e1v(ji,jj) * va_e(ji,jj) * zhvp2_e(ji,jj) 
     839            END DO 
     840         END DO 
    773841         ! 
    774842#if defined key_agrif 
     
    802870         za2 = wgtbtp2(jn) 
    803871!$OMP PARALLEL 
    804 !$OMP WORKSHARE 
    805          un_adv(:,:) = un_adv(:,:) + za2 * zwx(:,:) * r1_e2u(:,:) 
    806          vn_adv(:,:) = vn_adv(:,:) + za2 * zwy(:,:) * r1_e1v(:,:) 
    807 !$OMP END WORKSHARE NOWAIT 
     872!$OMP DO schedule(static) private(jj,ji) 
     873         DO jj = 1, jpj 
     874            DO ji = 1, jpi 
     875               un_adv(ji,jj) = un_adv(ji,jj) + za2 * zwx(ji,jj) * r1_e2u(ji,jj) 
     876               vn_adv(ji,jj) = vn_adv(ji,jj) + za2 * zwy(ji,jj) * r1_e1v(ji,jj) 
     877            END DO 
     878         END DO 
     879!$OMP END DO NOWAIT 
    808880         ! 
    809881         ! Set next sea level: 
     
    815887            END DO 
    816888         END DO 
    817 !$OMP WORKSHARE 
    818          ssha_e(:,:) = (  sshn_e(:,:) - rdtbt * ( zssh_frc(:,:) + zhdiv(:,:) )  ) * ssmask(:,:) 
    819 !$OMP END WORKSHARE NOWAIT 
     889!$OMP DO schedule(static) private(jj,ji) 
     890         DO jj = 1, jpj 
     891            DO ji = 1, jpi 
     892               ssha_e(ji,jj) = (  sshn_e(ji,jj) - rdtbt * ( zssh_frc(ji,jj) + zhdiv(ji,jj) )  ) * ssmask(ji,jj) 
     893            END DO 
     894         END DO 
     895!$OMP END DO NOWAIT 
    820896!$OMP END PARALLEL 
    821897         IF( ln_wd ) THEN 
     
    872948         ENDIF 
    873949         ! 
    874          zsshp2_e(:,:) = za0 *  ssha_e(:,:) + za1 *  sshn_e (:,:) & 
    875           &            + za2 *  sshb_e(:,:) + za3 *  sshbb_e(:,:) 
     950!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     951         DO jj = 1, jpj 
     952            DO ji = 1, jpi 
     953               zsshp2_e(ji,jj) = za0 *  ssha_e(ji,jj) + za1 *  sshn_e (ji,jj) & 
     954                &            + za2 *  sshb_e(ji,jj) + za3 *  sshbb_e(ji,jj) 
     955            END DO 
     956         END DO 
    876957         IF( ln_wd ) THEN                   ! Calculating and applying W/D gravity filters 
    877958!$OMP PARALLEL 
    878 !$OMP WORKSHARE 
    879            wduflt1(:,:) = 1._wp 
    880            wdvflt1(:,:) = 1._wp 
    881 !$OMP END WORKSHARE 
     959!$OMP DO schedule(static) private(jj,ji) 
     960           DO jj = 1, jpj 
     961              DO ji = 1, jpi 
     962                 wduflt1(ji,jj) = 1._wp 
     963                 wdvflt1(ji,jj) = 1._wp 
     964              END DO 
     965           END DO 
    882966!$OMP DO schedule(static) private(jj,ji,ll_tmp1,ll_tmp2) 
    883967           DO jj = 2, jpjm1 
     
    10141098         ! 
    10151099         ! Add bottom stresses: 
    1016 !$OMP PARALLEL WORKSHARE 
    1017          zu_trd(:,:) = zu_trd(:,:) + bfrua(:,:) * un_e(:,:) * hur_e(:,:) 
    1018          zv_trd(:,:) = zv_trd(:,:) + bfrva(:,:) * vn_e(:,:) * hvr_e(:,:) 
    1019          ! 
    1020          ! Add top stresses: 
    1021          zu_trd(:,:) = zu_trd(:,:) + tfrua(:,:) * un_e(:,:) * hur_e(:,:) 
    1022          zv_trd(:,:) = zv_trd(:,:) + tfrva(:,:) * vn_e(:,:) * hvr_e(:,:) 
    1023 !$OMP END PARALLEL WORKSHARE 
     1100!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     1101         DO jj = 1, jpj 
     1102            DO ji = 1, jpi 
     1103               zu_trd(ji,jj) = zu_trd(ji,jj) + bfrua(ji,jj) * un_e(ji,jj) * hur_e(ji,jj) 
     1104               zv_trd(ji,jj) = zv_trd(ji,jj) + bfrva(ji,jj) * vn_e(ji,jj) * hvr_e(ji,jj) 
     1105               ! 
     1106               ! Add top stresses: 
     1107               zu_trd(ji,jj) = zu_trd(ji,jj) + tfrua(ji,jj) * un_e(ji,jj) * hur_e(ji,jj) 
     1108               zv_trd(ji,jj) = zv_trd(ji,jj) + tfrva(ji,jj) * vn_e(ji,jj) * hvr_e(ji,jj) 
     1109            END DO 
     1110         END DO 
    10241111         ! 
    10251112         ! Surface pressure trend: 
     
    11091196            END DO 
    11101197            ELSE 
    1111 !$OMP PARALLEL WORKSHARE 
    1112               hu_e (:,:) = hu_0(:,:) + zsshu_a(:,:) 
    1113               hv_e (:,:) = hv_0(:,:) + zsshv_a(:,:) 
    1114 !$OMP END PARALLEL WORKSHARE 
     1198!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     1199            DO jj = 1, jpj 
     1200               DO ji = 1, jpi 
     1201                  hu_e (ji,jj) = hu_0(ji,jj) + zsshu_a(ji,jj) 
     1202                  hv_e (ji,jj) = hv_0(ji,jj) + zsshv_a(ji,jj) 
     1203               END DO 
     1204            END DO 
    11151205            END IF 
    1116 !$OMP PARALLEL WORKSHARE 
    1117             hur_e(:,:) = ssumask(:,:) / ( hu_e(:,:) + 1._wp - ssumask(:,:) ) 
    1118             hvr_e(:,:) = ssvmask(:,:) / ( hv_e(:,:) + 1._wp - ssvmask(:,:) ) 
    1119 !$OMP END PARALLEL WORKSHARE 
     1206!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     1207            DO jj = 1, jpj 
     1208               DO ji = 1, jpi 
     1209                  hur_e(ji,jj) = ssumask(ji,jj) / ( hu_e(ji,jj) + 1._wp - ssumask(ji,jj) ) 
     1210                  hvr_e(ji,jj) = ssvmask(ji,jj) / ( hv_e(ji,jj) + 1._wp - ssvmask(ji,jj) ) 
     1211               END DO 
     1212            END DO 
    11201213            ! 
    11211214         ENDIF 
     
    11321225         !                                             !* Swap 
    11331226         !                                             !  ---- 
    1134 !$OMP PARALLEL WORKSHARE 
    1135          ubb_e  (:,:) = ub_e  (:,:) 
    1136          ub_e   (:,:) = un_e  (:,:) 
    1137          un_e   (:,:) = ua_e  (:,:) 
    1138          ! 
    1139          vbb_e  (:,:) = vb_e  (:,:) 
    1140          vb_e   (:,:) = vn_e  (:,:) 
    1141          vn_e   (:,:) = va_e  (:,:) 
    1142          ! 
    1143          sshbb_e(:,:) = sshb_e(:,:) 
    1144          sshb_e (:,:) = sshn_e(:,:) 
    1145          sshn_e (:,:) = ssha_e(:,:) 
    1146 !$OMP END PARALLEL WORKSHARE 
     1227!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     1228         DO jj = 1, jpj 
     1229            DO ji = 1, jpi 
     1230               ubb_e  (ji,jj) = ub_e  (ji,jj) 
     1231               ub_e   (ji,jj) = un_e  (ji,jj) 
     1232               un_e   (ji,jj) = ua_e  (ji,jj) 
     1233               ! 
     1234               vbb_e  (ji,jj) = vb_e  (ji,jj) 
     1235               vb_e   (ji,jj) = vn_e  (ji,jj) 
     1236               vn_e   (ji,jj) = va_e  (ji,jj) 
     1237               ! 
     1238               sshbb_e(ji,jj) = sshb_e(ji,jj) 
     1239               sshb_e (ji,jj) = sshn_e(ji,jj) 
     1240               sshn_e (ji,jj) = ssha_e(ji,jj) 
     1241            END DO 
     1242         END DO 
    11471243 
    11481244         !                                             !* Sum over whole bt loop 
     
    11501246         za1 = wgtbtp1(jn)                                     
    11511247         IF( ln_dynadv_vec .OR. ln_linssh ) THEN    ! Sum velocities 
    1152 !$OMP PARALLEL WORKSHARE 
    1153             ua_b  (:,:) = ua_b  (:,:) + za1 * ua_e  (:,:)  
    1154             va_b  (:,:) = va_b  (:,:) + za1 * va_e  (:,:)  
    1155 !$OMP END PARALLEL WORKSHARE 
     1248!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     1249            DO jj = 1, jpj 
     1250               DO ji = 1, jpi 
     1251                  ua_b  (ji,jj) = ua_b  (ji,jj) + za1 * ua_e  (ji,jj)  
     1252                  va_b  (ji,jj) = va_b  (ji,jj) + za1 * va_e  (ji,jj)  
     1253               END DO 
     1254            END DO 
    11561255         ELSE                                              ! Sum transports 
    1157 !$OMP PARALLEL WORKSHARE 
    1158             ua_b  (:,:) = ua_b  (:,:) + za1 * ua_e  (:,:) * hu_e (:,:) 
    1159             va_b  (:,:) = va_b  (:,:) + za1 * va_e  (:,:) * hv_e (:,:) 
    1160 !$OMP END PARALLEL WORKSHARE 
     1256!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     1257            DO jj = 1, jpj 
     1258               DO ji = 1, jpi 
     1259                  ua_b  (ji,jj) = ua_b  (ji,jj) + za1 * ua_e  (ji,jj) * hu_e (ji,jj) 
     1260                  va_b  (ji,jj) = va_b  (ji,jj) + za1 * va_e  (ji,jj) * hv_e (ji,jj) 
     1261               END DO 
     1262            END DO 
    11611263         ENDIF 
    11621264         !                                   ! Sum sea level 
    1163 !$OMP PARALLEL WORKSHARE 
    1164          ssha(:,:) = ssha(:,:) + za1 * ssha_e(:,:) 
    1165 !$OMP END PARALLEL WORKSHARE 
     1265!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     1266         DO jj = 1, jpj 
     1267            DO ji = 1, jpi 
     1268               ssha(ji,jj) = ssha(ji,jj) + za1 * ssha_e(ji,jj) 
     1269            END DO 
     1270         END DO 
    11661271         !                                                 ! ==================== ! 
    11671272      END DO                                               !        end loop      ! 
     
    11721277      ! 
    11731278      ! Set advection velocity correction: 
    1174 !$OMP PARALLEL WORKSHARE 
    1175       zwx(:,:) = un_adv(:,:) 
    1176       zwy(:,:) = vn_adv(:,:) 
    1177 !$OMP END PARALLEL WORKSHARE 
     1279!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     1280      DO jj = 1, jpj 
     1281         DO ji = 1, jpi 
     1282            zwx(ji,jj) = un_adv(ji,jj) 
     1283            zwy(ji,jj) = vn_adv(ji,jj) 
     1284         END DO 
     1285      END DO 
    11781286      IF( ( kt == nit000 .AND. neuler==0 ) .OR. .NOT.ln_bt_fw ) THEN      
    1179 !$OMP PARALLEL WORKSHARE 
    1180          un_adv(:,:) = zwx(:,:) * r1_hu_n(:,:) 
    1181          vn_adv(:,:) = zwy(:,:) * r1_hv_n(:,:) 
    1182 !$OMP END PARALLEL WORKSHARE 
     1287!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     1288         DO jj = 1, jpj 
     1289            DO ji = 1, jpi 
     1290               un_adv(ji,jj) = zwx(ji,jj) * r1_hu_n(ji,jj) 
     1291               vn_adv(ji,jj) = zwy(ji,jj) * r1_hv_n(ji,jj) 
     1292            END DO 
     1293         END DO 
    11831294      ELSE 
    1184 !$OMP PARALLEL WORKSHARE 
    1185          un_adv(:,:) = z1_2 * ( ub2_b(:,:) + zwx(:,:) ) * r1_hu_n(:,:) 
    1186          vn_adv(:,:) = z1_2 * ( vb2_b(:,:) + zwy(:,:) ) * r1_hv_n(:,:) 
    1187 !$OMP END PARALLEL WORKSHARE 
     1295!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     1296         DO jj = 1, jpj 
     1297            DO ji = 1, jpi 
     1298               un_adv(ji,jj) = z1_2 * ( ub2_b(ji,jj) + zwx(ji,jj) ) * r1_hu_n(ji,jj) 
     1299               vn_adv(ji,jj) = z1_2 * ( vb2_b(ji,jj) + zwy(ji,jj) ) * r1_hv_n(ji,jj) 
     1300            END DO 
     1301         END DO 
    11881302      END IF 
    11891303 
    11901304      IF( ln_bt_fw ) THEN ! Save integrated transport for next computation 
    1191 !$OMP PARALLEL WORKSHARE 
    1192          ub2_b(:,:) = zwx(:,:) 
    1193          vb2_b(:,:) = zwy(:,:) 
    1194 !$OMP END PARALLEL WORKSHARE 
     1305!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     1306         DO jj = 1, jpj 
     1307            DO ji = 1, jpi 
     1308               ub2_b(ji,jj) = zwx(ji,jj) 
     1309               vb2_b(ji,jj) = zwy(ji,jj) 
     1310            END DO 
     1311         END DO 
    11951312      ENDIF 
    11961313      ! 
     
    12251342!$OMP END DO NOWAIT 
    12261343         ! Save barotropic velocities not transport: 
    1227 !$OMP WORKSHARE 
    1228          ua_b(:,:) =  ua_b(:,:) / ( hu_0(:,:) + zsshu_a(:,:) + 1._wp - ssumask(:,:) ) 
    1229          va_b(:,:) =  va_b(:,:) / ( hv_0(:,:) + zsshv_a(:,:) + 1._wp - ssvmask(:,:) ) 
    1230 !$OMP END WORKSHARE NOWAIT 
     1344!$OMP DO schedule(static) private(jj,ji) 
     1345         DO jj = 1, jpj 
     1346            DO ji = 1, jpi 
     1347               ua_b(ji,jj) =  ua_b(ji,jj) / ( hu_0(ji,jj) + zsshu_a(ji,jj) + 1._wp - ssumask(ji,jj) ) 
     1348               va_b(ji,jj) =  va_b(ji,jj) / ( hv_0(ji,jj) + zsshv_a(ji,jj) + 1._wp - ssvmask(ji,jj) ) 
     1349            END DO 
     1350         END DO 
    12311351!$OMP END PARALLEL 
    12321352      ENDIF 
     
    12491369      IF( .NOT.Agrif_Root() .AND. ln_bt_fw ) THEN 
    12501370         IF( Agrif_NbStepint() == 0 ) THEN 
    1251 !$OMP PARALLEL WORKSHARE 
    1252             ub2_i_b(:,:) = 0._wp 
    1253             vb2_i_b(:,:) = 0._wp 
    1254 !$OMP END PARALLEL WORKSHARE 
     1371!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     1372            DO jj = 1, jpj 
     1373               DO ji = 1, jpi 
     1374                  ub2_i_b(ji,jj) = 0._wp 
     1375                  vb2_i_b(ji,jj) = 0._wp 
     1376               END DO 
     1377            END DO 
    12551378         END IF 
    12561379         ! 
    12571380         za1 = 1._wp / REAL(Agrif_rhot(), wp) 
    1258 !$OMP PARALLEL WORKSHARE 
    1259          ub2_i_b(:,:) = ub2_i_b(:,:) + za1 * ub2_b(:,:) 
    1260          vb2_i_b(:,:) = vb2_i_b(:,:) + za1 * vb2_b(:,:) 
    1261 !$OMP END PARALLEL WORKSHARE 
     1381!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     1382         DO jj = 1, jpj 
     1383            DO ji = 1, jpi 
     1384               ub2_i_b(ji,jj) = ub2_i_b(ji,jj) + za1 * ub2_b(ji,jj) 
     1385               vb2_i_b(ji,jj) = vb2_i_b(ji,jj) + za1 * vb2_b(ji,jj) 
     1386            END DO 
     1387         END DO 
    12621388      ENDIF 
    12631389#endif       
Note: See TracChangeset for help on using the changeset viewer.