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

Ignore:
Timestamp:
2016-06-28T11:53:56+02:00 (8 years ago)
Author:
mocavero
Message:

GYRE hybrid parallelization

File:
1 edited

Legend:

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

    r6152 r6748  
    222222            SELECT CASE( nn_een_e3f )              !* ff/e3 at F-point 
    223223            CASE ( 0 )                                   ! original formulation  (masked averaging of e3t divided by 4) 
     224!$OMP PARALLEL DO schedule(static) private(jj, ji) 
    224225               DO jj = 1, jpjm1 
    225226                  DO ji = 1, jpim1 
     
    230231               END DO 
    231232            CASE ( 1 )                                   ! new formulation  (masked averaging of e3t divided by the sum of mask) 
     233!$OMP PARALLEL DO schedule(static) private(jj, ji) 
    232234               DO jj = 1, jpjm1 
    233235                  DO ji = 1, jpim1 
     
    243245            ! 
    244246            ftne(1,:) = 0._wp ; ftnw(1,:) = 0._wp ; ftse(1,:) = 0._wp ; ftsw(1,:) = 0._wp 
     247 
     248!$OMP PARALLEL DO schedule(static) private(jj, ji) 
    245249            DO jj = 2, jpj 
    246250               DO ji = 2, jpi 
     
    253257            ! 
    254258         ELSE                                !== all other schemes (ENE, ENS, MIX) 
     259!$OMP PARALLEL WORKSHARE 
    255260            zwz(:,:) = 0._wp 
    256261            zhf(:,:) = 0._wp 
     262!$OMP END PARALLEL WORKSHARE 
    257263            IF ( .not. ln_sco ) THEN 
    258264 
     
    269275            END IF 
    270276 
     277!$OMP PARALLEL DO schedule(static) private(jj, ji) 
    271278            DO jj = 1, jpjm1 
    272                zhf(:,jj) = zhf(:,jj) * (1._wp- umask(:,jj,1) * umask(:,jj+1,1)) 
     279               DO ji = 1, jpi 
     280                  zhf(ji,jj) = zhf(ji,jj) * (1._wp- umask(ji,jj,1) * umask(ji,jj+1,1)) 
     281               END DO 
    273282            END DO 
    274283 
    275284            DO jk = 1, jpkm1 
     285!$OMP PARALLEL DO schedule(static) private(jj, ji) 
    276286               DO jj = 1, jpjm1 
    277                   zhf(:,jj) = zhf(:,jj) + e3f_n(:,jj,jk) * umask(:,jj,jk) * umask(:,jj+1,jk) 
     287                  DO ji = 1, jpi 
     288                     zhf(ji,jj) = zhf(ji,jj) + e3f_n(ji,jj,jk) * umask(ji,jj,jk) * umask(ji,jj+1,jk) 
     289                  END DO 
    278290               END DO 
    279291            END DO 
    280292            CALL lbc_lnk( zhf, 'F', 1._wp ) 
    281293            ! JC: TBC. hf should be greater than 0  
     294!$OMP PARALLEL DO schedule(static) private(jj, ji) 
    282295            DO jj = 1, jpj 
    283296               DO ji = 1, jpi 
     
    285298               END DO 
    286299            END DO 
     300!$OMP PARALLEL WORKSHARE 
    287301            zwz(:,:) = ff(:,:) * zwz(:,:) 
     302!$OMP END PARALLEL WORKSHARE 
    288303         ENDIF 
    289304      ENDIF 
     
    303318      !                                   !* e3*d/dt(Ua) (Vertically integrated) 
    304319      !                                   ! -------------------------------------------------- 
     320!$OMP PARALLEL WORKSHARE 
    305321      zu_frc(:,:) = 0._wp 
    306322      zv_frc(:,:) = 0._wp 
     323!$OMP END PARALLEL WORKSHARE 
    307324      ! 
    308325      DO jk = 1, jpkm1 
    309          zu_frc(:,:) = zu_frc(:,:) + e3u_n(:,:,jk) * ua(:,:,jk) * umask(:,:,jk) 
    310          zv_frc(:,:) = zv_frc(:,:) + e3v_n(:,:,jk) * va(:,:,jk) * vmask(:,:,jk)          
     326!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     327      DO jj=1,jpj 
     328         DO ji=1,jpi 
     329         zu_frc(ji,jj) = zu_frc(ji,jj) + e3u_n(ji,jj,jk) * ua(ji,jj,jk) * umask(ji,jj,jk) 
     330         zv_frc(ji,jj) = zv_frc(ji,jj) + e3v_n(ji,jj,jk) * va(ji,jj,jk) * vmask(ji,jj,jk) 
     331         END DO 
     332      END DO  
    311333      END DO 
    312334      ! 
     335!$OMP PARALLEL WORKSHARE 
    313336      zu_frc(:,:) = zu_frc(:,:) * r1_hu_n(:,:) 
    314337      zv_frc(:,:) = zv_frc(:,:) * r1_hv_n(:,:) 
     338!$OMP END PARALLEL WORKSHARE 
    315339      ! 
    316340      ! 
    317341      !                                   !* baroclinic momentum trend (remove the vertical mean trend) 
     342!$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    318343      DO jk = 1, jpkm1                    ! ----------------------------------------------------------- 
    319344         DO jj = 2, jpjm1 
     
    326351      !                                   !* barotropic Coriolis trends (vorticity scheme dependent) 
    327352      !                                   ! -------------------------------------------------------- 
     353!$OMP PARALLEL WORKSHARE 
    328354      zwx(:,:) = un_b(:,:) * hu_n(:,:) * e2u(:,:)        ! now fluxes  
    329355      zwy(:,:) = vn_b(:,:) * hv_n(:,:) * e1v(:,:) 
     356!$OMP END PARALLEL WORKSHARE 
    330357      ! 
    331358      IF( ln_dynvor_ene .OR. ln_dynvor_mix ) THEN      ! energy conserving or mixed scheme 
     359!$OMP PARALLEL DO schedule(static) private(jj,ji,zy1,zy2,zx1,zx2) 
    332360         DO jj = 2, jpjm1 
    333361            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    343371         ! 
    344372      ELSEIF ( ln_dynvor_ens ) THEN                    ! enstrophy conserving scheme 
     373!$OMP PARALLEL DO schedule(static) private(jj,ji,zy1,zx1) 
    345374         DO jj = 2, jpjm1 
    346375            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    355384         ! 
    356385      ELSEIF ( ln_dynvor_een ) THEN  ! enstrophy and energy conserving scheme 
     386!$OMP PARALLEL DO schedule(static) private(jj,ji) 
    357387         DO jj = 2, jpjm1 
    358388            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    376406          wduflt1(:,:) = 1.0_wp 
    377407          wdvflt1(:,:) = 1.0_wp 
     408!$OMP PARALLEL DO schedule(static) private(jj,ji,ll_tmp1,ll_tmp2) 
    378409          DO jj = 2, jpjm1 
    379410             DO ji = 2, jpim1 
     
    415446           CALL lbc_lnk( zcpx, 'U', 1._wp )    ;   CALL lbc_lnk( zcpy, 'V', 1._wp ) 
    416447 
     448!$OMP PARALLEL DO schedule(static) private(jj,ji) 
    417449           DO jj = 2, jpjm1 
    418450              DO ji = 2, jpim1 
     
    426458         ELSE 
    427459 
     460!$OMP PARALLEL DO schedule(static) private(jj,ji) 
    428461           DO jj = 2, jpjm1 
    429462              DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    436469      ENDIF 
    437470 
     471!$OMP PARALLEL DO schedule(static) private(jj,ji) 
    438472      DO jj = 2, jpjm1                          ! Remove coriolis term (and possibly spg) from barotropic trend 
    439473         DO ji = fs_2, fs_jpim1 
     
    445479      !                 ! Add bottom stress contribution from baroclinic velocities:       
    446480      IF (ln_bt_fw) THEN 
     481!$OMP PARALLEL DO schedule(static) private(jj,ji,ikbu,ikbv) 
    447482         DO jj = 2, jpjm1                           
    448483            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    454489         END DO 
    455490      ELSE 
     491!$OMP PARALLEL DO schedule(static) private(jj,ji,ikbu,ikbv) 
    456492         DO jj = 2, jpjm1 
    457493            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    475511      !                                         ! Add top stress contribution from baroclinic velocities:       
    476512      IF (ln_bt_fw) THEN 
     513!$OMP PARALLEL DO schedule(static) private(jj,ji,ikbu,ikbv) 
    477514         DO jj = 2, jpjm1 
    478515            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    484521         END DO 
    485522      ELSE 
     523!$OMP PARALLEL DO schedule(static) private(jj,ji,ikbu,ikbv) 
    486524         DO jj = 2, jpjm1 
    487525            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    495533      ! 
    496534      ! Note that the "unclipped" top friction parameter is used even with explicit drag 
     535!$OMP PARALLEL WORKSHARE 
    497536      zu_frc(:,:) = zu_frc(:,:) + r1_hu_n(:,:) * tfrua(:,:) * zwx(:,:) 
    498537      zv_frc(:,:) = zv_frc(:,:) + r1_hv_n(:,:) * tfrva(:,:) * zwy(:,:) 
     538!$OMP END PARALLEL WORKSHARE 
    499539      !        
    500540      IF (ln_bt_fw) THEN                        ! Add wind forcing 
     541!$OMP PARALLEL WORKSHARE 
    501542         zu_frc(:,:) =  zu_frc(:,:) + zraur * utau(:,:) * r1_hu_n(:,:) 
    502543         zv_frc(:,:) =  zv_frc(:,:) + zraur * vtau(:,:) * r1_hv_n(:,:) 
     544!$OMP END PARALLEL WORKSHARE 
    503545      ELSE 
     546!$OMP PARALLEL WORKSHARE 
    504547         zu_frc(:,:) =  zu_frc(:,:) + zraur * z1_2 * ( utau_b(:,:) + utau(:,:) ) * r1_hu_n(:,:) 
    505548         zv_frc(:,:) =  zv_frc(:,:) + zraur * z1_2 * ( vtau_b(:,:) + vtau(:,:) ) * r1_hv_n(:,:) 
     549!$OMP END PARALLEL WORKSHARE 
    506550      ENDIF   
    507551      ! 
    508552      IF ( ln_apr_dyn ) THEN                    ! Add atm pressure forcing 
    509553         IF (ln_bt_fw) THEN 
     554!$OMP PARALLEL DO schedule(static) private(jj,ji,zu_spg,zv_spg) 
    510555            DO jj = 2, jpjm1               
    511556               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    517562            END DO 
    518563         ELSE 
     564!$OMP PARALLEL DO schedule(static) private(jj,ji,zu_spg,zv_spg) 
    519565            DO jj = 2, jpjm1               
    520566               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    559605      ! Initialize barotropic variables:       
    560606      IF( ll_init )THEN 
     607!$OMP PARALLEL WORKSHARE 
    561608         sshbb_e(:,:) = 0._wp 
    562609         ubb_e  (:,:) = 0._wp 
     
    565612         ub_e   (:,:) = 0._wp 
    566613         vb_e   (:,:) = 0._wp 
     614!$OMP END PARALLEL WORKSHARE 
    567615      ENDIF 
    568616 
    569617      IF( ln_wd ) THEN      !preserve the positivity of water depth 
    570618                          !ssh[b,n,a] should have already been processed for this 
     619!$OMP PARALLEL WORKSHARE 
    571620         sshbb_e(:,:) = MAX(sshbb_e(:,:), rn_wdmin1 - bathy(:,:)) 
    572621         sshb_e(:,:)  = MAX(sshb_e(:,:) , rn_wdmin1 - bathy(:,:)) 
     622!$OMP END PARALLEL WORKSHARE 
    573623      ENDIF 
    574624      ! 
    575625      IF (ln_bt_fw) THEN                  ! FORWARD integration: start from NOW fields                     
     626!$OMP PARALLEL WORKSHARE 
    576627         sshn_e(:,:) =    sshn(:,:)             
    577628         un_e  (:,:) =    un_b(:,:)             
     
    582633         hur_e (:,:) = r1_hu_n(:,:)     
    583634         hvr_e (:,:) = r1_hv_n(:,:) 
     635!$OMP END PARALLEL WORKSHARE 
    584636      ELSE                                ! CENTRED integration: start from BEFORE fields 
     637!$OMP PARALLEL WORKSHARE 
    585638         sshn_e(:,:) =    sshb(:,:) 
    586639         un_e  (:,:) =    ub_b(:,:)          
     
    591644         hur_e (:,:) = r1_hu_b(:,:)     
    592645         hvr_e (:,:) = r1_hv_b(:,:) 
     646!$OMP END PARALLEL WORKSHARE 
    593647      ENDIF 
    594648      ! 
     
    596650      ! 
    597651      ! Initialize sums: 
     652!$OMP PARALLEL WORKSHARE 
    598653      ua_b  (:,:) = 0._wp       ! After barotropic velocities (or transport if flux form)           
    599654      va_b  (:,:) = 0._wp 
     
    601656      un_adv(:,:) = 0._wp       ! Sum for now transport issued from ts loop 
    602657      vn_adv(:,:) = 0._wp 
     658!$OMP END PARALLEL WORKSHARE 
    603659      !                                             ! ==================== ! 
    604660      DO jn = 1, icycle                             !  sub-time-step loop  ! 
     
    624680 
    625681         ! Extrapolate barotropic velocities at step jit+0.5: 
     682!$OMP PARALLEL WORKSHARE 
    626683         ua_e(:,:) = za1 * un_e(:,:) + za2 * ub_e(:,:) + za3 * ubb_e(:,:) 
    627684         va_e(:,:) = za1 * vn_e(:,:) + za2 * vb_e(:,:) + za3 * vbb_e(:,:) 
     685!$OMP END PARALLEL WORKSHARE 
    628686 
    629687         IF( .NOT.ln_linssh ) THEN                        !* Update ocean depth (variable volume case only) 
     
    632690            zsshp2_e(:,:) = za1 * sshn_e(:,:)  + za2 * sshb_e(:,:) + za3 * sshbb_e(:,:) 
    633691            ! 
     692!$OMP PARALLEL DO schedule(static) private(jj,ji) 
    634693            DO jj = 2, jpjm1                                    ! Sea Surface Height at u- & v-points 
    635694               DO ji = 2, fs_jpim1   ! Vector opt. 
     
    644703            CALL lbc_lnk_multi( zwx, 'U', 1._wp, zwy, 'V', 1._wp ) 
    645704            ! 
     705!$OMP PARALLEL WORKSHARE 
    646706            zhup2_e (:,:) = hu_0(:,:) + zwx(:,:)                ! Ocean depth at U- and V-points 
    647707            zhvp2_e (:,:) = hv_0(:,:) + zwy(:,:) 
     708!$OMP END PARALLEL WORKSHARE 
    648709            IF( ln_wd ) THEN 
    649710              zhup2_e(:,:) = MAX(zhup2_e (:,:), rn_wdmin1) 
     
    651712            END IF 
    652713         ELSE 
     714!$OMP PARALLEL WORKSHARE 
    653715            zhup2_e (:,:) = hu_n(:,:) 
    654716            zhvp2_e (:,:) = hv_n(:,:) 
     717!$OMP END PARALLEL WORKSHARE 
    655718         ENDIF 
    656719         !                                                !* after ssh 
     
    659722         ! considering fluxes below: 
    660723         ! 
     724!$OMP PARALLEL WORKSHARE 
    661725         zwx(:,:) = e2u(:,:) * ua_e(:,:) * zhup2_e(:,:)         ! fluxes at jn+0.5 
    662726         zwy(:,:) = e1v(:,:) * va_e(:,:) * zhvp2_e(:,:) 
     727!$OMP END PARALLEL WORKSHARE 
    663728         ! 
    664729#if defined key_agrif 
     
    691756         ! Sum over sub-time-steps to compute advective velocities 
    692757         za2 = wgtbtp2(jn) 
     758!$OMP PARALLEL WORKSHARE 
    693759         un_adv(:,:) = un_adv(:,:) + za2 * zwx(:,:) * r1_e2u(:,:) 
    694760         vn_adv(:,:) = vn_adv(:,:) + za2 * zwy(:,:) * r1_e1v(:,:) 
     761!$OMP END PARALLEL WORKSHARE 
    695762         ! 
    696763         ! Set next sea level: 
     764!$OMP PARALLEL DO schedule(static) private(jj,ji) 
    697765         DO jj = 2, jpjm1                                  
    698766            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    701769            END DO 
    702770         END DO 
     771!$OMP PARALLEL WORKSHARE 
    703772         ssha_e(:,:) = (  sshn_e(:,:) - rdtbt * ( zssh_frc(:,:) + zhdiv(:,:) )  ) * ssmask(:,:) 
     773!$OMP END PARALLEL WORKSHARE 
    704774         IF( ln_wd ) ssha_e(:,:) = MAX(ssha_e(:,:), rn_wdmin1 - bathy(:,:))  
    705775         CALL lbc_lnk( ssha_e, 'T',  1._wp ) 
     
    715785         ! Sea Surface Height at u-,v-points (vvl case only) 
    716786         IF( .NOT.ln_linssh ) THEN                                 
     787!$OMP PARALLEL DO schedule(static) private(jj,ji) 
    717788            DO jj = 2, jpjm1 
    718789               DO ji = 2, jpim1      ! NO Vector Opt. 
     
    752823           wduflt1(:,:) = 1._wp 
    753824           wdvflt1(:,:) = 1._wp 
     825!$OMP PARALLEL DO schedule(static) private(jj,ji,ll_tmp1,ll_tmp2) 
    754826           DO jj = 2, jpjm1 
    755827              DO ji = 2, jpim1 
     
    793865         IF( .NOT.ln_linssh  .AND. .NOT.ln_dynadv_vec ) THEN   !* Vector form 
    794866            !                                         
     867!$OMP PARALLEL DO schedule(static) private(jj,ji,zx1,zy1) 
    795868            DO jj = 2, jpjm1                             
    796869               DO ji = 2, jpim1 
     
    821894         ! 
    822895         IF( ln_dynvor_ene .OR. ln_dynvor_mix ) THEN     !==  energy conserving or mixed scheme  ==! 
     896!$OMP PARALLEL DO schedule(static) private(jj,ji,zy1,zy2,zx1,zx2) 
    823897            DO jj = 2, jpjm1 
    824898               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    833907            ! 
    834908         ELSEIF ( ln_dynvor_ens ) THEN                   !==  enstrophy conserving scheme  ==! 
     909!$OMP PARALLEL DO schedule(static) private(jj,ji,zx1,zy1) 
    835910            DO jj = 2, jpjm1 
    836911               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    845920            ! 
    846921         ELSEIF ( ln_dynvor_een ) THEN                   !==  energy and enstrophy conserving scheme  ==! 
     922!$OMP PARALLEL DO schedule(static) private(jj,ji) 
    847923            DO jj = 2, jpjm1 
    848924               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    862938         ! Add tidal astronomical forcing if defined 
    863939         IF ( lk_tide.AND.ln_tide_pot ) THEN 
     940!$OMP PARALLEL DO schedule(static) private(jj,ji,zu_spg,zv_spg) 
    864941            DO jj = 2, jpjm1 
    865942               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    873950         ! 
    874951         ! Add bottom stresses: 
     952!$OMP PARALLEL WORKSHARE 
    875953         zu_trd(:,:) = zu_trd(:,:) + bfrua(:,:) * un_e(:,:) * hur_e(:,:) 
    876954         zv_trd(:,:) = zv_trd(:,:) + bfrva(:,:) * vn_e(:,:) * hvr_e(:,:) 
     955!$OMP END PARALLEL WORKSHARE 
    877956         ! 
    878957         ! Add top stresses: 
     958!$OMP PARALLEL WORKSHARE 
    879959         zu_trd(:,:) = zu_trd(:,:) + tfrua(:,:) * un_e(:,:) * hur_e(:,:) 
    880960         zv_trd(:,:) = zv_trd(:,:) + tfrva(:,:) * vn_e(:,:) * hvr_e(:,:) 
     961!$OMP END PARALLEL WORKSHARE 
    881962         ! 
    882963         ! Surface pressure trend: 
    883964 
    884965         IF( ln_wd ) THEN 
     966!$OMP PARALLEL DO schedule(static) private(jj,ji,zu_spg,zv_spg) 
    885967           DO jj = 2, jpjm1 
    886968              DO ji = 2, jpim1  
     
    893975           END DO 
    894976         ELSE 
     977!$OMP PARALLEL DO schedule(static) private(jj,ji,zu_spg,zv_spg) 
    895978           DO jj = 2, jpjm1 
    896979              DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    907990         ! Set next velocities: 
    908991         IF( ln_dynadv_vec .OR. ln_linssh ) THEN   !* Vector form 
     992!$OMP PARALLEL DO schedule(static) private(jj,ji) 
    909993            DO jj = 2, jpjm1 
    910994               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    9241008            ! 
    9251009         ELSE                                      !* Flux form 
     1010!$OMP PARALLEL DO schedule(static) private(jj,ji,zhura,zhvra) 
    9261011            DO jj = 2, jpjm1 
    9271012               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    9571042              hv_e (:,:) = MAX(hv_0(:,:) + zsshv_a(:,:), rn_wdmin1) 
    9581043            ELSE 
     1044!$OMP PARALLEL WORKSHARE 
    9591045              hu_e (:,:) = hu_0(:,:) + zsshu_a(:,:) 
    9601046              hv_e (:,:) = hv_0(:,:) + zsshv_a(:,:) 
     1047!$OMP END PARALLEL WORKSHARE 
    9611048            END IF 
     1049!$OMP PARALLEL WORKSHARE 
    9621050            hur_e(:,:) = ssumask(:,:) / ( hu_e(:,:) + 1._wp - ssumask(:,:) ) 
    9631051            hvr_e(:,:) = ssvmask(:,:) / ( hv_e(:,:) + 1._wp - ssvmask(:,:) ) 
     1052!$OMP END PARALLEL WORKSHARE 
    9641053            ! 
    9651054         ENDIF 
     
    9761065         !                                             !* Swap 
    9771066         !                                             !  ---- 
     1067!$OMP PARALLEL WORKSHARE 
    9781068         ubb_e  (:,:) = ub_e  (:,:) 
    9791069         ub_e   (:,:) = un_e  (:,:) 
     
    9871077         sshb_e (:,:) = sshn_e(:,:) 
    9881078         sshn_e (:,:) = ssha_e(:,:) 
     1079!$OMP END PARALLEL WORKSHARE 
    9891080 
    9901081         !                                             !* Sum over whole bt loop 
     
    9921083         za1 = wgtbtp1(jn)                                     
    9931084         IF( ln_dynadv_vec .OR. ln_linssh ) THEN    ! Sum velocities 
     1085!$OMP PARALLEL WORKSHARE 
    9941086            ua_b  (:,:) = ua_b  (:,:) + za1 * ua_e  (:,:)  
    9951087            va_b  (:,:) = va_b  (:,:) + za1 * va_e  (:,:)  
     1088!$OMP END PARALLEL WORKSHARE 
    9961089         ELSE                                              ! Sum transports 
     1090!$OMP PARALLEL WORKSHARE 
    9971091            ua_b  (:,:) = ua_b  (:,:) + za1 * ua_e  (:,:) * hu_e (:,:) 
    9981092            va_b  (:,:) = va_b  (:,:) + za1 * va_e  (:,:) * hv_e (:,:) 
     1093!$OMP END PARALLEL WORKSHARE 
    9991094         ENDIF 
    10001095         !                                   ! Sum sea level 
     1096!$OMP PARALLEL WORKSHARE 
    10011097         ssha(:,:) = ssha(:,:) + za1 * ssha_e(:,:) 
     1098!$OMP END PARALLEL WORKSHARE 
    10021099         !                                                 ! ==================== ! 
    10031100      END DO                                               !        end loop      ! 
     
    10081105      ! 
    10091106      ! Set advection velocity correction: 
     1107!$OMP PARALLEL WORKSHARE 
    10101108      zwx(:,:) = un_adv(:,:) 
    10111109      zwy(:,:) = vn_adv(:,:) 
     1110!$OMP END PARALLEL WORKSHARE 
    10121111      IF( ( kt == nit000 .AND. neuler==0 ) .OR. .NOT.ln_bt_fw ) THEN      
     1112!$OMP PARALLEL WORKSHARE 
    10131113         un_adv(:,:) = zwx(:,:) * r1_hu_n(:,:) 
    10141114         vn_adv(:,:) = zwy(:,:) * r1_hv_n(:,:) 
     1115!$OMP END PARALLEL WORKSHARE 
    10151116      ELSE 
     1117!$OMP PARALLEL WORKSHARE 
    10161118         un_adv(:,:) = z1_2 * ( ub2_b(:,:) + zwx(:,:) ) * r1_hu_n(:,:) 
    10171119         vn_adv(:,:) = z1_2 * ( vb2_b(:,:) + zwy(:,:) ) * r1_hv_n(:,:) 
     1120!$OMP END PARALLEL WORKSHARE 
    10181121      END IF 
    10191122 
    10201123      IF( ln_bt_fw ) THEN ! Save integrated transport for next computation 
     1124!$OMP PARALLEL WORKSHARE 
    10211125         ub2_b(:,:) = zwx(:,:) 
    10221126         vb2_b(:,:) = zwy(:,:) 
     1127!$OMP END PARALLEL WORKSHARE 
    10231128      ENDIF 
    10241129      ! 
    10251130      ! Update barotropic trend: 
    10261131      IF( ln_dynadv_vec .OR. ln_linssh ) THEN 
     1132!$OMP PARALLEL DO schedule(static) private(jk) 
    10271133         DO jk=1,jpkm1 
    10281134            ua(:,:,jk) = ua(:,:,jk) + ( ua_b(:,:) - ub_b(:,:) ) * z1_2dt_b 
     
    10311137      ELSE 
    10321138         ! At this stage, ssha has been corrected: compute new depths at velocity points 
     1139!$OMP PARALLEL DO schedule(static) private(jj,ji) 
    10331140         DO jj = 1, jpjm1 
    10341141            DO ji = 1, jpim1      ! NO Vector Opt. 
     
    10431150         CALL lbc_lnk_multi( zsshu_a, 'U', 1._wp, zsshv_a, 'V', 1._wp ) ! Boundary conditions 
    10441151         ! 
     1152!$OMP PARALLEL DO schedule(static) private(jk) 
    10451153         DO jk=1,jpkm1 
    10461154            ua(:,:,jk) = ua(:,:,jk) + r1_hu_n(:,:) * ( ua_b(:,:) - ub_b(:,:) * hu_b(:,:) ) * z1_2dt_b 
     
    10481156         END DO 
    10491157         ! Save barotropic velocities not transport: 
     1158!$OMP PARALLEL WORKSHARE 
    10501159         ua_b(:,:) =  ua_b(:,:) / ( hu_0(:,:) + zsshu_a(:,:) + 1._wp - ssumask(:,:) ) 
    10511160         va_b(:,:) =  va_b(:,:) / ( hv_0(:,:) + zsshv_a(:,:) + 1._wp - ssvmask(:,:) ) 
    1052       ENDIF 
    1053       ! 
     1161!$OMP END PARALLEL WORKSHARE 
     1162      ENDIF 
     1163      ! 
     1164!$OMP PARALLEL DO schedule(static) private(jk) 
    10541165      DO jk = 1, jpkm1 
    10551166         ! Correct velocities: 
     
    12441355      CALL wrk_alloc( jpi,jpj,   zcu ) 
    12451356      ! 
     1357!$OMP PARALLEL DO schedule(static) private(jj, ji, zxr2, zyr2) 
    12461358      DO jj = 1, jpj 
    12471359         DO ji =1, jpi 
Note: See TracChangeset for help on using the changeset viewer.