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/ZDF/zdftmx.F90 – 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/ZDF/zdftmx.F90

    r6498 r9176  
    111111      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    112112      REAL(wp) ::   ztpc         ! scalar workspace 
    113       REAL(wp), POINTER, DIMENSION(:,:) ::   zkz 
     113      REAL(wp), DIMENSION(jpi,jpj) ::   zkz 
    114114      !!---------------------------------------------------------------------- 
    115115      ! 
    116116      IF( nn_timing == 1 )  CALL timing_start('zdf_tmx') 
    117117      ! 
    118       CALL wrk_alloc( jpi,jpj, zkz ) 
     118!     CALL wrk_alloc( jpi,jpj, zkz ) 
    119119 
    120120      !                          ! ----------------------- ! 
     
    128128         zkz(:,:) = zkz(:,:) + fse3w(:,:,jk) * MAX( 0.e0, rn2(:,:,jk) ) * rau0 * zav_tide(:,:,jk) * wmask(:,:,jk) 
    129129      END DO 
    130  
    131130      DO jj = 1, jpj                !* Here zkz should be equal to en_tmx ==> multiply by en_tmx/zkz to recover en_tmx 
    132131         DO ji = 1, jpi 
     
    134133         END DO 
    135134      END DO 
    136  
    137135      DO jk = 2, jpkm1     !* Mutiply by zkz to recover en_tmx, BUT bound by 30/6 ==> zav_tide bound by 300 cm2/s 
    138136         DO jj = 1, jpj                !* Here zkz should be equal to en_tmx ==> multiply by en_tmx/zkz to recover en_tmx 
     
    142140         END DO 
    143141      END DO 
    144  
    145142      IF( kt == nit000 ) THEN       !* check at first time-step: diagnose the energy consumed by zav_tide 
    146143         ztpc = 0.e0 
     
    166163      !                          !   Update  mixing coefs  !                           
    167164      !                          ! ----------------------- ! 
     165!$OMP PARALLEL DO 
    168166      DO jk = 2, jpkm1              !* update momentum & tracer diffusivity with tidal mixing 
    169167         DO jj = 1, jpj                !* Here zkz should be equal to en_tmx ==> multiply by en_tmx/zkz to recover en_tmx 
     
    174172         END DO 
    175173      END DO 
    176        
     174!$OMP PARALLEL DO 
    177175      DO jk = 2, jpkm1              !* update momentum & tracer diffusivity with tidal mixing 
    178176         DO jj = 2, jpjm1 
     
    190188      IF(ln_ctl)   CALL prt_ctl(tab3d_1=zav_tide , clinfo1=' tmx - av_tide: ', tab3d_2=avt, clinfo2=' avt: ', ovlap=1, kdim=jpk) 
    191189      ! 
    192       CALL wrk_dealloc( jpi,jpj, zkz ) 
     190!     CALL wrk_dealloc( jpi,jpj, zkz ) 
    193191      ! 
    194192      IF( nn_timing == 1 )  CALL timing_stop('zdf_tmx') 
     
    222220      INTEGER  ::   ji, jj, jk    ! dummy loop indices 
    223221      REAL(wp) ::   zcoef, ztpc   ! temporary scalar 
    224       REAL(wp), DIMENSION(:,:)  , POINTER ::   zkz                        ! 2D workspace 
    225       REAL(wp), DIMENSION(:,:)  , POINTER ::   zsum1 , zsum2 , zsum       !  -      - 
     222      REAL(wp), DIMENSION(jpi, jpj) ::   zkz                        ! 2D workspace 
     223      REAL(wp), DIMENSION(jpi, jpj) ::   zsum1 , zsum2 , zsum       !  -      - 
    226224      REAL(wp), DIMENSION(:,:,:), POINTER ::   zempba_3d_1, zempba_3d_2   ! 3D workspace 
    227225      REAL(wp), DIMENSION(:,:,:), POINTER ::   zempba_3d  , zdn2dz        !  -      - 
     
    231229      IF( nn_timing == 1 )  CALL timing_start('tmx_itf') 
    232230      ! 
    233       CALL wrk_alloc( jpi,jpj, zkz, zsum1 , zsum2 , zsum ) 
     231!     CALL wrk_alloc( jpi,jpj, zkz, zsum1 , zsum2 , zsum ) 
    234232      CALL wrk_alloc( jpi,jpj,jpk, zempba_3d_1, zempba_3d_2, zempba_3d, zdn2dz, zavt_itf ) 
    235233 
     
    237235      zempba_3d_1(:,:,jpk) = 0.e0 
    238236      zempba_3d_2(:,:,jpk) = 0.e0 
     237!$OMP PARALLEL DO 
    239238      DO jk = 1, jpkm1              
    240239         zdn2dz     (:,:,jk) = rn2(:,:,jk) - rn2(:,:,jk+1)           ! Vertical profile of dN2/dz 
    241 !CDIR NOVERRCHK 
    242240         zempba_3d_1(:,:,jk) = SQRT(  MAX( 0.e0, rn2(:,:,jk) )  )    !    -        -    of N 
    243241         zempba_3d_2(:,:,jk) =        MAX( 0.e0, rn2(:,:,jk) )       !    -        -    of N^2 
     
    257255         END DO 
    258256      END DO 
    259  
    260257      DO jk= 1, jpk 
    261258         DO jj = 1, jpj 
     
    313310 
    314311      !                             ! Update pav with the ITF mixing coefficient 
     312!$OMP PARALLEL DO 
    315313      DO jk = 2, jpkm1 
    316314         pav(:,:,jk) = pav     (:,:,jk) * ( 1.e0 - mask_itf(:,:) )   & 
     
    318316      END DO 
    319317      ! 
    320       CALL wrk_dealloc( jpi,jpj, zkz, zsum1 , zsum2 , zsum ) 
     318!     CALL wrk_dealloc( jpi,jpj, zkz, zsum1 , zsum2 , zsum ) 
    321319      CALL wrk_dealloc( jpi,jpj,jpk, zempba_3d_1, zempba_3d_2, zempba_3d, zdn2dz, zavt_itf ) 
    322320      ! 
Note: See TracChangeset for help on using the changeset viewer.