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/PISCES/P4Z/p4zrem.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/PISCES/P4Z/p4zrem.F90

    r7646 r7698  
    7878 
    7979      ! Initialisation of temprary arrys 
    80       zdepprod(:,:,:) = 1._wp 
    81       ztempbac(:,:)   = 0._wp 
    82       zfacsib(:,:,:)  = xsilab / ( 1.0 - xsilab ) 
    83       zfacsi(:,:,:)   = xsilab 
     80!$OMP PARALLEL 
     81!$OMP DO schedule(static) private(jk,jj,ji) 
     82      DO jk = 1, jpk 
     83         DO jj = 1, jpj 
     84            DO ji = 1, jpi 
     85               zdepprod(ji,jj,jk) = 1._wp 
     86               zfacsib(ji,jj,jk)  = xsilab / ( 1.0 - xsilab ) 
     87               zfacsi(ji,jj,jk)   = xsilab 
     88            END DO 
     89         END DO 
     90      END DO 
     91!$OMP DO schedule(static) private(jj,ji) 
     92      DO jj = 1, jpj 
     93         DO ji = 1, jpi 
     94            ztempbac(ji,jj)   = 0._wp 
     95         END DO 
     96      END DO 
    8497 
    8598      ! Computation of the mean phytoplankton concentration as 
     
    89102      ! ------------------------------------------------------- 
    90103      DO jk = 1, jpkm1 
     104!$OMP DO schedule(static) private(jj,ji,zdep,zdepmin) 
    91105         DO jj = 1, jpj 
    92106            DO ji = 1, jpi 
     
    105119 
    106120      IF( ln_p4z ) THEN 
     121!$OMP DO schedule(static) private(jk,jj,ji,zremik,zolimit) 
    107122         DO jk = 1, jpkm1 
    108123            DO jj = 1, jpj 
     
    136151         END DO 
    137152      ELSE 
     153!$OMP DO schedule(static) private(jk,jj,ji,zremik,zremikc,zremikn,zremikp,zolimit,zolimic,zolimin,zolimip,zdenitrn,zdenitrp) 
    138154         DO jk = 1, jpkm1 
    139155            DO jj = 1, jpj 
     
    181197 
    182198 
     199!$OMP DO schedule(static) private(jk,jj,ji,zonitr,zdenitnh4) 
    183200      DO jk = 1, jpkm1 
    184201         DO jj = 1, jpj 
     
    199216         END DO 
    200217      END DO 
    201  
    202        IF(ln_ctl)   THEN  ! print mean trends (used for debugging) 
    203          WRITE(charout, FMT="('rem1')") 
    204          CALL prt_ctl_trc_info(charout) 
    205          CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm) 
    206        ENDIF 
    207  
     218!$OMP END PARALLEL 
     219 
     220      IF(ln_ctl)   THEN  ! print mean trends (used for debugging) 
     221        WRITE(charout, FMT="('rem1')") 
     222        CALL prt_ctl_trc_info(charout) 
     223        CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm) 
     224      ENDIF 
     225 
     226!$OMP PARALLEL DO schedule(static) private(jk,jj,ji,zbactfer) 
    208227      DO jk = 1, jpkm1 
    209228         DO jj = 1, jpj 
     
    224243      END DO 
    225244 
    226        IF(ln_ctl)   THEN  ! print mean trends (used for debugging) 
    227          WRITE(charout, FMT="('rem2')") 
    228          CALL prt_ctl_trc_info(charout) 
    229          CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm) 
    230        ENDIF 
     245      IF(ln_ctl)   THEN  ! print mean trends (used for debugging) 
     246        WRITE(charout, FMT="('rem2')") 
     247        CALL prt_ctl_trc_info(charout) 
     248        CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm) 
     249      ENDIF 
    231250 
    232251      ! Initialization of the array which contains the labile fraction 
     
    235254 
    236255      DO jk = 1, jpkm1 
     256!$OMP PARALLEL DO schedule(static) private(jj,ji,zdep,zsatur,zsatur2,znusil,zsiremin,zosil) 
    237257         DO jj = 1, jpj 
    238258            DO ji = 1, jpi 
     
    264284         CALL prt_ctl_trc_info(charout) 
    265285         CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm) 
    266        ENDIF 
     286      ENDIF 
    267287 
    268288      IF( knt == nrdttrc ) THEN 
    269           CALL wrk_alloc( jpi, jpj, jpk, zw3d ) 
    270           zfact = 1.e+3 * rfact2r  !  conversion from mol/l/kt to  mol/m3/s 
    271           ! 
    272           IF( iom_use( "REMIN" ) )  THEN 
    273               zw3d(:,:,:) = zolimi(:,:,:) * tmask(:,:,:) * zfact !  Remineralisation rate 
    274               CALL iom_put( "REMIN"  , zw3d ) 
    275           ENDIF 
    276           IF( iom_use( "DENIT" ) )  THEN 
    277               zw3d(:,:,:) = denitr(:,:,:) * rdenit * rno3 * tmask(:,:,:) * zfact ! Denitrification 
    278               CALL iom_put( "DENIT"  , zw3d ) 
    279           ENDIF 
    280           ! 
    281           CALL wrk_dealloc( jpi, jpj, jpk, zw3d ) 
    282        ENDIF 
     289         CALL wrk_alloc( jpi, jpj, jpk, zw3d ) 
     290         zfact = 1.e+3 * rfact2r  !  conversion from mol/l/kt to  mol/m3/s 
     291         ! 
     292         IF( iom_use( "REMIN" ) )  THEN 
     293!$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
     294            DO jk = 1, jpk 
     295               DO jj = 1, jpj 
     296                  DO ji = 1, jpi 
     297                     zw3d(ji,jj,jk) = zolimi(ji,jj,jk) * tmask(ji,jj,jk) * zfact !  Remineralisation rate 
     298                  END DO 
     299               END DO 
     300            END DO 
     301            CALL iom_put( "REMIN"  , zw3d ) 
     302         ENDIF 
     303         IF( iom_use( "DENIT" ) )  THEN 
     304!$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
     305            DO jk = 1, jpk 
     306               DO jj = 1, jpj 
     307                  DO ji = 1, jpi 
     308                     zw3d(ji,jj,jk) = denitr(ji,jj,jk) * rdenit * rno3 * tmask(ji,jj,jk) * zfact ! Denitrification 
     309                  END DO 
     310               END DO 
     311            END DO 
     312            CALL iom_put( "DENIT"  , zw3d ) 
     313         ENDIF 
     314         ! 
     315         CALL wrk_dealloc( jpi, jpj, jpk, zw3d ) 
     316      ENDIF 
    283317      ! 
    284318      CALL wrk_dealloc( jpi, jpj,      ztempbac                  ) 
     
    305339         &                xremikc, xremikn, xremikp 
    306340      INTEGER :: ios                 ! Local integer output status for namelist read 
     341      INTEGER :: ji, jj, jk 
    307342 
    308343      REWIND( numnatp_ref )              ! Namelist nampisrem in reference namelist : Pisces remineralization 
     
    334369      ENDIF 
    335370      ! 
    336       denitr  (:,:,:) = 0._wp 
     371!$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
     372      DO jk = 1, jpk 
     373         DO jj = 1, jpj 
     374            DO ji = 1, jpi 
     375               denitr  (ji,jj,jk) = 0._wp 
     376            END DO 
     377         END DO 
     378      END DO 
    337379      ! 
    338380   END SUBROUTINE p4z_rem_init 
Note: See TracChangeset for help on using the changeset viewer.