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 – NEMO

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

#2001 few additionale changes

Location:
branches/UKMO/dev_r5518_GO6_package_OMP/NEMOGCM/NEMO/OPA_SRC
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r5518_GO6_package_OMP/NEMOGCM/NEMO/OPA_SRC/DOM/domhgr.F90

    r6487 r9616  
    482482      r1_e2v  (:,:) = 1._wp    / e2v(:,:) 
    483483      r1_e2f  (:,:) = 1._wp    / e2f(:,:) 
    484  
    485484      ! Control printing : Grid informations (if not restart) 
    486485      ! ---------------- 
     
    527526 
    528527      CASE ( 0, 1, 4 )               ! mesh on the sphere 
    529  
    530528         ff(:,:) = 2. * omega * SIN( rad * gphif(:,:) )  
    531  
    532529      CASE ( 2 )                     ! f-plane at ppgphi0  
    533530 
     
    676673         e2f=1.0e2 
    677674      END WHERE 
    678         
    679675    END SUBROUTINE hgr_read 
    680676     
  • branches/UKMO/dev_r5518_GO6_package_OMP/NEMOGCM/NEMO/OPA_SRC/DYN/divcur.F90

    r9176 r9616  
    287287      ENDIF 
    288288 
    289 !$OMP PARALLEL DO                                      ! =============== 
    290       DO jk = 1, jpkm1                                 ! Horizontal slab 
    291          !                                             ! =============== 
    292          ! 
    293          hdivb(:,:,jk) = hdivn(:,:,jk)    ! time swap of div arrays 
    294          rotb (:,:,jk) = rotn (:,:,jk)    ! time swap of rot arrays 
    295          ! 
     289         hdivb(:,:,1:jpkm1) = hdivn(:,:,1:jpkm1)    ! time swap of div arrays 
     290         rotb (:,:,1:jpkm1) = rotn (:,:,1:jpkm1)    ! time swap of rot arrays 
     291 
    296292         !                                             ! -------- 
    297293         ! Horizontal divergence                       !   div  
    298294         !                                             ! -------- 
     295!$OMP PARALLEL DO 
     296      DO jk = 1, jpkm1 
    299297         DO jj = 2, jpjm1 
    300298            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    312310            IF ((nbondj == -1).OR.(nbondj == 2)) hdivn(:      ,2      ,jk) = 0.e0      ! south 
    313311         ENDIF 
     312      END DO 
    314313 
    315314         !                                             ! -------- 
    316315         ! relative vorticity                          !   rot  
    317316         !                                             ! -------- 
     317!$OMP PARALLEL DO 
     318      DO jk = 1, jpkm1 
    318319         DO jj = 1, jpjm1 
    319320            DO ji = 1, fs_jpim1   ! vector opt. 
  • 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      ! 
  • branches/UKMO/dev_r5518_GO6_package_OMP/NEMOGCM/NEMO/OPA_SRC/SBC/sbcrnf.F90

    r6498 r9616  
    216216            END DO 
    217217         ELSE                          ! constant volume case : just apply the runoff input flow 
     218!$OMP PARALLEL DO 
    218219            DO jj = 1, jpj 
    219220               DO ji = 1, jpi 
  • branches/UKMO/dev_r5518_GO6_package_OMP/NEMOGCM/NEMO/OPA_SRC/TRA/traqsr.F90

    r6498 r9616  
    153153      IF( lk_qsr_bio .AND. ln_qsr_bio ) THEN      !  bio-model fluxes  : all vertical coordinates  ! 
    154154         !                                        ! ============================================== ! 
     155!$OMP PARALLEL DO  
    155156         DO jk = 1, jpkm1 
    156157            qsr_hc(:,:,jk) = r1_rau0_rcp * ( etot3(:,:,jk) - etot3(:,:,jk+1) ) 
    157158         END DO 
    158159         !                                        Add to the general trend 
     160!$OMP PARALLEL DO PRIVATE (z1_e3t) 
    159161         DO jk = 1, jpkm1 
    160162            DO jj = 2, jpjm1  
     
    198200                  ! 
    199201                  CALL fld_read( kt, 1, sf_chl )            ! Read Chl data and provides it at the current time step 
    200 !CDIR NOVERRCHK   ! 
     202!$OMP PARALLEL DO PRIVATE(zchl, zCtot, zze, zlogc, zlogc2, zlogc3, zCb, zCmax, & 
     203!$OMP&                    zpsimax, zdelpsi, zCze, zpsi, jk) SHARED (nksr) 
    201204                  DO jj = 1, jpj 
    202 !CDIR NOVERRCHK 
    203205                     DO ji = 1, jpi 
    204206                        zchl    = sf_chl(1)%fnow(ji,jj,1) 
     
    264266               END DO 
    265267               ! 
     268!$OMP PARALLEL DO 
    266269               DO jk = 1, nksr                                        ! compute and add qsr trend to ta 
    267270                  qsr_hc(:,:,jk) = r1_rau0_rcp * ( zea(:,:,jk) - zea(:,:,jk+1) ) 
     
    271274               ! 
    272275               IF ( ln_qsr_ice ) THEN    ! store attenuation coefficient of the first ocean level 
    273 !CDIR NOVERRCHK 
    274276                  DO jj = 1, jpj                                         ! Separation in R-G-B depending of the surface Chl 
    275 !CDIR NOVERRCHK 
    276277                     DO ji = 1, jpi 
    277278                        zchl = MIN( 10. , MAX( 0.03, zchl3d(ji,jj,1) ) ) 
     
    283284                  END DO 
    284285                  !  
     286!$OMP PARALLEL DO PRIVATE(zc0, zc1, zc2, zc3) 
    285287                  DO jj = 1, jpj 
    286288                     DO ji = 1, jpi 
     
    313315               zz0   =        rn_abs   * r1_rau0_rcp 
    314316               zz1   = ( 1. - rn_abs ) * r1_rau0_rcp 
     317!$OMP PARALLEL DO PRIVATE (zc0, zc1) 
    315318               DO jk = 1, nksr                    ! solar heat absorbed at T-point in the top 400m  
    316319                  DO jj = 1, jpj 
     
    324327               ! clem: store attenuation coefficient of the first ocean level 
    325328               IF ( ln_qsr_ice ) THEN 
     329!$OMP PARALLEL DO PRIVATE (zc0, zc1) 
    326330                  DO jj = 1, jpj 
    327331                     DO ji = 1, jpi 
     
    333337               ENDIF 
    334338            ELSE                                               !* constant volume: coef. computed one for all 
     339!$OMP PARALLEL DO 
    335340               DO jk = 1, nksr 
    336341                  DO jj = 2, jpjm1 
     
    351356         ! 
    352357         !                                        Add to the general trend 
     358!$OMP PARALLEL DO PRIVATE (z1_e3t) 
    353359         DO jk = 1, nksr 
    354360            DO jj = 2, jpjm1  
     
    538544                  ze3(:,:,1) = zcoef 
    539545                  zea(:,:,1) = tmask(:,:,1)                   ! = ( ze0+ze1+z2+ze3 ) * tmask 
    540                 
     546!$OMP PARALLEL DO PRIVATE(zc0, zc1, zc2, zc3) 
    541547                  DO jk = 2, nksr+1 
    542 !CDIR NOVERRCHK 
    543548                     DO jj = 1, jpj 
    544 !CDIR NOVERRCHK    
    545549                        DO ji = 1, jpi 
    546550                           zc0 = ze0(ji,jj,jk-1) * EXP( - e3t_0(ji,jj,jk-1) * xsi0r     ) 
     
    557561                  END DO  
    558562                  ! 
     563!$OMP PARALLEL DO 
    559564                  DO jk = 1, nksr 
    560565                     ! (ISF) no light penetration below the ice shelves 
     
    582587               zz0 =        rn_abs   * r1_rau0_rcp 
    583588               zz1 = ( 1. - rn_abs ) * r1_rau0_rcp 
     589!$OMP PARALLEL DO PRIVATE(zc0, zc1) 
    584590               DO jk = 1, nksr                    !*  solar heat absorbed at T-point computed once for all 
    585591                  DO jj = 1, jpj                              ! top 400 meters 
  • branches/UKMO/dev_r5518_GO6_package_OMP/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfddm.F90

    r6498 r9616  
    109109      ! 
    110110      !                                                ! =============== 
     111!$OMP PARALLEL  
    111112      DO jk = 2, jpkm1                                 ! Horizontal slab 
    112113         !                                             ! =============== 
    113114         ! Define the mask  
    114115         ! --------------- 
     116!$OMP DO PRIVATE(zrw, zaw, zbw, zdt, zds) 
    115117         DO jj = 1, jpj                                ! R=zrau = (alpha / beta) (dk[t] / dk[s]) 
    116118            DO ji = 1, jpi 
     
    130132         END DO 
    131133 
     134!$OMP DO 
    132135         DO jj = 1, jpj                                     ! indicators: 
    133136            DO ji = 1, jpi 
     
    156159         END DO 
    157160         ! mask zmsk in order to have avt and avs masked 
    158          zmsks(:,:) = zmsks(:,:) * wmask(:,:,jk) 
    159  
     161!$OMP DO  
     162         DO jj = 1, jpj 
     163            DO ji = 1, jpi 
     164                zmsks(ji,jj) = zmsks(ji,jj) * wmask(ji,jj,jk) 
     165            END DO 
     166         ENDDO 
    160167 
    161168         ! Update avt and avs 
    162169         ! ------------------ 
    163170         ! Constant eddy coefficient: reset to the background value 
    164 !CDIR NOVERRCHK 
     171!$OMP DO PRIVATE(zinr, zrr, zavfs, zavft, zavdt, zavds) 
    165172         DO jj = 1, jpj 
    166 !CDIR NOVERRCHK 
    167173            DO ji = 1, jpi 
    168174               zinr = 1._wp / zrau(ji,jj) 
     
    192198         ! -------------------------------- 
    193199!!gm to be changed following the definition of avm. 
     200!$OMP DO  
    194201         DO jj = 1, jpjm1 
    195202            DO ji = 1, fs_jpim1   ! vector opt. 
     
    204211         !                                                ! =============== 
    205212      END DO                                              !   End of slab 
     213!$OMP END PARALLEL 
    206214      !                                                   ! =============== 
    207215      ! 
Note: See TracChangeset for help on using the changeset viewer.