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 9176 for branches/UKMO/dev_r5518_GO6_package_OMP/NEMOGCM/NEMO/OPA_SRC/LDF – NEMO

Ignore:
Timestamp:
2018-01-04T13:30:03+01:00 (6 years ago)
Author:
andmirek
Message:

#2001: OMP directives

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r5518_GO6_package_OMP/NEMOGCM/NEMO/OPA_SRC/LDF/ldfslp.F90

    r6498 r9176  
    105105      INTEGER  ::   ii0, ii1, iku   ! temporary integer 
    106106      INTEGER  ::   ij0, ij1, ikv   ! temporary integer 
    107       REAL(wp) ::   zeps, zm1_g, zm1_2g, z1_16, zcofw ! local scalars 
     107      REAL(wp) ::   zeps, zm1_g, zm1_2g, z1_16, zcofw, zcofwa ! local scalars 
    108108      REAL(wp) ::   zci, zfi, zau, zbu, zai, zbi   !   -      - 
    109109      REAL(wp) ::   zcj, zfj, zav, zbv, zaj, zbj   !   -      - 
     
    131131         zwz(:,:,:) = 0._wp 
    132132         ! 
     133!$OMP PARALLEL DO 
    133134         DO jk = 1, jpk             !==   i- & j-gradient of density   ==! 
    134135            DO jj = 1, jpjm1 
     
    139140            END DO 
    140141         END DO 
     142 
    141143         IF( ln_zps ) THEN                           ! partial steps correction at the bottom ocean level 
     144!$OMP PARALLEL DO 
    142145            DO jj = 1, jpjm1 
    143146               DO ji = 1, jpim1 
     
    148151         ENDIF 
    149152         IF( ln_zps .AND. ln_isfcav ) THEN           ! partial steps correction at the bottom ocean level 
     153!$OMP PARALLEL DO 
    150154            DO jj = 1, jpjm1 
    151155               DO ji = 1, jpim1 
     
    158162         !==   Local vertical density gradient at T-point   == !   (evaluated from N^2) 
    159163         ! interior value 
     164!$OMP PARALLEL DO 
    160165         DO jk = 2, jpkm1 
    161166            !                                ! zdzr = d/dz(prd)= - ( prd ) / grav * mk(pn2) -- at t point 
     
    171176         IF ( ln_isfcav ) THEN 
    172177            ! if isf need to overwrite the interior value at at the first ocean point 
     178!$OMP PARALLEL DO 
    173179            DO jj = 1, jpjm1 
    174180               DO ji = 1, jpim1 
     
    186192         ! 
    187193         IF ( ln_isfcav ) THEN 
     194!$OMP PARALLEL DO 
    188195            DO jj = 2, jpjm1 
    189196               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    195202            ENDDO 
    196203         ELSE 
     204!$OMP PARALLEL DO 
    197205            DO jj = 2, jpjm1 
    198206               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    202210            ENDDO 
    203211         END IF 
     212!$OMP PARALLEL DO PRIVATE(zau, zav, zbu, zbv, zbu, zbv, zfi, zfj, zdepu, zdepv) 
    204213         DO jk = 2, jpkm1                            !* Slopes at u and v points 
    205214            DO jj = 2, jpjm1 
     
    243252            END DO 
    244253         END DO 
     254!$OMP END PARALLEL DO 
    245255         CALL lbc_lnk( zwz, 'U', -1. )   ;   CALL lbc_lnk( zww, 'V', -1. )      ! lateral boundary conditions 
    246256         ! 
    247257         !                                            !* horizontal Shapiro filter 
     258!$OMP PARALLEL DO 
    248259         DO jk = 2, jpkm1 
    249260            DO jj = 2, jpjm1, MAX(1, jpj-3)                        ! rows jj=2 and =jpjm1 only 
     
    287298            END DO 
    288299         END DO 
    289  
     300!$OMP END PARALLEL DO 
    290301 
    291302         ! II.  slopes at w point           | wslpi = mij( d/di( prd ) / d/dz( prd ) 
    292303         ! ===========================      | wslpj = mij( d/dj( prd ) / d/dz( prd ) 
    293304         ! 
     305!$OMP PARALLEL DO PRIVATE(zbw, zci, zcj, zai, zaj, zbi, zbj, zfk, zck) 
    294306         DO jk = 2, jpkm1 
    295307            DO jj = 2, jpjm1 
     
    329341            END DO 
    330342         END DO 
     343!$OMP END PARALLEL DO 
    331344         CALL lbc_lnk( zwz, 'T', -1. )   ;    CALL lbc_lnk( zww, 'T', -1. )      ! lateral boundary conditions 
    332345         ! 
    333346         !                                           !* horizontal Shapiro filter 
     347!$OMP PARALLEL DO PRIVATE(zcofwa, zcofw, zck) 
    334348         DO jk = 2, jpkm1 
    335349            DO jj = 2, jpjm1, MAX(1, jpj-3)                        ! rows jj=2 and =jpjm1 only 
    336350               DO ji = 2, jpim1 
    337                   zcofw = tmask(ji,jj,jk) * z1_16 
     351                  zcofwa = tmask(ji,jj,jk) * z1_16 
    338352                  wslpi(ji,jj,jk) = (          zwz(ji-1,jj-1,jk) + zwz(ji+1,jj-1,jk)     & 
    339353                       &                +      zwz(ji-1,jj+1,jk) + zwz(ji+1,jj+1,jk)     & 
    340354                       &                + 2.*( zwz(ji  ,jj-1,jk) + zwz(ji-1,jj  ,jk)     & 
    341355                       &                +      zwz(ji+1,jj  ,jk) + zwz(ji  ,jj+1,jk) )   & 
    342                        &                + 4.*  zwz(ji  ,jj  ,jk)                         ) * zcofw 
     356                       &                + 4.*  zwz(ji  ,jj  ,jk)                         ) * zcofwa 
    343357 
    344358                  wslpj(ji,jj,jk) = (          zww(ji-1,jj-1,jk) + zww(ji+1,jj-1,jk)     & 
     
    346360                       &                + 2.*( zww(ji  ,jj-1,jk) + zww(ji-1,jj  ,jk)     & 
    347361                       &                +      zww(ji+1,jj  ,jk) + zww(ji  ,jj+1,jk) )   & 
    348                        &                + 4.*  zww(ji  ,jj  ,jk)                         ) * zcofw 
     362                       &                + 4.*  zww(ji  ,jj  ,jk)                         ) * zcofwa 
    349363               END DO 
    350364            END DO 
     
    422436         ! set the slope of diffusion to the slope of s-surfaces  
    423437         !      ( c a u t i o n : minus sign as fsdep has positive value )  
     438!$OMP PARALLEL DO 
    424439         DO jj = 2, jpjm1  
    425440            DO ji = fs_2, fs_jpim1   ! vector opt.  
     
    430445            END DO  
    431446         END DO  
    432  
     447!$OMP PARALLEL DO 
    433448         DO jk = 2, jpk  
    434449            DO jj = 2, jpjm1  
     
    746761      ! 
    747762      !                                            !==   surface mixed layer mask   ! 
     763!$OMP PARALLEL DO PRIVATE(ik) 
    748764      DO jk = 1, jpk                               ! =1 inside the mixed layer, =0 otherwise 
    749765         DO jj = 1, jpj 
     
    770786      !----------------------------------------------------------------------- 
    771787      ! 
     788!$OMP PARALLEL DO PRIVATE(iku, ikv, zbu, zbv, zau, zav, ik, ikm1, zbw, & 
     789!$OMP&                    zci, zcj, zai, zaj, zbi, zbj) 
    772790      DO jj = 2, jpjm1 
    773791         DO ji = 2, jpim1 
     
    872890            ! set the slope of diffusion to the slope of s-surfaces 
    873891            !      ( c a u t i o n : minus sign as fsdep has positive value ) 
     892!$OMP PARALLEL DO 
    874893            DO jk = 1, jpk 
    875894               DO jj = 2, jpjm1 
Note: See TracChangeset for help on using the changeset viewer.