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/LDF/ldftra.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/LDF/ldftra.F90

    r7037 r7508  
    117117      !!              aeiu, aeiv initialized once for all or l_ldfeiv_time set to true 
    118118      !!---------------------------------------------------------------------- 
    119       INTEGER  ::   jk                ! dummy loop indices 
     119      INTEGER  ::   jk, jj, ji        ! dummy loop indices 
    120120      INTEGER  ::   ierr, inum, ios   ! local integer 
    121121      REAL(wp) ::   zah0              ! local scalar 
     
    185185      IF( ierr /= 0 )   CALL ctl_stop( 'STOP', 'ldf_tra_init: failed to allocate arrays') 
    186186      ! 
    187 !$OMP PARALLEL WORKSHARE 
    188       ahtu(:,:,jpk) = 0._wp                           ! last level always 0   
    189       ahtv(:,:,jpk) = 0._wp 
    190 !$OMP END PARALLEL WORKSHARE 
     187!$OMP PARALLEL DO schedule(static) private(jj, ji) 
     188      DO jj = 1, jpj 
     189         DO ji = 1, jpi 
     190            ahtu(ji,jj,jpk) = 0._wp                           ! last level always 0   
     191            ahtv(ji,jj,jpk) = 0._wp 
     192         END DO 
     193      END DO 
    191194      ! 
    192195      !                                               ! value of eddy mixing coef. 
     
    203206         CASE(   0  )      !==  constant  ==! 
    204207            IF(lwp) WRITE(numout,*) '          tracer mixing coef. = constant = ', rn_aht_0 
    205 !$OMP PARALLEL WORKSHARE 
    206             ahtu(:,:,:) = zah0 * umask(:,:,:) 
    207             ahtv(:,:,:) = zah0 * vmask(:,:,:) 
    208 !$OMP END PARALLEL WORKSHARE 
     208!$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
     209            DO jk = 1, jpk 
     210               DO jj = 1, jpj 
     211                  DO ji = 1, jpi 
     212                     ahtu(ji,jj,jk) = zah0 * umask(ji,jj,jk) 
     213                     ahtv(ji,jj,jk) = zah0 * vmask(ji,jj,jk) 
     214                  END DO 
     215               END DO 
     216            END DO 
    209217            ! 
    210218         CASE(  10  )      !==  fixed profile  ==! 
    211219            IF(lwp) WRITE(numout,*) '          tracer mixing coef. = F( depth )' 
    212 !$OMP PARALLEL WORKSHARE 
    213             ahtu(:,:,1) = zah0 * umask(:,:,1)                      ! constant surface value 
    214             ahtv(:,:,1) = zah0 * vmask(:,:,1) 
    215 !$OMP END PARALLEL WORKSHARE 
     220!$OMP PARALLEL DO schedule(static) private(jj, ji) 
     221            DO jj = 1, jpj 
     222               DO ji = 1, jpi 
     223                  ahtu(ji,jj,1) = zah0 * umask(ji,jj,1)                      ! constant surface value 
     224                  ahtv(ji,jj,1) = zah0 * vmask(ji,jj,1) 
     225               END DO 
     226            END DO 
    216227            CALL ldf_c1d( 'TRA', r1_4, ahtu(:,:,1), ahtv(:,:,1), ahtu, ahtv ) 
    217228            ! 
     
    276287         ! 
    277288         IF( ln_traldf_blp .AND. .NOT. l_ldftra_time ) THEN 
    278             ahtu(:,:,:) = SQRT( ahtu(:,:,:) ) 
    279             ahtv(:,:,:) = SQRT( ahtv(:,:,:) ) 
     289!$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
     290            DO jk = 1, jpk 
     291               DO jj = 1, jpj 
     292                  DO ji = 1, jpi 
     293                     ahtu(ji,jj,jk) = SQRT( ahtu(ji,jj,jk) ) 
     294                     ahtv(ji,jj,jk) = SQRT( ahtv(ji,jj,jk) ) 
     295                  END DO 
     296               END DO 
     297            END DO 
    280298         ENDIF 
    281299         ! 
     
    396414      !!               l_ldfeiv_time : =T if EIV coefficients vary with time 
    397415      !!---------------------------------------------------------------------- 
    398       INTEGER  ::   jk                ! dummy loop indices 
     416      INTEGER  ::   jk, jj, ji        ! dummy loop indices 
    399417      INTEGER  ::   ierr, inum, ios   ! local integer 
    400418      ! 
     
    437455         CASE(   0  )      !==  constant  ==! 
    438456            IF(lwp) WRITE(numout,*) '          eddy induced velocity coef. = constant = ', rn_aeiv_0 
    439 !$OMP PARALLEL WORKSHARE 
    440             aeiu(:,:,:) = rn_aeiv_0 
    441             aeiv(:,:,:) = rn_aeiv_0 
    442 !$OMP END PARALLEL WORKSHARE 
     457!$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
     458            DO jk = 1, jpk 
     459               DO jj = 1, jpj 
     460                  DO ji = 1, jpi 
     461                     aeiu(ji,jj,jk) = rn_aeiv_0 
     462                     aeiv(ji,jj,jk) = rn_aeiv_0 
     463                  END DO 
     464               END DO 
     465            END DO 
    443466            ! 
    444467         CASE(  10  )      !==  fixed profile  ==! 
    445468            IF(lwp) WRITE(numout,*) '          eddy induced velocity coef. = F( depth )' 
    446 !$OMP PARALLEL WORKSHARE 
    447             aeiu(:,:,1) = rn_aeiv_0                                ! constant surface value 
    448             aeiv(:,:,1) = rn_aeiv_0 
    449 !$OMP END PARALLEL WORKSHARE 
     469!$OMP PARALLEL DO schedule(static) private(jj, ji) 
     470            DO jj = 1, jpj 
     471               DO ji = 1, jpi 
     472                  aeiu(ji,jj,1) = rn_aeiv_0                                ! constant surface value 
     473                  aeiv(ji,jj,1) = rn_aeiv_0 
     474               END DO 
     475            END DO 
    450476            CALL ldf_c1d( 'TRA', r1_4, aeiu(:,:,1), aeiv(:,:,1), aeiu, aeiv ) 
    451477            ! 
     
    521547      CALL wrk_alloc( jpi,jpj,   zn, zah, zhw, zross, zaeiw ) 
    522548      !       
    523 !$OMP PARALLEL WORKSHARE 
    524       zn   (:,:) = 0._wp      ! Local initialization 
    525       zhw  (:,:) = 5._wp 
    526       zah  (:,:) = 0._wp 
    527       zross(:,:) = 0._wp 
    528 !$OMP END PARALLEL WORKSHARE 
     549!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     550      DO jj = 1, jpj 
     551         DO ji = 1, jpi 
     552            zn   (ji,jj) = 0._wp      ! Local initialization 
     553            zhw  (ji,jj) = 5._wp 
     554            zah  (ji,jj) = 0._wp 
     555            zross(ji,jj) = 0._wp 
     556         END DO 
     557      END DO 
    529558      !                       ! Compute lateral diffusive coefficient at T-point 
    530559      IF( ln_traldf_triad ) THEN 
     
    668697       
    669698!$OMP PARALLEL 
    670 !$OMP WORKSHARE       
    671       zpsi_uw(:,:, 1 ) = 0._wp   ;   zpsi_vw(:,:, 1 ) = 0._wp 
    672       zpsi_uw(:,:,jpk) = 0._wp   ;   zpsi_vw(:,:,jpk) = 0._wp 
    673 !$OMP END WORKSHARE NOWAIT 
     699!$OMP DO schedule(static) private(jj,ji) 
     700      DO jj = 1, jpj 
     701         DO ji = 1, jpi 
     702            zpsi_uw(ji,jj, 1 ) = 0._wp   ;   zpsi_vw(ji,jj, 1 ) = 0._wp 
     703            zpsi_uw(ji,jj,jpk) = 0._wp   ;   zpsi_vw(ji,jj,jpk) = 0._wp 
     704         END DO 
     705      END DO 
     706!$OMP END DO NOWAIT 
    674707      ! 
    675708!$OMP DO schedule(static) private(jk,jj,ji) 
     
    748781      ! 
    749782!$OMP PARALLEL 
    750 !$OMP WORKSHARE 
    751       zw3d(:,:,jpk) = 0._wp                                    ! bottom value always 0 
    752 !$OMP END WORKSHARE NOWAIT 
     783!$OMP DO schedule(static) private(jj,ji) 
     784      DO jj = 1, jpj 
     785         DO ji = 1, jpi 
     786            zw3d(ji,jj,jpk) = 0._wp                                    ! bottom value always 0 
     787         END DO 
     788      END DO 
     789!$OMP END DO NOWAIT 
    753790      ! 
    754791!$OMP DO schedule(static) private(jk) 
     
    786823         zztmp = 0.5_wp * rau0 * rcp  
    787824!$OMP PARALLEL 
    788 !$OMP WORKSHARE 
    789          zw2d(:,:) = 0._wp 
    790 !$OMP END WORKSHARE 
     825!$OMP DO schedule(static) private(jj,ji) 
     826         DO jj = 1, jpj 
     827            DO ji = 1, jpi 
     828               zw2d(ji,jj) = 0._wp 
     829            END DO 
     830         END DO 
    791831         DO jk = 1, jpkm1 
    792832!$OMP DO schedule(static) private(jj,ji) 
     
    803843         CALL iom_put( "ueiv_heattr", zw2d )                  ! heat transport in i-direction 
    804844!$OMP PARALLEL 
    805 !$OMP WORKSHARE 
    806          zw2d(:,:) = 0._wp  
    807 !$OMP END WORKSHARE 
     845!$OMP DO schedule(static) private(jj,ji) 
     846         DO jj = 1, jpj 
     847            DO ji = 1, jpi 
     848               zw2d(ji,jj) = 0._wp 
     849            END DO 
     850         END DO 
    808851         DO jk = 1, jpkm1 
    809852!$OMP DO schedule(static) private(jj,ji) 
Note: See TracChangeset for help on using the changeset viewer.