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/TOP_SRC/trcini.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/TOP_SRC/trcini.F90

    r7646 r7698  
    105105      !! ** Purpose :      passive tracers inventories at initialsation phase 
    106106      !!---------------------------------------------------------------------- 
    107       INTEGER ::  jk, jn    ! dummy loop indices 
     107      INTEGER ::  jk, jn, jj, ji    ! dummy loop indices 
    108108      CHARACTER (len=25) :: charout 
    109109      !!---------------------------------------------------------------------- 
    110110      !                                                              ! masked grid volume 
     111!$OMP PARALLEL 
     112!$OMP DO schedule(static) private(jk,jj,ji) 
    111113      DO jk = 1, jpk 
    112          cvol(:,:,jk) = e1e2t(:,:) * e3t_n(:,:,jk) * tmask(:,:,jk) 
    113       END DO 
     114         DO jj = 1, jpj 
     115            DO ji = 1, jpi 
     116               cvol(ji,jj,jk) = e1e2t(ji,jj) * e3t_n(ji,jj,jk) * tmask(ji,jj,jk) 
     117            END DO 
     118         END DO 
     119      END DO 
     120      ! 
     121!$OMP DO schedule(static) private(jn) 
     122      DO jn = 1, jptra 
     123         trai(jn) = 0._wp                                               ! initial content of all tracers 
     124      END DO 
     125!$OMP END PARALLEL 
    114126      !                                                              ! total volume of the ocean  
    115127      areatot = glob_sum( cvol(:,:,:) ) 
    116128      ! 
    117       trai(:) = 0._wp                                                   ! initial content of all tracers 
    118129      DO jn = 1, jptra 
    119130         trai(jn) = trai(jn) + glob_sum( trn(:,:,:,jn) * cvol(:,:,:)   ) 
     
    220231      USE trcdta          ! initialisation from files 
    221232      ! 
    222       INTEGER :: jn, jl   ! dummy loop indices 
     233      INTEGER :: jn, jl, jk, jj, ji   ! dummy loop indices 
    223234      !!---------------------------------------------------------------------- 
    224235      ! 
     
    254265        ENDIF 
    255266        ! 
    256         trb(:,:,:,:) = trn(:,:,:,:) 
     267!$OMP PARALLEL DO schedule(static) private(jn,jk,jj,ji) 
     268        DO jn = 1, jptra 
     269           DO jk = 1, jpk 
     270              DO jj = 1, jpj 
     271                 DO ji = 1, jpi 
     272                    trb(ji,jj,jk,jn) = trn(ji,jj,jk,jn) 
     273                 END DO 
     274              END DO 
     275           END DO 
     276        END DO 
    257277        !  
    258278      ENDIF 
    259279  
    260       tra(:,:,:,:) = 0._wp 
     280!$OMP PARALLEL DO schedule(static) private(jn,jk,jj,ji) 
     281      DO jn = 1, jptra 
     282         DO jk = 1, jpk 
     283            DO jj = 1, jpj 
     284               DO ji = 1, jpi 
     285                  tra(ji,jj,jk,jn) = 0._wp 
     286               END DO 
     287            END DO 
     288         END DO 
     289      END DO 
    261290      !                                                         ! Partial top/bottom cell: GRADh(trn) 
    262291   END SUBROUTINE trc_ini_state 
Note: See TracChangeset for help on using the changeset viewer.