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 7698 for trunk/NEMOGCM/NEMO/OPA_SRC/step.F90 – NEMO

Ignore:
Timestamp:
2017-02-18T10:02:03+01:00 (7 years ago)
Author:
mocavero
Message:

update trunk with OpenMP parallelization

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/OPA_SRC/step.F90

    r7646 r7698  
    7474      !!              -8- Outputs and diagnostics 
    7575      !!---------------------------------------------------------------------- 
    76       INTEGER ::   ji,jj,jk ! dummy loop indice 
     76      INTEGER ::   ji,jj,jk,jn ! dummy loop indice 
    7777      INTEGER ::   indic    ! error indicator if < 0 
    7878      INTEGER ::   kcall    ! optional integer argument (dom_vvl_sf_nxt) 
     
    135135      ! 
    136136      IF( lk_zdfcst  ) THEN                                ! Constant Kz (reset avt, avm[uv] to the background value) 
    137          avt (:,:,:) = rn_avt0 * wmask (:,:,:) 
    138          avmu(:,:,:) = rn_avm0 * wumask(:,:,:) 
    139          avmv(:,:,:) = rn_avm0 * wvmask(:,:,:) 
     137!$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
     138         DO jk = 1, jpk 
     139            DO jj = 1, jpj 
     140               DO ji = 1, jpi 
     141                  avt (ji,jj,jk) = rn_avt0 * wmask (ji,jj,jk) 
     142                  avmu(ji,jj,jk) = rn_avm0 * wumask(ji,jj,jk) 
     143                  avmv(ji,jj,jk) = rn_avm0 * wvmask(ji,jj,jk) 
     144               END DO 
     145            END DO 
     146         END DO 
    140147      ENDIF 
    141148 
    142149      IF( ln_rnf_mouth ) THEN                         ! increase diffusivity at rivers mouths 
    143          DO jk = 2, nkrnf   ;   avt(:,:,jk) = avt(:,:,jk) + 2._wp * rn_avt_rnf * rnfmsk(:,:) * tmask(:,:,jk)   ;   END DO 
     150!$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
     151         DO jk = 2, nkrnf 
     152            DO jj = 1, jpj 
     153               DO ji = 1, jpi 
     154                  avt(ji,jj,jk) = avt(ji,jj,jk) + 2._wp * rn_avt_rnf * rnfmsk(ji,jj) * tmask(ji,jj,jk) 
     155               END DO 
     156            END DO 
     157         END DO 
    144158      ENDIF 
    145159      IF( ln_zdfevd  )   CALL zdf_evd( kstp )         ! enhanced vertical eddy diffusivity 
     
    197211               &                                          rhd, gru , grv , grui, grvi   )  ! of t, s, rd at the first ocean level 
    198212!!jc: fs simplification 
    199                              
    200                          ua(:,:,:) = 0._wp            ! set dynamics trends to zero 
    201                          va(:,:,:) = 0._wp 
     213!$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
     214         DO jk = 1, jpk 
     215            DO jj = 1, jpj 
     216               DO ji = 1, jpi 
     217                  ua(ji,jj,jk) = 0._wp            ! set dynamics trends to zero 
     218                  va(ji,jj,jk) = 0._wp 
     219               END DO 
     220            END DO 
     221         END DO 
    202222 
    203223      IF(  lk_asminc .AND. ln_asmiau .AND. ln_dyninc )   & 
     
    252272      ! Active tracers                               
    253273      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    254                          tsa(:,:,:,:) = 0._wp         ! set tracer trends to zero 
     274      DO jn = 1, jpts 
     275!$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
     276         DO jk = 1, jpk 
     277            DO jj = 1, jpj 
     278               DO ji = 1, jpi 
     279                  tsa(ji,jj,jk,jn) = 0._wp         ! set tracer trends to zero 
     280               END DO 
     281            END DO 
     282         END DO 
     283      END DO 
    255284 
    256285      IF(  lk_asminc .AND. ln_asmiau .AND. & 
Note: See TracChangeset for help on using the changeset viewer.