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 7037 for branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/OPA_SRC/LDF/ldftra.F90 – NEMO

Ignore:
Timestamp:
2016-10-18T15:32:04+02:00 (8 years ago)
Author:
mocavero
Message:

ORCA2_LIM_PISCES hybrid version update

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/OPA_SRC/LDF/ldftra.F90

    r6748 r7037  
    276276         ! 
    277277         IF( ln_traldf_blp .AND. .NOT. l_ldftra_time ) THEN 
    278 !$OMP PARALLEL WORKSHARE 
    279278            ahtu(:,:,:) = SQRT( ahtu(:,:,:) ) 
    280279            ahtv(:,:,:) = SQRT( ahtv(:,:,:) ) 
    281 !$OMP END PARALLEL WORKSHARE 
    282280         ENDIF 
    283281         ! 
     
    335333         z1_f20   = 1._wp / (  2._wp * omega * SIN( rad * 20._wp )  )      ! 1 / ff(20 degrees)    
    336334         zaht_min = 0.2_wp * rn_aht_0                                      ! minimum value for aht 
     335!$OMP PARALLEL 
     336!$OMP DO schedule(static) private(jj,ji,zaht) 
    337337         DO jj = 1, jpj 
    338338            DO ji = 1, jpi 
     
    342342            END DO 
    343343         END DO 
     344!$OMP DO schedule(static) private(jk) 
    344345         DO jk = 2, jpkm1                             ! deeper value = surface value 
    345346            ahtu(:,:,jk) = ahtu(:,:,1) * umask(:,:,jk) 
    346347            ahtv(:,:,jk) = ahtv(:,:,1) * vmask(:,:,jk) 
    347348         END DO 
     349!$OMP END DO NOWAIT 
     350!$OMP END PARALLEL 
    348351         ! 
    349352      CASE(  31  )       !==  time varying 3D field  ==!   = F( local velocity ) 
    350353         IF( ln_traldf_lap     ) THEN          !   laplacian operator |u| e /12 
     354!$OMP PARALLEL DO schedule(static) private(jk) 
    351355            DO jk = 1, jpkm1 
    352356               ahtu(:,:,jk) = ABS( ub(:,:,jk) ) * e1u(:,:) * r1_12 
     
    354358            END DO 
    355359         ELSEIF( ln_traldf_blp ) THEN      ! bilaplacian operator      sqrt( |u| e^3 /12 ) = sqrt( |u| e /12 ) * e 
     360!$OMP PARALLEL DO schedule(static) private(jk) 
    356361            DO jk = 1, jpkm1 
    357362               ahtu(:,:,jk) = SQRT(  ABS( ub(:,:,jk) ) * e1u(:,:) * r1_12  ) * e1u(:,:) 
     
    516521      CALL wrk_alloc( jpi,jpj,   zn, zah, zhw, zross, zaeiw ) 
    517522      !       
     523!$OMP PARALLEL WORKSHARE 
    518524      zn   (:,:) = 0._wp      ! Local initialization 
    519525      zhw  (:,:) = 5._wp 
    520526      zah  (:,:) = 0._wp 
    521527      zross(:,:) = 0._wp 
     528!$OMP END PARALLEL WORKSHARE 
    522529      !                       ! Compute lateral diffusive coefficient at T-point 
    523530      IF( ln_traldf_triad ) THEN 
    524531         DO jk = 1, jpk 
     532!$OMP PARALLEL DO schedule(static) private(jj,ji,zn2,ze3w) 
    525533            DO jj = 2, jpjm1 
    526534               DO ji = 2, jpim1 
     
    541549      ELSE 
    542550         DO jk = 1, jpk 
     551!$OMP PARALLEL DO schedule(static) private(jj,ji,zn2,ze3w) 
    543552            DO jj = 2, jpjm1 
    544553               DO ji = 2, jpim1 
     
    560569      END IF 
    561570 
     571!$OMP PARALLEL  
     572!$OMP DO schedule(static) private(jj,ji,zfw) 
    562573      DO jj = 2, jpjm1 
    563574         DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    581592      !                                         !==  Bound on eiv coeff.  ==! 
    582593      z1_f20 = 1._wp / (  2._wp * omega * sin( rad * 20._wp )  ) 
     594!$OMP DO schedule(static) private(jj,ji,zzaei) 
    583595      DO jj = 2, jpjm1 
    584596         DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    587599         END DO 
    588600      END DO 
     601!$OMP END DO NOWAIT 
     602!$OMP END PARALLEL 
    589603      CALL lbc_lnk( zaeiw(:,:), 'W', 1. )       ! lateral boundary condition 
    590604      !                
     605!$OMP PARALLEL DO schedule(static) private(jj,ji,zfw) 
    591606      DO jj = 2, jpjm1                          !== aei at u- and v-points  ==! 
    592607         DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    597612      CALL lbc_lnk( paeiu(:,:,1), 'U', 1. )   ;   CALL lbc_lnk( paeiv(:,:,1), 'V', 1. )      ! lateral boundary condition 
    598613 
     614!$OMP PARALLEL DO schedule(static) private(jk) 
    599615      DO jk = 2, jpkm1                          !==  deeper values equal the surface one  ==! 
    600616         paeiu(:,:,jk) = paeiu(:,:,1) * umask(:,:,jk) 
     
    651667 
    652668       
     669!$OMP PARALLEL 
     670!$OMP WORKSHARE       
    653671      zpsi_uw(:,:, 1 ) = 0._wp   ;   zpsi_vw(:,:, 1 ) = 0._wp 
    654672      zpsi_uw(:,:,jpk) = 0._wp   ;   zpsi_vw(:,:,jpk) = 0._wp 
    655       ! 
     673!$OMP END WORKSHARE NOWAIT 
     674      ! 
     675!$OMP DO schedule(static) private(jk,jj,ji) 
    656676      DO jk = 2, jpkm1 
    657677         DO jj = 1, jpjm1 
     
    665685      END DO 
    666686      ! 
     687!$OMP DO schedule(static) private(jk,jj,ji) 
    667688      DO jk = 1, jpkm1 
    668689         DO jj = 1, jpjm1 
     
    673694         END DO 
    674695      END DO 
     696!$OMP END DO NOWAIT 
     697!$OMP DO schedule(static) private(jk,jj,ji) 
    675698      DO jk = 1, jpkm1 
    676699         DO jj = 2, jpjm1 
     
    681704         END DO 
    682705      END DO 
     706!$OMP END DO NOWAIT 
     707!$OMP END PARALLEL 
    683708      ! 
    684709      !                              ! diagnose the eddy induced velocity and associated heat transport 
     
    722747      CALL wrk_alloc( jpi,jpj,jpk,   zw3d ) 
    723748      ! 
     749!$OMP PARALLEL 
     750!$OMP WORKSHARE 
    724751      zw3d(:,:,jpk) = 0._wp                                    ! bottom value always 0 
    725       ! 
     752!$OMP END WORKSHARE NOWAIT 
     753      ! 
     754!$OMP DO schedule(static) private(jk) 
    726755      DO jk = 1, jpkm1                                         ! e2u e3u u_eiv = -dk[psi_uw] 
    727756         zw3d(:,:,jk) = ( psi_uw(:,:,jk+1) - psi_uw(:,:,jk) ) / ( e2u(:,:) * e3u_n(:,:,jk) ) 
    728757      END DO 
     758!$OMP END DO NOWAIT 
     759!$OMP END PARALLEL 
    729760      CALL iom_put( "uoce_eiv", zw3d ) 
    730761      ! 
     762!$OMP PARALLEL DO schedule(static) private(jk) 
    731763      DO jk = 1, jpkm1                                         ! e1v e3v v_eiv = -dk[psi_vw] 
    732764         zw3d(:,:,jk) = ( psi_vw(:,:,jk+1) - psi_vw(:,:,jk) ) / ( e1v(:,:) * e3v_n(:,:,jk) ) 
     
    734766      CALL iom_put( "voce_eiv", zw3d ) 
    735767      ! 
     768!$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    736769      DO jk = 1, jpkm1                                         ! e1 e2 w_eiv = dk[psix] + dk[psix] 
    737770         DO jj = 2, jpjm1 
     
    752785         ! 
    753786         zztmp = 0.5_wp * rau0 * rcp  
    754          zw2d(:,:) = 0._wp  
     787!$OMP PARALLEL 
     788!$OMP WORKSHARE 
     789         zw2d(:,:) = 0._wp 
     790!$OMP END WORKSHARE 
    755791         DO jk = 1, jpkm1 
     792!$OMP DO schedule(static) private(jj,ji) 
    756793            DO jj = 2, jpjm1 
    757794               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    760797               END DO 
    761798            END DO 
    762          END DO 
     799!$OMP END DO NOWAIT 
     800         END DO 
     801!$OMP END PARALLEL 
    763802         CALL lbc_lnk( zw2d, 'U', -1. ) 
    764803         CALL iom_put( "ueiv_heattr", zw2d )                  ! heat transport in i-direction 
     804!$OMP PARALLEL 
     805!$OMP WORKSHARE 
    765806         zw2d(:,:) = 0._wp  
     807!$OMP END WORKSHARE 
    766808         DO jk = 1, jpkm1 
     809!$OMP DO schedule(static) private(jj,ji) 
    767810            DO jj = 2, jpjm1 
    768811               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    771814               END DO 
    772815            END DO 
    773          END DO 
     816!$OMP END DO NOWAIT 
     817         END DO 
     818!$OMP END PARALLEL 
    774819         CALL lbc_lnk( zw2d, 'V', -1. ) 
    775820         CALL iom_put( "veiv_heattr", zw2d )                  !  heat transport in i-direction 
Note: See TracChangeset for help on using the changeset viewer.