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/LIM_SRC_3/limadv_umx.F90 – NEMO

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

Reverting trunk to remove OpenMP

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/LIM_SRC_3/limadv_umx.F90

    r7698 r7753  
    7575      !  upstream advection with initial mass fluxes & intermediate update 
    7676      ! -------------------------------------------------------------------- 
    77 !$OMP PARALLEL 
    78 !$OMP DO schedule(static) private(jj,ji,zfp_ui,zfm_ui,zfp_vj,zfm_vj) 
    7977      DO jj = 1, jpjm1         ! upstream tracer flux in the i and j direction 
    8078         DO ji = 1, fs_jpim1   ! vector opt. 
     
    8886      END DO 
    8987       
    90 !$OMP DO schedule(static) private(jj,ji,ztra) 
    9188      DO jj = 2, jpjm1            ! total intermediate advective trends 
    9289         DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    9895         END DO 
    9996      END DO 
    100 !$OMP END PARALLEL 
    10197      CALL lbc_lnk( zt_ups, 'T', 1. )        ! Lateral boundary conditions   (unchanged sign) 
    10298       
     
    105101      SELECT CASE( nn_limadv_ord ) 
    106102      CASE ( 20 )                          ! centered second order 
    107 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    108103         DO jj = 2, jpjm1 
    109104            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    116111         CALL macho( kt, nn_limadv_ord, pdt, ptc, puc, pvc, pubox, pvbox, zt_u, zt_v ) 
    117112         ! 
    118 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    119113         DO jj = 2, jpjm1 
    120114            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    128122      ! antidiffusive flux : high order minus low order 
    129123      ! -------------------------------------------------- 
    130 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    131124      DO jj = 2, jpjm1 
    132125         DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    143136      ! final trend with corrected fluxes 
    144137      ! ------------------------------------ 
    145 !$OMP PARALLEL DO schedule(static) private(jj,ji,ztra) 
    146138      DO jj = 2, jpjm1 
    147139         DO ji = fs_2, fs_jpim1   ! vector opt.   
     
    195187         ! 
    196188         !                                                           !--  advective form update in zzt  --! 
    197 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    198189         DO jj = 2, jpjm1 
    199190            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    214205         ! 
    215206         !                                                           !--  advective form update in zzt  --! 
    216 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    217207         DO jj = 2, jpjm1 
    218208            DO ji = fs_2, fs_jpim1 
     
    263253      ! 
    264254      !                                                     !--  Laplacian in i-direction  --! 
    265 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    266255      DO jj = 2, jpjm1         ! First derivative (gradient) 
    267256         DO ji = 1, fs_jpim1 
     
    276265      ! 
    277266      !                                                     !--  BiLaplacian in i-direction  --! 
    278 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    279267      DO jj = 2, jpjm1         ! Third derivative 
    280268         DO ji = 1, fs_jpim1 
     
    293281      CASE( 1 )                                                   !==  1st order central TIM  ==! (Eq. 21) 
    294282         !         
    295 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    296283         DO jj = 1, jpj 
    297284            DO ji = 1, fs_jpim1   ! vector opt. 
     
    303290      CASE( 2 )                                                   !==  2nd order central TIM  ==! (Eq. 23) 
    304291         ! 
    305 !$OMP PARALLEL DO schedule(static) private(jj,ji,zcu) 
    306292         DO jj = 1, jpj 
    307293            DO ji = 1, fs_jpim1   ! vector opt. 
     
    315301      CASE( 3 )                                                   !==  3rd order central TIM  ==! (Eq. 24) 
    316302         ! 
    317 !$OMP PARALLEL DO schedule(static) private(jj,ji,zcu,zdx2) 
    318303         DO jj = 1, jpj 
    319304            DO ji = 1, fs_jpim1   ! vector opt. 
     
    330315      CASE( 4 )                                                   !==  4th order central TIM  ==! (Eq. 27) 
    331316         ! 
    332 !$OMP PARALLEL DO schedule(static) private(jj,ji,zcu,zdx2) 
    333317         DO jj = 1, jpj 
    334318            DO ji = 1, fs_jpim1   ! vector opt. 
     
    345329      CASE( 5 )                                                   !==  5th order central TIM  ==! (Eq. 29) 
    346330         ! 
    347 !$OMP PARALLEL DO schedule(static) private(jj,ji,zcu,zdx2,zdx4) 
    348331         DO jj = 1, jpj 
    349332            DO ji = 1, fs_jpim1   ! vector opt. 
     
    397380      ! 
    398381      !                                                     !--  Laplacian in j-direction  --! 
    399 !$OMP PARALLEL 
    400 !$OMP DO schedule(static) private(jj,ji) 
    401382      DO jj = 1, jpjm1         ! First derivative (gradient) 
    402383         DO ji = fs_2, fs_jpim1 
     
    404385         END DO 
    405386      END DO 
    406 !$OMP DO schedule(static) private(jj,ji) 
    407387      DO jj = 2, jpjm1         ! Second derivative (Laplacian) 
    408388         DO ji = fs_2, fs_jpim1 
     
    410390         END DO 
    411391      END DO 
    412 !$OMP END PARALLEL 
    413392      CALL lbc_lnk( ztv2, 'T', 1. ) 
    414393      ! 
    415394      !                                                     !--  BiLaplacian in j-direction  --! 
    416 !$OMP PARALLEL 
    417 !$OMP DO schedule(static) private(jj,ji) 
    418395      DO jj = 1, jpjm1         ! First derivative 
    419396         DO ji = fs_2, fs_jpim1 
     
    421398         END DO 
    422399      END DO 
    423 !$OMP DO schedule(static) private(jj,ji) 
    424400      DO jj = 2, jpjm1         ! Second derivative 
    425401         DO ji = fs_2, fs_jpim1 
     
    427403         END DO 
    428404      END DO 
    429 !$OMP END PARALLEL 
    430405      CALL lbc_lnk( ztv4, 'T', 1. ) 
    431406      ! 
     
    435410      CASE( 1 )                                                   !==  1st order central TIM  ==! (Eq. 21) 
    436411         !         
    437 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    438412         DO jj = 1, jpjm1 
    439413            DO ji = 1, jpi 
     
    444418         ! 
    445419      CASE( 2 )                                                   !==  2nd order central TIM  ==! (Eq. 23) 
    446 !$OMP PARALLEL DO schedule(static) private(jj,ji,zcv) 
    447420         DO jj = 1, jpjm1 
    448421            DO ji = 1, jpi 
     
    456429      CASE( 3 )                                                   !==  3rd order central TIM  ==! (Eq. 24) 
    457430         ! 
    458 !$OMP PARALLEL DO schedule(static) private(jj,ji,zcv,zdy2) 
    459431         DO jj = 1, jpjm1 
    460432            DO ji = 1, jpi 
     
    471443      CASE( 4 )                                                   !==  4th order central TIM  ==! (Eq. 27) 
    472444         ! 
    473 !$OMP PARALLEL DO schedule(static) private(jj,ji,zcv,zdy2) 
    474445         DO jj = 1, jpjm1 
    475446            DO ji = 1, jpi 
     
    486457      CASE( 5 )                                                   !==  5th order central TIM  ==! (Eq. 29) 
    487458         ! 
    488 !$OMP PARALLEL DO schedule(static) private(jj,ji,zcv,zdy2,zdy4) 
    489459         DO jj = 1, jpjm1 
    490460            DO ji = 1, jpi 
     
    543513 
    544514      ! clem test 
    545 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    546515      DO jj = 2, jpjm1 
    547516         DO ji = fs_2, fs_jpim1   ! vector opt.   
     
    553522 
    554523      ! Determine ice masks for before and after tracers  
    555 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    556       DO jj = 1, jpj 
    557          DO ji = 1, jpi   
    558             IF( pbef(ji,jj) == 0._wp .AND. paft(ji,jj) == 0._wp .AND. zdiv(ji,jj) == 0._wp ) THEN 
    559                zmsk(ji,jj) = 0._wp 
    560             ELSE 
    561                zmsk(ji,jj) = 1._wp * tmask(ji,jj,1) 
    562             END IF 
    563          END DO 
    564       END DO 
     524      WHERE( pbef(:,:) == 0._wp .AND. paft(:,:) == 0._wp .AND. zdiv(:,:) == 0._wp )   ;   zmsk(:,:) = 0._wp 
     525      ELSEWHERE                                                                       ;   zmsk(:,:) = 1._wp * tmask(:,:,1) 
     526      END WHERE 
    565527 
    566528      ! Search local extrema 
     
    571533!      zbdo(:,:) = MIN( pbef(:,:) * tmask(:,:,1) + zbig * ( 1.e0 - tmask(:,:,1) ),   & 
    572534!         &             paft(:,:) * tmask(:,:,1) + zbig * ( 1.e0 - tmask(:,:,1) )  ) 
     535      zbup(:,:) = MAX( pbef(:,:) * zmsk(:,:) - zbig * ( 1.e0 - zmsk(:,:) ),   & 
     536         &             paft(:,:) * zmsk(:,:) - zbig * ( 1.e0 - zmsk(:,:) )  ) 
     537      zbdo(:,:) = MIN( pbef(:,:) * zmsk(:,:) + zbig * ( 1.e0 - zmsk(:,:) ),   & 
     538         &             paft(:,:) * zmsk(:,:) + zbig * ( 1.e0 - zmsk(:,:) )  ) 
    573539 
    574540      z1_dt = 1._wp / pdt 
    575  
    576 !$OMP PARALLEL 
    577 !$OMP DO schedule(static) private(jj,ji) 
    578       DO jj = 1, jpj 
    579          DO ji = 1, jpi   
    580             zbup(ji,jj) = MAX( pbef(ji,jj) * zmsk(ji,jj) - zbig * ( 1.e0 - zmsk(ji,jj) ),   & 
    581                &             paft(ji,jj) * zmsk(ji,jj) - zbig * ( 1.e0 - zmsk(ji,jj) )  ) 
    582             zbdo(ji,jj) = MIN( pbef(ji,jj) * zmsk(ji,jj) + zbig * ( 1.e0 - zmsk(ji,jj) ),   & 
    583                &             paft(ji,jj) * zmsk(ji,jj) + zbig * ( 1.e0 - zmsk(ji,jj) )  ) 
    584          END DO 
    585       END DO 
    586  
    587 !$OMP DO schedule(static) private(jj,ji,zup,zdo,zpos,zneg,zbt) 
    588541      DO jj = 2, jpjm1 
    589542         DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    604557         END DO 
    605558      END DO 
    606 !$OMP END PARALLEL 
    607559      CALL lbc_lnk_multi( zbetup, 'T', 1., zbetdo, 'T', 1. )   ! lateral boundary cond. (unchanged sign) 
    608560 
    609561      ! monotonic flux in the i & j direction (paa & pbb) 
    610562      ! ------------------------------------- 
    611 !$OMP PARALLEL DO schedule(static) private(jj,ji,zau,zbu,zcu,zav,zbv,zcv) 
    612563      DO jj = 2, jpjm1 
    613564         DO ji = fs_2, fs_jpim1   ! vector opt. 
Note: See TracChangeset for help on using the changeset viewer.