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 9616 for branches/UKMO/dev_r5518_GO6_package_OMP/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf_imp.F90 – NEMO

Ignore:
Timestamp:
2018-05-22T11:09:09+02:00 (6 years ago)
Author:
andmirek
Message:

#2001 few additionale changes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r5518_GO6_package_OMP/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf_imp.F90

    r6795 r9616  
    9999 
    100100      IF( ln_bfrimp ) THEN 
     101!$OMP PARALLEL DO PRIVATE(ikbu, ikbv) SHARED(mbku, mbkv) 
    101102         DO jj = 2, jpjm1 
    102103            DO ji = 2, jpim1 
     
    108109         END DO 
    109110         IF ( ln_isfcav ) THEN 
     111!$OMP PARALLEL DO PRIVATE(ikbu, ikbv) SHARED(miku, mikv) 
    110112            DO jj = 2, jpjm1 
    111113               DO ji = 2, jpim1 
     
    121123#if defined key_dynspg_ts 
    122124      IF( ln_dynadv_vec .OR. .NOT. lk_vvl ) THEN      ! applied on velocity 
     125!$OMP PARALLEL DO 
    123126         DO jk = 1, jpkm1 
    124127            ua(:,:,jk) = ( ub(:,:,jk) + p2dt * ua(:,:,jk) ) * umask(:,:,jk) 
     
    126129         END DO 
    127130      ELSE                                            ! applied on thickness weighted velocity 
     131!$OMP PARALLEL DO 
    128132         DO jk = 1, jpkm1 
    129133            ua(:,:,jk) = (          ub(:,:,jk) * fse3u_b(:,:,jk)      & 
     
    138142      IF ( ln_bfrimp .AND.lk_dynspg_ts ) THEN 
    139143         ! remove barotropic velocities: 
     144!$OMP PARALLEL DO 
    140145         DO jk = 1, jpkm1 
    141146            ua(:,:,jk) = (ua(:,:,jk) - ua_b(:,:)) * umask(:,:,jk) 
     
    143148         END DO 
    144149         ! Add bottom/top stress due to barotropic component only: 
     150!$OMP PARALLEL DO PRIVATE(ikbu, ikbv, ze3ua, ze3va) 
    145151         DO jj = 2, jpjm1         
    146152            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    154160         END DO 
    155161         IF ( ln_isfcav ) THEN 
     162!$OMP PARALLEL DO PRIVATE(ikbu, ikbv, ze3ua, ze3va) 
    156163            DO jj = 2, jpjm1         
    157164               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    174181      ! non zero value at the ocean bottom depending on the bottom friction used. 
    175182      ! 
     183!$OMP PARALLEL DO PRIVATE(ze3ua, zcoef, zzwi, zzws) 
    176184      DO jk = 1, jpkm1        ! Matrix 
    177185         DO jj = 2, jpjm1  
     
    187195         END DO 
    188196      END DO 
     197!$OMP PARALLEL DO 
    189198      DO jj = 2, jpjm1        ! Surface boundary conditions 
    190199         DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    210219      ! 
    211220      !==  First recurrence : Dk = Dk - Lk * Uk-1 / Dk-1   (increasing k)  == 
     221!$OMP PARALLEL 
    212222      DO jk = 2, jpkm1 
     223!$OMP DO 
    213224         DO jj = 2, jpjm1    
    214225            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    217228         END DO 
    218229      END DO 
    219       ! 
     230!$OMP END PARALLEL 
     231      ! 
     232#if defined key_dynspg_ts 
     233!$OMP PARALLEL DO PRIVATE(ze3ua) 
    220234      DO jj = 2, jpjm1        !==  second recurrence:    SOLk = RHSk - Lk / Dk-1  Lk-1  == 
    221235         DO ji = fs_2, fs_jpim1   ! vector opt. 
    222 #if defined key_dynspg_ts 
    223236            ze3ua =  ( 1._wp - r_vvl ) * fse3u_n(ji,jj,1) + r_vvl   * fse3u_a(ji,jj,1)  
    224237            ua(ji,jj,1) = ua(ji,jj,1) + p2dt * 0.5_wp * ( utau_b(ji,jj) + utau(ji,jj) )   & 
    225238               &                                      / ( ze3ua * rau0 ) * umask(ji,jj,1)  
     239         END DO 
     240      END DO 
    226241#else 
     242!$OMP PARALLEL DO 
     243      DO jj = 2, jpjm1        !==  second recurrence:    SOLk = RHSk - Lk / Dk-1 Lk-1  == 
     244         DO ji = fs_2, fs_jpim1   ! vector opt. 
    227245            ua(ji,jj,1) = ub(ji,jj,1) & 
    228246               &                   + p2dt *(ua(ji,jj,1) +  0.5_wp * ( utau_b(ji,jj) + utau(ji,jj) )   & 
    229247               &                                      / ( fse3u(ji,jj,1) * rau0     ) * umask(ji,jj,1) )  
    230 #endif 
    231          END DO 
    232       END DO 
     248         END DO 
     249      END DO 
     250#endif 
     251!$OMP PARALLEL PRIVATE(zrhs) 
    233252      DO jk = 2, jpkm1 
     253!$OMP DO 
    234254         DO jj = 2, jpjm1 
    235255            DO ji = fs_2, fs_jpim1 
     
    243263         END DO 
    244264      END DO 
    245       ! 
     265!$OMP END PARALLEL 
     266      ! 
     267!$OMP PARALLEL DO 
    246268      DO jj = 2, jpjm1        !==  thrid recurrence : SOLk = ( Lk - Uk * Ek+1 ) / Dk  == 
    247269         DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    249271         END DO 
    250272      END DO 
     273!$OMP PARALLEL 
    251274      DO jk = jpk-2, 1, -1 
     275!$OMP DO 
    252276         DO jj = 2, jpjm1 
    253277            DO ji = fs_2, fs_jpim1 
     
    256280         END DO 
    257281      END DO 
     282!$OMP END PARALLEL 
    258283 
    259284#if ! defined key_dynspg_ts 
    260285      ! Normalization to obtain the general momentum trend ua 
     286!$OMP PARALLEL DO 
    261287      DO jk = 1, jpkm1 
    262288         DO jj = 2, jpjm1    
     
    274300      ! non zero value at the ocean bottom depending on the bottom friction used 
    275301      ! 
     302!$OMP PARALLEL 
     303!$OMP DO PRIVATE(ze3va, zcoef, zzwi, zzws) 
    276304      DO jk = 1, jpkm1        ! Matrix 
    277305         DO jj = 2, jpjm1    
     
    287315         END DO 
    288316      END DO 
     317!$OMP DO  
    289318      DO jj = 2, jpjm1        ! Surface boundary conditions 
    290319         DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    293322         END DO 
    294323      END DO 
     324!$OMP END PARALLEL 
    295325 
    296326      ! Matrix inversion 
     
    310340      ! 
    311341      !==  First recurrence : Dk = Dk - Lk * Uk-1 / Dk-1   (increasing k)  == 
     342!$OMP PARALLEL 
    312343      DO jk = 2, jpkm1         
     344!$OMP DO 
    313345         DO jj = 2, jpjm1    
    314346            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    317349         END DO 
    318350      END DO 
    319       ! 
     351!$OMP END PARALLEL 
     352      ! 
     353!$OMP PARALLEL DO PRIVATE(ze3va) 
    320354      DO jj = 2, jpjm1        !==  second recurrence:    SOLk = RHSk - Lk / Dk-1  Lk-1  == 
    321355         DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    331365         END DO 
    332366      END DO 
     367!$OMP PARALLEL 
    333368      DO jk = 2, jpkm1 
     369!$OMP DO PRIVATE(zrhs) 
    334370         DO jj = 2, jpjm1 
    335371            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    343379         END DO 
    344380      END DO 
    345       ! 
     381!$OMP END PARALLEL 
     382      ! 
     383!$OMP PARALLEL DO 
    346384      DO jj = 2, jpjm1        !==  third recurrence : SOLk = ( Lk - Uk * SOLk+1 ) / Dk  == 
    347385         DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    349387         END DO 
    350388      END DO 
     389 
     390!$OMP PARALLEL 
    351391      DO jk = jpk-2, 1, -1 
     392!$OMP DO 
    352393         DO jj = 2, jpjm1 
    353394            DO ji = fs_2, fs_jpim1 
     
    356397         END DO 
    357398      END DO 
     399!$OMP END PARALLEL 
    358400 
    359401      ! Normalization to obtain the general momentum trend va 
    360402#if ! defined key_dynspg_ts 
     403!$OMP PARALLEL DO 
    361404      DO jk = 1, jpkm1 
    362405         DO jj = 2, jpjm1    
     
    371414      !! restore bottom layer avmu(v)  
    372415      IF( ln_bfrimp ) THEN 
     416!$OMP PARALLEL PRIVATE(ikbu, ikbv) 
     417!$OMP DO 
    373418        DO jj = 2, jpjm1 
    374419           DO ji = 2, jpim1 
     
    380425        END DO 
    381426        IF (ln_isfcav) THEN 
     427!$OMP DO 
    382428           DO jj = 2, jpjm1 
    383429              DO ji = 2, jpim1 
     
    389435           END DO 
    390436        END IF 
     437!$OMP END PARALLEL 
    391438      ENDIF 
    392439      ! 
Note: See TracChangeset for help on using the changeset viewer.