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/OPA_SRC/DYN/sshwzv.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/OPA_SRC/DYN/sshwzv.F90

    r7698 r7753  
    7272      INTEGER, INTENT(in) ::   kt   ! time step 
    7373      !  
    74       INTEGER  ::   jk, jj, ji            ! dummy loop indice 
     74      INTEGER  ::   jk            ! dummy loop indice 
    7575      REAL(wp) ::   z2dt, zcoef   ! local scalars 
    7676      REAL(wp), POINTER, DIMENSION(:,:  ) ::   zhdiv   ! 2D workspace 
     
    9595      !                                           !------------------------------! 
    9696      IF(ln_wd) THEN 
    97         CALL wad_lmt(sshb, zcoef * (emp_b(:,:) + emp(:,:)), z2dt) 
    98       END IF 
    99  
    100       CALL div_hor( kt )                              ! Horizontal divergence 
    101       ! 
    102 !$OMP PARALLEL 
    103 !$OMP DO schedule(static) private(jj, ji) 
    104       DO jj = 1, jpj 
    105          DO ji = 1, jpi 
    106             zhdiv(ji,jj) = 0._wp 
    107          END DO 
    108       END DO            
     97         CALL wad_lmt(sshb, zcoef * (emp_b(:,:) + emp(:,:)), z2dt) 
     98      ENDIF 
     99 
     100      CALL div_hor( kt )                               ! Horizontal divergence 
     101      ! 
     102      zhdiv(:,:) = 0._wp 
    109103      DO jk = 1, jpkm1                                 ! Horizontal divergence of barotropic transports 
    110 !$OMP DO schedule(static) private(jj, ji) 
    111          DO jj = 1, jpj 
    112             DO ji = 1, jpi 
    113                zhdiv(ji,jj) = zhdiv(ji,jj) + e3t_n(ji,jj,jk) * hdivn(ji,jj,jk) 
    114             END DO 
    115          END DO            
     104        zhdiv(:,:) = zhdiv(:,:) + e3t_n(:,:,jk) * hdivn(:,:,jk) 
    116105      END DO 
    117106      !                                                ! Sea surface elevation time stepping 
     
    119108      ! compute the vertical velocity which can be used to compute the non-linear terms of the momentum equations. 
    120109      !  
    121 !$OMP DO schedule(static) private(jj, ji) 
    122       DO jj = 1, jpj 
    123          DO ji = 1, jpi 
    124             ssha(ji,jj) = (  sshb(ji,jj) - z2dt * ( zcoef * ( emp_b(ji,jj) + emp(ji,jj) ) + zhdiv(ji,jj) )  ) * ssmask(ji,jj) 
    125          END DO 
    126       END DO            
    127 !$OMP END PARALLEL 
     110      ssha(:,:) = (  sshb(:,:) - z2dt * ( zcoef * ( emp_b(:,:) + emp(:,:) ) + zhdiv(:,:) )  ) * ssmask(:,:) 
     111 
    128112      IF ( .NOT.ln_dynspg_ts ) THEN 
    129113         ! These lines are not necessary with time splitting since 
     
    141125      IF( lk_asminc .AND. ln_sshinc .AND. ln_asmiau ) THEN     ! Include the IAU weighted SSH increment 
    142126         CALL ssh_asm_inc( kt ) 
    143 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    144          DO jj = 1, jpj 
    145             DO ji = 1, jpi 
    146                ssha(ji,jj) = ssha(ji,jj) + z2dt * ssh_iau(ji,jj) 
    147             END DO 
    148          END DO            
     127         ssha(:,:) = ssha(:,:) + z2dt * ssh_iau(:,:) 
    149128      ENDIF 
    150129#endif 
     
    192171         IF(lwp) WRITE(numout,*) '~~~~~ ' 
    193172         ! 
    194 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    195          DO jj = 1, jpj 
    196             DO ji = 1, jpi 
    197                wn(ji,jj,jpk) = 0._wp                  ! bottom boundary condition: w=0 (set once for all) 
    198             END DO 
    199          END DO            
     173         wn(:,:,jpk) = 0._wp                  ! bottom boundary condition: w=0 (set once for all) 
    200174      ENDIF 
    201175      !                                           !------------------------------! 
     
    207181      IF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN      ! z_tilde and layer cases 
    208182         CALL wrk_alloc( jpi, jpj, jpk, zhdiv )  
    209 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    210183         ! 
    211184         DO jk = 1, jpkm1 
     
    223196         DO jk = jpkm1, 1, -1                       ! integrate from the bottom the hor. divergence 
    224197            ! computation of w 
    225 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    226             DO jj = 1, jpj 
    227                DO ji = 1, jpi   ! vector opt. 
    228                   wn(ji,jj,jk) = wn(ji,jj,jk+1) - ( e3t_n(ji,jj,jk) * hdivn(ji,jj,jk) + zhdiv(ji,jj,jk)    & 
    229                   &                         + z1_2dt * ( e3t_a(ji,jj,jk) - e3t_b(ji,jj,jk) )     ) * tmask(ji,jj,jk) 
    230                END DO 
    231             END DO 
     198            wn(:,:,jk) = wn(:,:,jk+1) - (  e3t_n(:,:,jk) * hdivn(:,:,jk) + zhdiv(:,:,jk)    & 
     199               &                         + z1_2dt * ( e3t_a(:,:,jk) - e3t_b(:,:,jk) )     ) * tmask(:,:,jk) 
    232200         END DO 
    233201         !          IF( ln_vvl_layer ) wn(:,:,:) = 0.e0 
     
    235203      ELSE   ! z_star and linear free surface cases 
    236204         DO jk = jpkm1, 1, -1                       ! integrate from the bottom the hor. divergence 
    237 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    238             DO jj = 1, jpj 
    239                DO ji = 1, jpi   ! vector opt. 
    240                   ! computation of w 
    241                   wn(ji,jj,jk) = wn(ji,jj,jk+1) - (  e3t_n(ji,jj,jk) * hdivn(ji,jj,jk)                 & 
    242                   &                         + z1_2dt * ( e3t_a(ji,jj,jk) - e3t_b(ji,jj,jk) )  ) * tmask(ji,jj,jk) 
    243                 END DO 
    244             END DO 
     205            ! computation of w 
     206            wn(:,:,jk) = wn(:,:,jk+1) - (  e3t_n(:,:,jk) * hdivn(:,:,jk)                 & 
     207               &                         + z1_2dt * ( e3t_a(:,:,jk) - e3t_b(:,:,jk) )  ) * tmask(:,:,jk) 
    245208         END DO 
    246209      ENDIF 
    247210 
    248211      IF( ln_bdy ) THEN 
    249 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    250212         DO jk = 1, jpkm1 
    251             DO jj = 1, jpj 
    252                DO ji = 1, jpi 
    253                   wn(ji,jj,jk) = wn(ji,jj,jk) * bdytmask(ji,jj) 
    254                END DO 
    255             END DO 
     213            wn(:,:,jk) = wn(:,:,jk) * bdytmask(:,:) 
    256214         END DO 
    257215      ENDIF 
     
    283241      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
    284242      ! 
    285       INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    286243      REAL(wp) ::   zcoef   ! local scalar 
    287244      !!---------------------------------------------------------------------- 
     
    297254      IF(  ( neuler == 0 .AND. kt == nit000 ) .OR.    & 
    298255         & ( ln_bt_fw    .AND. ln_dynspg_ts )      ) THEN  
    299 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    300          DO jj = 1, jpj 
    301             DO ji = 1, jpi 
    302                sshb(ji,jj) = sshn(ji,jj)                              ! before <-- now 
    303                sshn(ji,jj) = ssha(ji,jj)                              ! now    <-- after  (before already = now) 
    304             END DO 
    305          END DO            
     256         sshb(:,:) = sshn(:,:)                              ! before <-- now 
     257         sshn(:,:) = ssha(:,:)                              ! now    <-- after  (before already = now) 
    306258         ! 
    307259      ELSE           !==  Leap-Frog time-stepping: Asselin filter + swap  ==! 
    308260         !                                                  ! before <-- now filtered 
    309 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    310          DO jj = 1, jpj 
    311             DO ji = 1, jpi 
    312                sshb(ji,jj) = sshn(ji,jj) + atfp * ( sshb(ji,jj) - 2 * sshn(ji,jj) + ssha(ji,jj) ) 
    313             END DO 
    314          END DO            
     261         sshb(:,:) = sshn(:,:) + atfp * ( sshb(:,:) - 2 * sshn(:,:) + ssha(:,:) ) 
    315262         IF( .NOT.ln_linssh ) THEN                          ! before <-- with forcing removed 
    316263            zcoef = atfp * rdt * r1_rau0 
    317 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    318             DO jj = 1, jpj 
    319                DO ji = 1, jpi 
    320                   sshb(ji,jj) = sshb(ji,jj) - zcoef * (     emp_b(ji,jj) - emp   (ji,jj)   & 
    321                   &                             -    rnf_b(ji,jj) + rnf   (ji,jj)   & 
    322                   &                             + fwfisf_b(ji,jj) - fwfisf(ji,jj)   ) * ssmask(ji,jj) 
    323                END DO 
    324             END DO            
     264            sshb(:,:) = sshb(:,:) - zcoef * (     emp_b(:,:) - emp   (:,:)   & 
     265               &                             -    rnf_b(:,:) + rnf   (:,:)   & 
     266               &                             + fwfisf_b(:,:) - fwfisf(:,:)   ) * ssmask(:,:) 
    325267         ENDIF 
    326 !$OMP PARALLEL DO schedule(static) private(jj, ji) 
    327          DO jj = 1, jpj 
    328             DO ji = 1, jpi 
    329                sshn(ji,jj) = ssha(ji,jj)                              ! now <-- after 
    330             END DO 
    331          END DO            
     268         sshn(:,:) = ssha(:,:)                              ! now <-- after 
    332269      ENDIF 
    333270      ! 
Note: See TracChangeset for help on using the changeset viewer.