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 7508 for branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/TOP_SRC/PISCES – NEMO

Ignore:
Timestamp:
2016-12-19T13:15:59+01:00 (7 years ago)
Author:
mocavero
Message:

changes on code duplication and workshare construct

Location:
branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zbio.F90

    r7037 r7508  
    6363 
    6464!$OMP PARALLEL 
    65 !$OMP WORKSHARE 
    66       xdiss(:,:,:) = 1. 
    67 !$OMP END WORKSHARE 
     65!$OMP DO schedule(static) private(jk,jj,ji) 
     66      DO jk = 1, jpk 
     67         DO jj = 1, jpj 
     68            DO ji = 1, jpi 
     69               xdiss(ji,jj,jk) = 1. 
     70            END DO  
     71         END DO 
     72      END DO 
    6873!!gm the use of nmld should be better here? 
    6974!$OMP DO schedule(static) private(jk,jj,ji) 
  • branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zfechem.F90

    r7037 r7508  
    8383      CALL wrk_alloc( jpi,jpj,jpk,   zFe3, zFeL1, zTL1, ztotlig ) 
    8484 
     85!$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
     86      DO jk = 1, jpk 
     87         DO jj = 1, jpj 
     88            DO ji = 1, jpi 
     89               zFe3 (ji,jj,jk) = 0. 
     90               zFeL1(ji,jj,jk) = 0. 
     91               zTL1 (ji,jj,jk) = 0. 
     92            END DO 
     93         END DO 
     94      END DO 
    8595      ! Total ligand concentration : Ligands can be chosen to be constant or variable 
    8696      ! Parameterization from Tagliabue and Voelker (2011) 
     
    91101            DO jj = 1, jpj 
    92102               DO ji = 1, jpi 
    93                   zFe3 (ji,jj,jk) = 0. 
    94                   zFeL1(ji,jj,jk) = 0. 
    95                   zTL1 (ji,jj,jk) = 0. 
    96103                  ztotlig(ji,jj,jk) =  0.09 * trb(ji,jj,jk,jpdoc) * 1E6 + ligand * 1E9 
    97104                  ztotlig(ji,jj,jk) =  MIN( ztotlig(ji,jj,jk), 10. ) 
     
    100107         END DO 
    101108      ELSE 
    102 !$OMP PARALLEL WORKSHARE 
    103          ztotlig(:,:,:) = ligand * 1E9 
    104          zFe3 (:,:,:) = 0. 
    105          zFeL1(:,:,:) = 0. 
    106          zTL1 (:,:,:) = 0. 
    107 !$OMP END PARALLEL WORKSHARE 
     109!$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
     110         DO jk = 1, jpk 
     111            DO jj = 1, jpj 
     112               DO ji = 1, jpi 
     113                  ztotlig(ji,jj,jk) = ligand * 1E9 
     114               END DO 
     115            END DO 
     116         END DO 
    108117      ENDIF 
    109118 
     
    116125         CALL wrk_alloc( jpi,jpj,jpk,   zFe2, zFeL2, zTL2, zFeP ) 
    117126!$OMP PARALLEL  
    118 !$OMP WORKSHARE 
    119          zFe2 (:,:,:) = 0. 
    120          zFeL2(:,:,:) = 0. 
    121          zTL2 (:,:,:) = 0. 
    122          zFeP (:,:,:) = 0. 
    123 !$OMP END WORKSHARE 
     127!$OMP DO schedule(static) private(jk,jj,ji) 
     128         DO jk = 1, jpk 
     129            DO jj = 1, jpj 
     130               DO ji = 1, jpi 
     131                  zFe2 (ji,jj,jk) = 0. 
     132                  zFeL2(ji,jj,jk) = 0. 
     133                  zTL2 (ji,jj,jk) = 0. 
     134                  zFeP (ji,jj,jk) = 0. 
     135               END DO 
     136            END DO 
     137         END DO 
    124138!$OMP DO schedule(static) private(jk,jj,ji,ztligand,zionic,zph,zoxy,zkox,zkph2,zkph1,ztfe,za,zb,zc,zkappa1,zkappa2,za2,za1,za0,zp,zq,zp3,zq2,zd,zr,zphi,zxs,zfff,zfunc) 
    125139         DO jk = 1, jpkm1 
  • branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zint.F90

    r7037 r7508  
    7171      ! 
    7272      IF( nday_year == nyear_len(1) ) THEN 
    73 !$OMP WORKSHARE 
    74          xksi   (:,:) = xksimax(:,:) 
    75          xksimax(:,:) = 0._wp 
    76 !$OMP END WORKSHARE NOWAIT 
     73!$OMP DO schedule(static) private(jj,ji) 
     74         DO jj = 1, jpj 
     75            DO ji = 1, jpi 
     76               xksi   (ji,jj) = xksimax(ji,jj) 
     77               xksimax(ji,jj) = 0._wp 
     78            END DO 
     79         END DO 
    7780      ENDIF 
    7881!$OMP END PARALLEL 
  • branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zlys.F90

    r7037 r7508  
    7474 
    7575!$OMP PARALLEL 
    76 !$OMP WORKSHARE 
    77       zco3    (:,:,:) = 0. 
    78       zcaldiss(:,:,:) = 0. 
    79 !$OMP END WORKSHARE 
     76!$OMP DO schedule(static) private(jk, jj, ji) 
     77       DO jk = 1, jpk 
     78          DO jj = 1, jpj 
     79             DO ji = 1, jpi 
     80                zco3    (ji,jj,jk) = 0. 
     81                zcaldiss(ji,jj,jk) = 0. 
     82             END DO 
     83          END DO 
     84      END DO 
    8085      !     ------------------------------------------- 
    8186      !     COMPUTE [CO3--] and [H+] CONCENTRATIONS 
  • branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmeso.F90

    r7037 r7508  
    8989      IF( lk_iomput ) THEN 
    9090         CALL wrk_alloc( jpi, jpj, jpk, zgrazing ) 
    91 !$OMP PARALLEL WORKSHARE 
    92          zgrazing(:,:,:) = 0._wp 
    93 !$OMP END PARALLEL WORKSHARE 
     91!$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
     92         DO jk = 1, jpk 
     93            DO jj = 1, jpj 
     94               DO ji = 1, jpi 
     95                  zgrazing(ji,jj,jk) = 0._wp 
     96               END DO 
     97            END DO 
     98         END DO 
    9499      ENDIF 
    95100 
     
    252257         CALL wrk_alloc( jpi, jpj, jpk, zw3d ) 
    253258         IF( iom_use( "GRAZ2" ) ) THEN 
    254 !$OMP PARALLEL WORKSHARE 
    255             zw3d(:,:,:) = zgrazing(:,:,:) * 1.e+3 * rfact2r * tmask(:,:,:)  !   Total grazing of phyto by zooplankton 
    256 !$OMP END PARALLEL WORKSHARE 
     259!$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
     260         DO jk = 1, jpk 
     261            DO jj = 1, jpj 
     262               DO ji = 1, jpi 
     263                  zw3d(ji,jj,jk) = zgrazing(ji,jj,jk) * 1.e+3 * rfact2r * tmask(ji,jj,jk)  !   Total grazing of phyto by zooplankton 
     264            END DO 
     265         END DO 
     266      END DO 
    257267            CALL iom_put( "GRAZ2", zw3d ) 
    258268         ENDIF 
    259269         IF( iom_use( "PCAL" ) ) THEN 
    260 !$OMP PARALLEL WORKSHARE 
    261             zw3d(:,:,:) = prodcal(:,:,:) * 1.e+3 * rfact2r * tmask(:,:,:)   !  Calcite production 
    262 !$OMP END PARALLEL WORKSHARE 
     270!$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
     271         DO jk = 1, jpk 
     272            DO jj = 1, jpj 
     273               DO ji = 1, jpi 
     274                  zw3d(ji,jj,jk) = prodcal(ji,jj,jk) * 1.e+3 * rfact2r * tmask(ji,jj,jk)   !  Calcite production 
     275            END DO 
     276         END DO 
     277      END DO 
    263278            CALL iom_put( "PCAL", zw3d )   
    264279         ENDIF 
  • branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmicro.F90

    r7037 r7508  
    192192         CALL wrk_alloc( jpi, jpj, jpk, zw3d ) 
    193193         IF( iom_use( "GRAZ1" ) ) THEN 
    194 !$OMP PARALLEL WORKSHARE 
    195             zw3d(:,:,:) = zgrazing(:,:,:) * 1.e+3 * rfact2r * tmask(:,:,:)  !  Total grazing of phyto by zooplankton 
    196 !$OMP END PARALLEL WORKSHARE 
     194!$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
     195            DO jk = 1, jpk 
     196               DO jj = 1, jpj 
     197                  DO ji = 1, jpi 
     198                     zw3d(ji,jj,jk) = zgrazing(ji,jj,jk) * 1.e+3 * rfact2r * tmask(ji,jj,jk)  !  Total grazing of phyto by zooplankton 
     199                  END DO 
     200               END DO 
     201            END DO 
    197202            CALL iom_put( "GRAZ1", zw3d ) 
    198203         ENDIF 
  • branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmort.F90

    r7037 r7508  
    8080      ! 
    8181!$OMP PARALLEL 
    82 !$OMP WORKSHARE 
    83       prodcal(:,:,:) = 0.  !: calcite production variable set to zero 
    84 !$OMP END WORKSHARE 
     82!$OMP DO schedule(static) private(jk,jj,ji) 
     83      DO jk = 1, jpk 
     84         DO jj = 1, jpj 
     85            DO ji = 1, jpi 
     86               prodcal(ji,jj,jk) = 0.  !: calcite production variable set to zero 
     87            END DO 
     88         END DO 
     89      END DO 
    8590!$OMP DO schedule(static) private(jk,jj,ji,zcompaph,zstep,zsizerat,zrespp,ztortp,zmortp,zfactfe,zfactch,zprcaca,zfracal) 
    8691      DO jk = 1, jpkm1 
  • branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zopt.F90

    r7037 r7508  
    8989      !     ----------------------------------------------- 
    9090!$OMP PARALLEL 
    91 !$OMP WORKSHARE 
    92       ze1(:,:,:) = 0._wp 
    93       ze2(:,:,:) = 0._wp 
    94       ze3(:,:,:) = 0._wp 
    95 !$OMP END WORKSHARE NOWAIT 
     91!$OMP DO schedule(static) private(jk,jj,ji) 
     92            DO jk = 1, jpk 
     93               DO jj = 1, jpj 
     94                  DO ji = 1, jpi 
     95                     ze1(ji,jj,jk) = 0._wp 
     96                     ze2(ji,jj,jk) = 0._wp 
     97                     ze3(ji,jj,jk) = 0._wp 
     98                  END DO 
     99               END DO 
     100            END DO 
     101!$OMP END DO NOWAIT 
    96102      !                                        !* attenuation coef. function of Chlorophyll and wavelength (Red-Green-Blue) 
    97103!$OMP DO schedule(static) private(jk,jj,ji,zchl,irgb) 
     
    115121      IF( l_trcdm2dc ) THEN                     !  diurnal cycle 
    116122         ! 1% of qsr to compute euphotic layer 
    117 !$OMP PARALLEL WORKSHARE 
    118          zqsr100(:,:) = 0.01 * qsr_mean(:,:)     !  daily mean qsr 
    119 !$OMP END PARALLEL WORKSHARE 
     123!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     124         DO jj = 1, jpj 
     125            DO ji = 1, jpi 
     126               zqsr100(ji,jj) = 0.01 * qsr_mean(ji,jj)     !  daily mean qsr 
     127            END DO 
     128         END DO 
    120129         ! 
    121130         CALL p4z_opt_par( kt, qsr_mean, ze1, ze2, ze3 )  
     
    137146      ELSE 
    138147         ! 1% of qsr to compute euphotic layer 
    139 !$OMP PARALLEL WORKSHARE 
    140          zqsr100(:,:) = 0.01 * qsr(:,:) 
    141 !$OMP END PARALLEL WORKSHARE 
     148!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     149         DO jj = 1, jpj 
     150            DO ji = 1, jpi 
     151               zqsr100(ji,jj) = 0.01 * qsr(ji,jj) 
     152            END DO 
     153         END DO 
    142154         ! 
    143155         CALL p4z_opt_par( kt, qsr, ze1, ze2, ze3 )  
     
    150162            ediat(:,:,jk) =  1.6 * ze1(:,:,jk) + 0.69 * ze2(:,:,jk) + 0.7 * ze3(:,:,jk) 
    151163         END DO 
    152 !$OMP WORKSHARE 
    153          etot_ndcy(:,:,:) =  etot(:,:,:)  
    154 !$OMP END WORKSHARE NOWAIT 
    155 !$OMP END PARALLEL 
    156       ENDIF 
    157  
     164!$OMP DO schedule(static) private(jk,jj,ji) 
     165         DO jk = 1, jpk 
     166            DO jj = 1, jpj 
     167               DO ji = 1, jpi 
     168                  etot_ndcy(ji,jj,jk) =  etot(ji,jj,jk)  
     169               END DO 
     170            END DO 
     171         END DO 
     172!$OMP END PARALLEL 
     173      ENDIF 
    158174 
    159175      IF( ln_qsr_bio ) THEN                    !* heat flux accros w-level (used in the dynamics) 
     
    162178         ! 
    163179!$OMP PARALLEL  
    164 !$OMP WORKSHARE 
    165          etot3(:,:,1) =  qsr(:,:) * tmask(:,:,1) 
    166 !$OMP END WORKSHARE 
     180!$OMP DO schedule(static) private(jj,ji) 
     181         DO jj = 1, jpj 
     182            DO ji = 1, jpi 
     183               etot3(ji,jj,1) =  qsr(ji,jj) * tmask(ji,jj,1) 
     184            END DO 
     185         END DO 
    167186!$OMP DO schedule(static) private(jk) 
    168187         DO jk = 2, nksrp + 1 
    169188            etot3(:,:,jk) =  ( ze0(:,:,jk) + ze1(:,:,jk) + ze2(:,:,jk) + ze3(:,:,jk) ) * tmask(:,:,jk) 
    170189         END DO 
    171 !$OMP END DO NOWAIT 
    172190!$OMP END PARALLEL 
    173191         !                                     !  ------------------------ 
     
    175193      !                                        !* Euphotic depth and level 
    176194!$OMP PARALLEL  
    177 !$OMP WORKSHARE 
    178       neln(:,:) = 1                            !  ------------------------ 
    179       heup(:,:) = 300. 
    180 !$OMP END WORKSHARE 
     195!$OMP DO schedule(static) private(jj,ji) 
     196      DO jj = 1, jpj 
     197         DO ji = 1, jpi 
     198            neln(ji,jj) = 1                            !  ------------------------ 
     199            heup(ji,jj) = 300. 
     200         END DO 
     201      END DO 
    181202 
    182203      DO jk = 2, nksrp 
     
    193214      END DO 
    194215      ! 
    195 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
     216!$OMP DO schedule(static) private(jj,ji) 
    196217      DO jj = 1, jpj 
    197218         DO ji = 1, jpi 
     
    200221      END DO 
    201222      !                                        !* mean light over the mixed layer 
    202 !$OMP WORKSHARE 
    203       zdepmoy(:,:)   = 0.e0                    !  ------------------------------- 
    204       zetmp1 (:,:)   = 0.e0 
    205       zetmp2 (:,:)   = 0.e0 
    206       zetmp3 (:,:)   = 0.e0 
    207       zetmp4 (:,:)   = 0.e0 
    208 !$OMP END WORKSHARE 
     223!$OMP DO schedule(static) private(jj,ji) 
     224      DO jj = 1, jpj 
     225         DO ji = 1, jpi 
     226            zdepmoy(ji,jj)   = 0.e0                    !  ------------------------------- 
     227            zetmp1 (ji,jj)   = 0.e0 
     228            zetmp2 (ji,jj)   = 0.e0 
     229            zetmp3 (ji,jj)   = 0.e0 
     230            zetmp4 (ji,jj)   = 0.e0 
     231        END DO 
     232      END DO 
    209233 
    210234      DO jk = 1, nksrp 
     
    224248      END DO 
    225249      ! 
    226 !$OMP WORKSHARE 
    227       emoy(:,:,:) = etot(:,:,:)       ! remineralisation 
    228       zpar(:,:,:) = etot_ndcy(:,:,:)  ! diagnostic : PAR with no diurnal cycle  
    229 !$OMP END WORKSHARE 
     250!$OMP DO schedule(static) private(jk,jj,ji) 
     251            DO jk = 1, jpk 
     252               DO jj = 1, jpj 
     253                  DO ji = 1, jpi 
     254      emoy(ji,jj,jk) = etot(ji,jj,jk)       ! remineralisation 
     255      zpar(ji,jj,jk) = etot_ndcy(ji,jj,jk)  ! diagnostic : PAR with no diurnal cycle  
     256            END DO 
     257         END DO 
     258      END DO 
    230259      ! 
    231260!$OMP DO schedule(static) private(jk,jj,ji,z1_dep) 
     
    254283      ELSE 
    255284         IF( ln_diatrc ) THEN        ! save output diagnostics 
    256 !$OMP PARALLEL WORKSHARE 
    257             trc2d(:,:,  jp_pcs0_2d + 10) = heup(:,:  ) * tmask(:,:,1) 
    258             trc3d(:,:,:,jp_pcs0_3d + 3)  = etot(:,:,:) * tmask(:,:,:) 
    259 !$OMP END PARALLEL WORKSHARE 
     285!$OMP PARALLEL 
     286!$OMP DO schedule(static) private(jj,ji) 
     287            DO jj = 1, jpj 
     288               DO ji = 1, jpi 
     289                  trc2d(ji,jj,  jp_pcs0_2d + 10) = heup(ji,jj  ) * tmask(ji,jj,1) 
     290               END DO 
     291            END DO 
     292!$OMP END DO NOWAIT 
     293!$OMP DO schedule(static) private(jk,jj,ji) 
     294            DO jk = 1, jpk 
     295               DO jj = 1, jpj 
     296                  DO ji = 1, jpi 
     297                     trc3d(ji,jj,jk,jp_pcs0_3d + 3)  = etot(ji,jj,jk) * tmask(ji,jj,jk) 
     298                  END DO 
     299               END DO 
     300            END DO 
     301!$OMP END PARALLEL 
    260302         ENDIF 
    261303      ENDIF 
     
    288330      !  Real shortwave 
    289331      IF( ln_varpar ) THEN   
    290 !$OMP PARALLEL WORKSHARE 
    291           zqsr(:,:) = par_varsw(:,:) * pqsr(:,:) 
    292 !$OMP END PARALLEL WORKSHARE 
     332!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     333         DO jj = 1, jpj 
     334            DO ji = 1, jpi 
     335               zqsr(ji,jj) = par_varsw(ji,jj) * pqsr(ji,jj) 
     336            END DO 
     337         END DO 
    293338      ELSE                  
    294 !$OMP PARALLEL WORKSHARE 
    295           zqsr(:,:) = xparsw         * pqsr(:,:) 
    296 !$OMP END PARALLEL WORKSHARE 
     339!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     340         DO jj = 1, jpj 
     341            DO ji = 1, jpi 
     342               zqsr(ji,jj) = xparsw         * pqsr(ji,jj) 
     343            END DO 
     344         END DO 
    297345      ENDIF 
    298346      ! 
     
    300348         ! 
    301349!$OMP PARALLEL 
    302 !$OMP WORKSHARE 
    303          pe0(:,:,1) = pqsr(:,:) - 3. * zqsr(:,:)    !   ( 1 - 3 * alpha ) * q 
    304          pe1(:,:,1) = zqsr(:,:)          
    305          pe2(:,:,1) = zqsr(:,:) 
    306          pe3(:,:,1) = zqsr(:,:) 
    307 !$OMP END WORKSHARE 
     350!$OMP DO schedule(static) private(jj,ji) 
     351         DO jj = 1, jpj 
     352            DO ji = 1, jpi 
     353               pe0(ji,jj,1) = pqsr(ji,jj) - 3. * zqsr(ji,jj)    !   ( 1 - 3 * alpha ) * q 
     354               pe1(ji,jj,1) = zqsr(ji,jj)          
     355               pe2(ji,jj,1) = zqsr(ji,jj) 
     356               pe3(ji,jj,1) = zqsr(ji,jj) 
     357            END DO 
     358         END DO 
    308359         ! 
    309360         DO jk = 2, nksrp + 1 
     
    379430         IF( kt == nit000 .OR. ( kt /= nit000 .AND. ntimes_par > 1 ) ) THEN 
    380431            CALL fld_read( kt, 1, sf_par ) 
    381 !$OMP PARALLEL WORKSHARE 
    382             par_varsw(:,:) = ( sf_par(1)%fnow(:,:,1) ) / 3.0 
    383 !$OMP END PARALLEL WORKSHARE 
     432!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     433            DO jj = 1, jpj 
     434               DO ji = 1, jpi 
     435                  par_varsw(ji,jj) = ( sf_par(1)%fnow(ji,jj,1) ) / 3.0 
     436               END DO 
     437            END DO 
    384438         ENDIF 
    385439      ENDIF 
     
    402456      INTEGER :: ierr 
    403457      INTEGER :: ios                 ! Local integer output status for namelist read 
     458      INTEGER    ::   ji, jj, jk     ! dummy loop indices 
    404459      REAL(wp), DIMENSION(nbtimes) :: zsteps                 ! times records 
    405460      ! 
     
    457512      IF(lwp) WRITE(numout,*) '        level of light extinction = ', nksrp, ' ref depth = ', gdepw_1d(nksrp+1), ' m' 
    458513      ! 
    459 !$OMP PARALLEL WORKSHARE 
    460                          ekr      (:,:,:) = 0._wp 
    461                          ekb      (:,:,:) = 0._wp 
    462                          ekg      (:,:,:) = 0._wp 
    463                          etot     (:,:,:) = 0._wp 
    464                          etot_ndcy(:,:,:) = 0._wp 
    465                          enano    (:,:,:) = 0._wp 
    466                          ediat    (:,:,:) = 0._wp 
    467 !$OMP END PARALLEL WORKSHARE 
     514!$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
     515         DO jk = 1, jpk 
     516            DO jj = 1, jpj 
     517               DO ji = 1, jpi 
     518                  ekr      (ji,jj,jk) = 0._wp 
     519                  ekb      (ji,jj,jk) = 0._wp 
     520                  ekg      (ji,jj,jk) = 0._wp 
     521                  etot     (ji,jj,jk) = 0._wp 
     522                  etot_ndcy(ji,jj,jk) = 0._wp 
     523                  enano    (ji,jj,jk) = 0._wp 
     524                  ediat    (ji,jj,jk) = 0._wp 
     525               END DO 
     526            END DO 
     527         END DO 
    468528      IF( ln_qsr_bio ) THEN 
    469 !$OMP PARALLEL WORKSHARE 
    470                          etot3    (:,:,:) = 0._wp 
    471 !$OMP END PARALLEL WORKSHARE 
     529!$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
     530         DO jk = 1, jpk 
     531            DO jj = 1, jpj 
     532               DO ji = 1, jpi 
     533                  etot3    (ji,jj,jk) = 0._wp 
     534               END DO 
     535            END DO 
     536         END DO 
    472537      END IF 
    473538      !  
  • branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zprod.F90

    r7037 r7508  
    9494      CALL wrk_alloc( jpi, jpj, jpk, zprorca, zprorcad, zprofed, zprofen, zprochln, zprochld, zpronew, zpronewd ) 
    9595      ! 
    96 !$OMP PARALLEL WORKSHARE 
    97       zprorca (:,:,:) = 0._wp 
    98       zprorcad(:,:,:) = 0._wp 
    99       zprofed (:,:,:) = 0._wp 
    100       zprofen (:,:,:) = 0._wp 
    101       zprochln(:,:,:) = 0._wp 
    102       zprochld(:,:,:) = 0._wp 
    103       zpronew (:,:,:) = 0._wp 
    104       zpronewd(:,:,:) = 0._wp 
    105       zprdia  (:,:,:) = 0._wp 
    106       zprbio  (:,:,:) = 0._wp 
    107       zprdch  (:,:,:) = 0._wp 
    108       zprnch  (:,:,:) = 0._wp 
    109       zysopt  (:,:,:) = 0._wp 
     96!$OMP PARALLEL  
     97!$OMP DO schedule(static) private(jk,jj,ji) 
     98      DO jk = 1, jpk 
     99         DO jj = 1, jpj 
     100            DO ji = 1, jpi 
     101               zprorca (ji,jj,jk) = 0._wp 
     102               zprorcad(ji,jj,jk) = 0._wp 
     103               zprofed (ji,jj,jk) = 0._wp 
     104               zprofen (ji,jj,jk) = 0._wp 
     105               zprochln(ji,jj,jk) = 0._wp 
     106               zprochld(ji,jj,jk) = 0._wp 
     107               zpronew (ji,jj,jk) = 0._wp 
     108               zpronewd(ji,jj,jk) = 0._wp 
     109               zprdia  (ji,jj,jk) = 0._wp 
     110               zprbio  (ji,jj,jk) = 0._wp 
     111               zprdch  (ji,jj,jk) = 0._wp 
     112               zprnch  (ji,jj,jk) = 0._wp 
     113               zysopt  (ji,jj,jk) = 0._wp 
    110114 
    111115      ! Computation of the optimal production 
    112       prmax(:,:,:) = 0.6_wp * r1_rday * tgfunc(:,:,:)  
     116              prmax(ji,jj,jk) = 0.6_wp * r1_rday * tgfunc(ji,jj,jk) 
     117            END DO 
     118         END DO 
     119      END DO  
    113120 
    114121      ! day length in hours 
    115       zstrn(:,:) = 0. 
    116 !$OMP END PARALLEL WORKSHARE 
     122!$OMP DO schedule(static) private(jj,ji) 
     123      DO jj = 1, jpj 
     124         DO ji = 1, jpi 
     125            zstrn(ji,jj) = 0. 
     126         END DO 
     127      END DO  
     128!$OMP END PARALLEL 
    117129 
    118130      IF( lk_degrad ) THEN 
    119 !$OMP PARALLEL WORKSHARE 
    120         prmax(:,:,:) = prmax(:,:,:) * facvol(:,:,:)  
    121 !$OMP END PARALLEL WORKSHARE 
     131!$OMP DO schedule(static) private(jk,jj,ji) 
     132      DO jk = 1, jpk 
     133         DO jj = 1, jpj 
     134            DO ji = 1, jpi 
     135               prmax(ji,jj,jk) = prmax(ji,jj,jk) * facvol(ji,jj,jk)  
     136            END DO 
     137         END DO 
     138      END DO  
    122139      END IF 
    123140 
     
    153170 
    154171      ! Maximum light intensity 
    155 !$OMP WORKSHARE 
    156       WHERE( zstrn(:,:) < 1.e0 ) zstrn(:,:) = 24. 
    157       zstrn(:,:) = 24. / zstrn(:,:) 
    158 !$OMP END WORKSHARE NOWAIT 
     172!$OMP DO schedule(static) private(jj,ji) 
     173      DO jj = 1 ,jpj 
     174         DO ji = 1, jpi 
     175            IF( zstrn(ji,jj) < 1.e0 ) zstrn(ji,jj) = 24. 
     176            zstrn(ji,jj) = 24. / zstrn(ji,jj) 
     177         END DO 
     178      END DO 
    159179!$OMP END PARALLEL 
    160180 
     
    433453          ! 
    434454          IF( iom_use( "PPPHY" ) .OR. iom_use( "PPPHY2" ) )  THEN 
    435 !$OMP PARALLEL WORKSHARE 
    436               zw3d(:,:,:) = zprorca (:,:,:) * zfact * tmask(:,:,:)  ! primary production by nanophyto 
    437 !$OMP END PARALLEL WORKSHARE 
     455!$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
     456            DO jk = 1, jpk 
     457               DO jj = 1, jpj 
     458                  DO ji = 1, jpi 
     459                     zw3d(ji,jj,jk) = zprorca (ji,jj,jk) * zfact * tmask(ji,jj,jk)  ! primary production by nanophyto 
     460                  END DO 
     461               END DO 
     462            END DO 
    438463              CALL iom_put( "PPPHY"  , zw3d ) 
     464!$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
     465            DO jk = 1, jpk 
     466               DO jj = 1, jpj 
     467                  DO ji = 1, jpi 
     468                     zw3d(ji,jj,jk) = zprorcad (ji,jj,jk) * zfact * tmask(ji,jj,jk)  ! primary production by nanophyto 
     469                  END DO 
     470               END DO 
     471            END DO 
    439472              ! 
    440 !$OMP PARALLEL WORKSHARE 
    441               zw3d(:,:,:) = zprorcad(:,:,:) * zfact * tmask(:,:,:)  ! primary production by diatomes 
    442 !$OMP END PARALLEL WORKSHARE 
    443473              CALL iom_put( "PPPHY2"  , zw3d ) 
    444474          ENDIF 
    445475          IF( iom_use( "PPNEWN" ) .OR. iom_use( "PPNEWD" ) )  THEN 
    446 !$OMP PARALLEL WORKSHARE 
    447               zw3d(:,:,:) = zpronew (:,:,:) * zfact * tmask(:,:,:)  ! new primary production by nanophyto 
    448 !$OMP END PARALLEL WORKSHARE 
     476!$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
     477            DO jk = 1, jpk 
     478               DO jj = 1, jpj 
     479                  DO ji = 1, jpi 
     480                     zw3d(ji,jj,jk) = zpronew (ji,jj,jk) * zfact * tmask(ji,jj,jk)  ! new primary production by nanophyto 
     481                  END DO 
     482               END DO 
     483            END DO 
    449484              CALL iom_put( "PPNEWN"  , zw3d ) 
    450485              ! 
    451 !$OMP PARALLEL WORKSHARE 
    452               zw3d(:,:,:) = zpronewd(:,:,:) * zfact * tmask(:,:,:)  ! new primary production by diatomes 
    453 !$OMP END PARALLEL WORKSHARE 
     486!$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
     487            DO jk = 1, jpk 
     488               DO jj = 1, jpj 
     489                  DO ji = 1, jpi 
     490                     zw3d(ji,jj,jk) = zpronewd (ji,jj,jk) * zfact * tmask(ji,jj,jk)  ! new primary production by nanophyto 
     491                  END DO 
     492               END DO 
     493            END DO 
    454494              CALL iom_put( "PPNEWD"  , zw3d ) 
    455495          ENDIF 
    456496          IF( iom_use( "PBSi" ) )  THEN 
    457 !$OMP PARALLEL WORKSHARE 
    458               zw3d(:,:,:) = zprorcad(:,:,:) * zfact * tmask(:,:,:) * zysopt(:,:,:) ! biogenic silica production 
    459 !$OMP END PARALLEL WORKSHARE 
     497!$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
     498            DO jk = 1, jpk 
     499               DO jj = 1, jpj 
     500                  DO ji = 1, jpi 
     501                     zw3d(ji,jj,jk) = zprorcad(ji,jj,jk) * zfact * tmask(ji,jj,jk) * zysopt(ji,jj,jk) ! biogenic silica production 
     502                  END DO 
     503               END DO 
     504            END DO 
    460505              CALL iom_put( "PBSi"  , zw3d ) 
    461506          ENDIF 
    462507          IF( iom_use( "PFeN" ) .OR. iom_use( "PFeD" ) )  THEN 
    463 !$OMP PARALLEL WORKSHARE 
    464               zw3d(:,:,:) = zprofen(:,:,:) * zfact * tmask(:,:,:)  ! biogenic iron production by nanophyto 
    465 !$OMP END PARALLEL WORKSHARE 
     508!$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
     509            DO jk = 1, jpk 
     510               DO jj = 1, jpj 
     511                  DO ji = 1, jpi 
     512                     zw3d(ji,jj,jk) = zprofen(ji,jj,jk) * zfact * tmask(ji,jj,jk)  ! biogenic iron production by nanophyto 
     513                  END DO 
     514               END DO 
     515            END DO 
    466516              CALL iom_put( "PFeN"  , zw3d ) 
    467517              ! 
    468 !$OMP PARALLEL WORKSHARE 
    469               zw3d(:,:,:) = zprofed(:,:,:) * zfact * tmask(:,:,:)  ! biogenic iron production by  diatomes 
    470 !$OMP END PARALLEL WORKSHARE 
     518!$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
     519            DO jk = 1, jpk 
     520               DO jj = 1, jpj 
     521                  DO ji = 1, jpi 
     522                     zw3d(ji,jj,jk) = zprofed(ji,jj,jk) * zfact * tmask(ji,jj,jk)  ! biogenic iron production by nanophyto 
     523                  END DO 
     524               END DO 
     525            END DO 
    471526              CALL iom_put( "PFeD"  , zw3d ) 
    472527          ENDIF 
    473528          IF( iom_use( "Mumax" ) )  THEN 
    474 !$OMP PARALLEL WORKSHARE 
    475               zw3d(:,:,:) = prmax(:,:,:) * tmask(:,:,:)   ! Maximum growth rate 
    476 !$OMP END PARALLEL WORKSHARE 
     529!$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
     530            DO jk = 1, jpk 
     531               DO jj = 1, jpj 
     532                  DO ji = 1, jpi 
     533                     zw3d(ji,jj,jk) = prmax(ji,jj,jk) * tmask(ji,jj,jk)   ! Maximum growth rate 
     534                  END DO 
     535               END DO 
     536            END DO 
    477537              CALL iom_put( "Mumax"  , zw3d ) 
    478538          ENDIF 
    479539          IF( iom_use( "MuN" ) .OR. iom_use( "MuD" ) )  THEN 
    480 !$OMP PARALLEL WORKSHARE 
    481               zw3d(:,:,:) = zprbio(:,:,:) * xlimphy(:,:,:) * tmask(:,:,:)  ! Realized growth rate for nanophyto 
    482 !$OMP END PARALLEL WORKSHARE 
     540!$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
     541            DO jk = 1, jpk 
     542               DO jj = 1, jpj 
     543                  DO ji = 1, jpi 
     544                     zw3d(ji,jj,jk) = zprbio(ji,jj,jk) * xlimphy(ji,jj,jk) * tmask(ji,jj,jk)  ! Realized growth rate for nanophyto 
     545                  END DO 
     546               END DO 
     547            END DO 
    483548              CALL iom_put( "MuN"  , zw3d ) 
    484549              ! 
    485 !$OMP PARALLEL WORKSHARE 
    486               zw3d(:,:,:) =  zprdia(:,:,:) * xlimdia(:,:,:) * tmask(:,:,:)  ! Realized growth rate for diatoms 
    487 !$OMP END PARALLEL WORKSHARE 
     550!$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
     551            DO jk = 1, jpk 
     552               DO jj = 1, jpj 
     553                  DO ji = 1, jpi 
     554                     zw3d(ji,jj,jk) =  zprdia(ji,jj,jk) * xlimdia(ji,jj,jk) * tmask(ji,jj,jk)  ! Realized growth rate for diatoms 
     555                  END DO 
     556               END DO 
     557            END DO 
    488558              CALL iom_put( "MuD"  , zw3d ) 
    489559          ENDIF 
    490560          IF( iom_use( "LNlight" ) .OR. iom_use( "LDlight" ) )  THEN 
    491 !$OMP PARALLEL WORKSHARE 
    492               zw3d(:,:,:) = zprbio (:,:,:) / (prmax(:,:,:) + rtrn) * tmask(:,:,:) ! light limitation term 
    493 !$OMP END PARALLEL WORKSHARE 
     561!$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
     562            DO jk = 1, jpk 
     563               DO jj = 1, jpj 
     564                  DO ji = 1, jpi 
     565                     zw3d(ji,jj,jk) = zprbio (ji,jj,jk) / (prmax(ji,jj,jk) + rtrn) * tmask(ji,jj,jk) ! light limitation term 
     566                  END DO 
     567               END DO 
     568            END DO 
    494569              CALL iom_put( "LNlight"  , zw3d ) 
    495570              ! 
    496 !$OMP PARALLEL WORKSHARE 
    497               zw3d(:,:,:) =  zprdia (:,:,:) / (prmax(:,:,:) + rtrn) * tmask(:,:,:)  ! light limitation term 
    498 !$OMP END PARALLEL WORKSHARE 
     571!$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
     572            DO jk = 1, jpk 
     573               DO jj = 1, jpj 
     574                  DO ji = 1, jpi 
     575                     zw3d(ji,jj,jk) =  zprdia (ji,jj,jk) / (prmax(ji,jj,jk) + rtrn) * tmask(ji,jj,jk)  ! light limitation term 
     576                  END DO 
     577               END DO 
     578            END DO 
    499579              CALL iom_put( "LDlight"  , zw3d ) 
    500580          ENDIF 
    501581          IF( iom_use( "TPP" ) )  THEN 
    502 !$OMP PARALLEL WORKSHARE 
    503               zw3d(:,:,:) = ( zprorca(:,:,:) + zprorcad(:,:,:) ) * zfact * tmask(:,:,:)  ! total primary production 
    504 !$OMP END PARALLEL WORKSHARE 
     582!$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
     583            DO jk = 1, jpk 
     584               DO jj = 1, jpj 
     585                  DO ji = 1, jpi 
     586                     zw3d(ji,jj,jk) = ( zprorca(ji,jj,jk) + zprorcad(ji,jj,jk) ) * zfact * tmask(ji,jj,jk)  ! total primary production 
     587                  END DO 
     588               END DO 
     589            END DO 
    505590              CALL iom_put( "TPP"  , zw3d ) 
    506591          ENDIF 
    507592          IF( iom_use( "TPNEW" ) )  THEN 
    508 !$OMP PARALLEL WORKSHARE 
    509               zw3d(:,:,:) = ( zpronew(:,:,:) + zpronewd(:,:,:) ) * zfact * tmask(:,:,:)  ! total new production 
    510 !$OMP END PARALLEL WORKSHARE 
     593!$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
     594            DO jk = 1, jpk 
     595               DO jj = 1, jpj 
     596                  DO ji = 1, jpi 
     597                     zw3d(ji,jj,jk) = ( zpronew(ji,jj,jk) + zpronewd(ji,jj,jk) ) * zfact * tmask(ji,jj,jk)  ! total new production 
     598                  END DO 
     599               END DO 
     600            END DO 
    511601              CALL iom_put( "TPNEW"  , zw3d ) 
    512602          ENDIF 
    513603          IF( iom_use( "TPBFE" ) )  THEN 
    514 !$OMP PARALLEL WORKSHARE 
    515               zw3d(:,:,:) = ( zprofen(:,:,:) + zprofed(:,:,:) ) * zfact * tmask(:,:,:)  ! total biogenic iron production 
    516 !$OMP END PARALLEL WORKSHARE 
     604!$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
     605            DO jk = 1, jpk 
     606               DO jj = 1, jpj 
     607                  DO ji = 1, jpi 
     608                     zw3d(ji,jj,jk) = ( zprofen(ji,jj,jk) + zprofed(ji,jj,jk) ) * zfact * tmask(ji,jj,jk)  ! total biogenic iron production 
     609                  END DO 
     610               END DO 
     611            END DO 
    517612              CALL iom_put( "TPBFE"  , zw3d ) 
    518613          ENDIF 
    519614          IF( iom_use( "INTPPPHY" ) .OR. iom_use( "INTPPPHY2" ) ) THEN   
    520615!$OMP PARALLEL 
    521 !$OMP WORKSHARE 
    522              zw2d(:,:) = 0. 
    523 !$OMP END WORKSHARE 
     616!$OMP DO schedule(static) private(jj,ji) 
     617             DO jj = 1, jpj 
     618                DO ji =1 ,jpi 
     619                   zw2d(ji,jj) = 0. 
     620                END DO 
     621             END DO 
    524622             DO jk = 1, jpkm1 
    525623!$OMP DO schedule(static) private(jj,ji) 
     
    535633             ! 
    536634!$OMP PARALLEL 
    537 !$OMP WORKSHARE 
    538              zw2d(:,:) = 0. 
    539 !$OMP END WORKSHARE 
     635!$OMP DO schedule(static) private(jj,ji) 
     636             DO jj = 1, jpj 
     637                DO ji =1 ,jpi 
     638                   zw2d(ji,jj) = 0. 
     639                END DO 
     640             END DO 
    540641             DO jk = 1, jpkm1 
    541642!$OMP DO schedule(static) private(jj,ji) 
     
    552653          IF( iom_use( "INTPP" ) ) THEN    
    553654!$OMP PARALLEL 
    554 !$OMP WORKSHARE 
    555              zw2d(:,:) = 0. 
    556 !$OMP END WORKSHARE 
     655!$OMP DO schedule(static) private(jj,ji) 
     656             DO jj = 1, jpj 
     657                DO ji =1 ,jpi 
     658                   zw2d(ji,jj) = 0. 
     659                END DO 
     660             END DO 
    557661             DO jk = 1, jpkm1 
    558662!$OMP DO schedule(static) private(jj,ji) 
     
    569673          IF( iom_use( "INTPNEW" ) ) THEN     
    570674!$OMP PARALLEL 
    571 !$OMP WORKSHARE 
    572              zw2d(:,:) = 0. 
    573 !$OMP END WORKSHARE 
     675!$OMP DO schedule(static) private(jj,ji) 
     676             DO jj = 1, jpj 
     677                DO ji =1 ,jpi 
     678                   zw2d(ji,jj) = 0. 
     679                END DO 
     680             END DO 
    574681             DO jk = 1, jpkm1 
    575682!$OMP DO schedule(static) private(jj,ji) 
     
    586693          IF( iom_use( "INTPBFE" ) ) THEN           !   total biogenic iron production  ( vertically integrated ) 
    587694!$OMP PARALLEL 
    588 !$OMP WORKSHARE 
    589              zw2d(:,:) = 0. 
    590 !$OMP END WORKSHARE 
     695!$OMP DO schedule(static) private(jj,ji) 
     696             DO jj = 1, jpj 
     697                DO ji =1 ,jpi 
     698                   zw2d(ji,jj) = 0. 
     699                END DO 
     700             END DO 
    591701             DO jk = 1, jpkm1 
    592702!$OMP DO schedule(static) private(jj,ji) 
     
    603713          IF( iom_use( "INTPBSI" ) ) THEN           !   total biogenic silica production  ( vertically integrated ) 
    604714!$OMP PARALLEL 
    605 !$OMP WORKSHARE 
    606              zw2d(:,:) = 0. 
    607 !$OMP END WORKSHARE 
     715!$OMP DO schedule(static) private(jj,ji) 
     716             DO jj = 1, jpj 
     717                DO ji =1 ,jpi 
     718                   zw2d(ji,jj) = 0. 
     719                END DO 
     720             END DO 
    608721             DO jk = 1, jpkm1 
    609722!$OMP DO schedule(static) private(jj,ji) 
     
    626739        IF( ln_diatrc ) THEN 
    627740           zfact = 1.e+3 * rfact2r 
    628 !$OMP PARALLEL WORKSHARE 
    629            trc3d(:,:,:,jp_pcs0_3d + 4)  = zprorca (:,:,:) * zfact * tmask(:,:,:) 
    630            trc3d(:,:,:,jp_pcs0_3d + 5)  = zprorcad(:,:,:) * zfact * tmask(:,:,:) 
    631            trc3d(:,:,:,jp_pcs0_3d + 6)  = zpronew (:,:,:) * zfact * tmask(:,:,:) 
    632            trc3d(:,:,:,jp_pcs0_3d + 7)  = zpronewd(:,:,:) * zfact * tmask(:,:,:) 
    633            trc3d(:,:,:,jp_pcs0_3d + 8)  = zprorcad(:,:,:) * zfact * tmask(:,:,:) * zysopt(:,:,:) 
    634            trc3d(:,:,:,jp_pcs0_3d + 9)  = zprofed (:,:,:) * zfact * tmask(:,:,:) 
     741!$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
     742            DO jk = 1, jpk 
     743               DO jj = 1, jpj 
     744                  DO ji = 1, jpi 
     745                     trc3d(ji,jj,jk,jp_pcs0_3d + 4)  = zprorca (ji,jj,jk) * zfact * tmask(ji,jj,jk) 
     746                     trc3d(ji,jj,jk,jp_pcs0_3d + 5)  = zprorcad(ji,jj,jk) * zfact * tmask(ji,jj,jk) 
     747                     trc3d(ji,jj,jk,jp_pcs0_3d + 6)  = zpronew (ji,jj,jk) * zfact * tmask(ji,jj,jk) 
     748                     trc3d(ji,jj,jk,jp_pcs0_3d + 7)  = zpronewd(ji,jj,jk) * zfact * tmask(ji,jj,jk) 
     749                     trc3d(ji,jj,jk,jp_pcs0_3d + 8)  = zprorcad(ji,jj,jk) * zfact * tmask(ji,jj,jk) * zysopt(ji,jj,jk) 
     750                     trc3d(ji,jj,jk,jp_pcs0_3d + 9)  = zprofed (ji,jj,jk) * zfact * tmask(ji,jj,jk) 
    635751#  if ! defined key_kriest 
    636            trc3d(:,:,:,jp_pcs0_3d + 10) = zprofen (:,:,:) * zfact * tmask(:,:,:) 
     752                     trc3d(ji,jj,jk,jp_pcs0_3d + 10) = zprofen (ji,jj,jk) * zfact * tmask(ji,jj,jk) 
    637753#  endif 
    638 !$OMP END PARALLEL WORKSHARE 
     754                  END DO 
     755               END DO 
     756            END DO 
    639757        ENDIF 
    640758     ENDIF 
  • branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zrem.F90

    r7037 r7508  
    9090      ! Initialisation of temprary arrys 
    9191!$OMP PARALLEL 
    92 !$OMP WORKSHARE 
    93       zdepprod(:,:,:) = 1._wp 
    94       ztempbac(:,:)   = 0._wp 
    95 !$OMP END WORKSHARE 
    96  
     92!$OMP DO schedule(static) private(jk,jj,ji) 
     93      DO jk = 1, jpk 
     94         DO jj = 1, jpj 
     95            DO ji = 1, jpi 
     96               zdepprod(ji,jj,jk) = 1._wp 
     97            END DO 
     98         END DO 
     99      END DO 
     100!$OMP DO schedule(static) private(jj,ji) 
     101      DO jj = 1, jpj 
     102         DO ji = 1, jpi 
     103            ztempbac(ji,jj)   = 0._wp 
     104         END DO 
     105      END DO 
    97106      ! Computation of the mean phytoplankton concentration as 
    98107      ! a crude estimate of the bacterial biomass 
     
    332341          ! 
    333342          IF( iom_use( "REMIN" ) )  THEN 
    334 !$OMP PARALLEL WORKSHARE 
    335               zw3d(:,:,:) = zolimi(:,:,:) * tmask(:,:,:) * zfact !  Remineralisation rate 
    336 !$OMP END PARALLEL WORKSHARE 
     343!$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
     344            DO jk = 1, jpk 
     345               DO jj = 1, jpj 
     346                  DO ji = 1, jpi 
     347                     zw3d(ji,jj,jk) = zolimi(ji,jj,jk) * tmask(ji,jj,jk) * zfact !  Remineralisation rate 
     348                  END DO 
     349               END DO 
     350            END DO 
    337351              CALL iom_put( "REMIN"  , zw3d ) 
    338352          ENDIF 
    339353          IF( iom_use( "DENIT" ) )  THEN 
    340 !$OMP PARALLEL WORKSHARE 
    341               zw3d(:,:,:) = denitr(:,:,:) * rdenit * rno3 * tmask(:,:,:) * zfact ! Denitrification 
    342 !$OMP END PARALLEL WORKSHARE 
     354!$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
     355            DO jk = 1, jpk 
     356               DO jj = 1, jpj 
     357                  DO ji = 1, jpi 
     358                     zw3d(ji,jj,jk) = denitr(ji,jj,jk) * rdenit * rno3 * tmask(ji,jj,jk) * zfact ! Denitrification 
     359                  END DO 
     360               END DO 
     361            END DO 
    343362              CALL iom_put( "DENIT"  , zw3d ) 
    344363          ENDIF 
     
    376395      &                   oxymin 
    377396      INTEGER :: ios                 ! Local integer output status for namelist read 
     397      INTEGER    ::   ji, jj, jk     ! dummy loop indices 
    378398 
    379399      REWIND( numnatp_ref )              ! Namelist nampisrem in reference namelist : Pisces remineralization 
     
    399419      ENDIF 
    400420      ! 
    401 !$OMP PARALLEL WORKSHARE 
    402       nitrfac (:,:,:) = 0._wp 
    403       denitr  (:,:,:) = 0._wp 
    404       denitnh4(:,:,:) = 0._wp 
    405 !$OMP END PARALLEL WORKSHARE 
     421!$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
     422      DO jk = 1, jpk 
     423         DO jj = 1, jpj 
     424            DO ji = 1, jpi 
     425               nitrfac (ji,jj,jk) = 0._wp 
     426               denitr  (ji,jj,jk) = 0._wp 
     427               denitnh4(ji,jj,jk) = 0._wp 
     428            END DO 
     429         END DO 
     430      END DO 
    406431      ! 
    407432   END SUBROUTINE p4z_rem_init 
  • branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsbc.F90

    r7037 r7508  
    278278      ! online configuration : computed in sbcrnf 
    279279      IF( lk_offline ) THEN 
    280 !$OMP PARALLEL WORKSHARE 
    281         nk_rnf(:,:) = 1 
    282         h_rnf (:,:) = gdept_n(:,:,1) 
    283 !$OMP END PARALLEL WORKSHARE 
     280!$OMP PARALLEL DO schedule(static) private(jj, ji) 
     281         DO jj = 1, jpj 
     282            DO ji = 1, jpi 
     283               nk_rnf(ji,jj) = 1 
     284               h_rnf (ji,jj) = gdept_n(ji,jj,1) 
     285            END DO 
     286         END DO 
    284287      ENDIF 
    285288 
     
    482485         ! Coastal supply of iron 
    483486         ! ------------------------- 
    484 !$OMP WORKSHARE 
    485          ironsed(:,:,jpk) = 0._wp 
    486 !$OMP END WORKSHARE 
     487!$OMP PARALLEL DO schedule(static) private(jj, ji) 
     488         DO jj = 1, jpj 
     489            DO ji = 1, jpi 
     490               ironsed(ji,jj,jpk) = 0._wp 
     491            END DO 
     492         END DO 
    487493!$OMP DO schedule(static) private(jk) 
    488494         DO jk = 1, jpkm1 
     
    507513         CALL iom_close( numhydro ) 
    508514         ! 
    509 !$OMP PARALLEL WORKSHARE 
    510          hydrofe(:,:,:) = ( hydrofe(:,:,:) * hratio ) / ( cvol(:,:,:) * ryyss + rtrn ) / 1000._wp 
    511 !$OMP END PARALLEL WORKSHARE 
     515!$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
     516         DO jk = 1, jpk 
     517            DO jj = 1, jpj 
     518               DO ji = 1, jpi 
     519                  hydrofe(ji,jj,jk) = ( hydrofe(ji,jj,jk) * hratio ) / ( cvol(ji,jj,jk) * ryyss + rtrn ) / 1000._wp 
     520               END DO 
     521            END DO 
     522         END DO 
    512523         ! 
    513524      ENDIF 
  • branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsed.F90

    r7037 r7508  
    8282      CALL wrk_alloc( jpi, jpj, jpk, zsoufer ) 
    8383 
    84 !$OMP PARALLEL WORKSHARE 
    85       zdenit2d(:,:) = 0.e0 
    86       zbureff (:,:) = 0.e0 
    87       zwork1  (:,:) = 0.e0 
    88       zwork2  (:,:) = 0.e0 
    89       zwork3  (:,:) = 0.e0 
    90 !$OMP END PARALLEL WORKSHARE 
     84!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     85      DO jj = 1, jpj 
     86         DO ji = 1, jpi 
     87            zdenit2d(ji,jj) = 0.e0 
     88            zbureff (ji,jj) = 0.e0 
     89            zwork1  (ji,jj) = 0.e0 
     90            zwork2  (ji,jj) = 0.e0 
     91            zwork3  (ji,jj) = 0.e0 
     92         END DO 
     93      END DO 
    9194 
    9295      ! Iron input/uptake due to sea ice : Crude parameterization based on Lancelot et al. 
     
    107110         END DO 
    108111         ! 
    109 !$OMP WORKSHARE 
    110          tra(:,:,1,jpfer) = tra(:,:,1,jpfer) + zironice(:,:)  
    111 !$OMP END WORKSHARE NOWAIT 
     112!$OMP DO schedule(static) private(jj,ji) 
     113      DO jj = 1, jpj 
     114         DO ji = 1, jpi 
     115            tra(ji,jj,1,jpfer) = tra(ji,jj,1,jpfer) + zironice(ji,jj)  
     116         END DO 
     117      END DO 
    112118!$OMP END PARALLEL 
    113119         !  
     
    127133         !                                              ! Iron and Si deposition at the surface 
    128134         IF( ln_solub ) THEN 
    129 !$OMP PARALLEL WORKSHARE  
    130             zirondep(:,:,1) = solub(:,:) * dust(:,:) * mfrac * rfact2 / e3t_n(:,:,1) / 55.85 + 3.e-10 * r1_ryyss 
    131 !$OMP END PARALLEL WORKSHARE  
     135!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     136           DO jj = 1, jpj 
     137              DO ji = 1, jpi 
     138                 zirondep(ji,jj,1) = solub(ji,jj) * dust(ji,jj) * mfrac * rfact2 / e3t_n(ji,jj,1) / 55.85 + 3.e-10 * r1_ryyss 
     139              END DO 
     140           END DO 
    132141         ELSE 
    133 !$OMP PARALLEL WORKSHARE  
    134             zirondep(:,:,1) = dustsolub  * dust(:,:) * mfrac * rfact2 / e3t_n(:,:,1) / 55.85 + 3.e-10 * r1_ryyss 
    135 !$OMP END PARALLEL WORKSHARE  
     142!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     143           DO jj = 1, jpj 
     144              DO ji = 1, jpi 
     145                 zirondep(ji,jj,1) = dustsolub  * dust(ji,jj) * mfrac * rfact2 / e3t_n(ji,jj,1) / 55.85 + 3.e-10 * r1_ryyss 
     146              END DO 
     147           END DO 
    136148         ENDIF 
    137 !$OMP PARALLEL WORKSHARE  
    138          zsidep(:,:) = 8.8 * 0.075 * dust(:,:) * mfrac * rfact2 / e3t_n(:,:,1) / 28.1 
    139          zpdep (:,:) = 0.1 * 0.021 * dust(:,:) * mfrac * rfact2 / e3t_n(:,:,1) / 31. / po4r 
    140 !$OMP END PARALLEL WORKSHARE  
     149!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     150         DO jj = 1, jpj 
     151            DO ji = 1, jpi 
     152               zsidep(ji,jj) = 8.8 * 0.075 * dust(ji,jj) * mfrac * rfact2 / e3t_n(ji,jj,1) / 28.1 
     153               zpdep (ji,jj) = 0.1 * 0.021 * dust(ji,jj) * mfrac * rfact2 / e3t_n(ji,jj,1) / 31. / po4r 
     154            END DO 
     155         END DO 
    141156         !                                              ! Iron solubilization of particles in the water column 
    142157         !                                              ! dust in kg/m2/s ---> 1/55.85 to put in mol/Fe ;  wdust in m/j 
    143158         zwdust = 0.03 * rday / ( wdust * 55.85 ) / ( 270. * rday ) 
     159!$OMP PARALLEL  
    144160!$OMP DO schedule(static) private(jk)  
    145161         DO jk = 2, jpkm1 
     
    147163         END DO 
    148164         !                                              ! Iron solubilization of particles in the water column 
    149 !$OMP PARALLEL  
    150 !$OMP WORKSHARE  
    151          tra(:,:,1,jppo4) = tra(:,:,1,jppo4) + zpdep   (:,:) 
    152          tra(:,:,1,jpsil) = tra(:,:,1,jpsil) + zsidep  (:,:) 
    153          tra(:,:,:,jpfer) = tra(:,:,:,jpfer) + zirondep(:,:,:)  
    154 !$OMP END WORKSHARE  
     165!$OMP DO schedule(static) private(jj,ji) 
     166         DO jj = 1, jpj 
     167            DO ji = 1, jpi 
     168               tra(ji,jj,1,jppo4) = tra(ji,jj,1,jppo4) + zpdep   (ji,jj) 
     169               tra(ji,jj,1,jpsil) = tra(ji,jj,1,jpsil) + zsidep  (ji,jj) 
     170            END DO 
     171         END DO 
     172!$OMP DO schedule(static) private(jk,jj,ji) 
     173         DO jk = 1, jpk 
     174            DO jj = 1, jpj 
     175               DO ji = 1, jpi 
     176                  tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + zirondep(ji,jj,jk)  
     177               END DO 
     178            END DO 
     179         END DO 
    155180!$OMP END PARALLEL  
    156181         !  
     
    164189         ELSE                                     
    165190            IF( ln_diatrc )  THEN 
    166 !$OMP PARALLEL WORKSHARE 
    167              trc2d(:,:,jp_pcs0_2d + 11) = zirondep(:,:,1) * 1.e+3 * rfact2r * e3t_n(:,:,1) * tmask(:,:,1) 
    168 !$OMP END PARALLEL WORKSHARE 
     191!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     192               DO jj = 1, jpj 
     193                  DO ji = 1, jpi 
     194                     trc2d(ji,jj,jp_pcs0_2d + 11) = zirondep(ji,jj,1) * 1.e+3 * rfact2r * e3t_n(ji,jj,1) * tmask(ji,jj,1) 
     195                  END DO 
     196               END DO 
    169197            ENDIF 
    170198         ENDIF 
     
    187215                  tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) +  rivdic(ji,jj) * rfact2 
    188216                  tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) +  ( rivalk(ji,jj) - rno3 * rivdin(ji,jj) ) * rfact2 
    189                ENDDO 
    190             ENDDO 
    191          ENDDO 
     217               END DO 
     218            END DO 
     219         END DO 
    192220      ENDIF 
    193221       
     
    195223      ! ---------------------------------------------------------- 
    196224      IF( ln_ndepo ) THEN 
    197 !$OMP PARALLEL WORKSHARE  
    198          tra(:,:,1,jpno3) = tra(:,:,1,jpno3) + nitdep(:,:) * rfact2 
    199          tra(:,:,1,jptal) = tra(:,:,1,jptal) - rno3 * nitdep(:,:) * rfact2 
    200 !$OMP END PARALLEL WORKSHARE  
     225!$OMP PARALLEL DO schedule(static) private(jj,ji) 
     226         DO jj = 1, jpj 
     227            DO ji = 1, jpi 
     228               tra(ji,jj,1,jpno3) = tra(ji,jj,1,jpno3) + nitdep(ji,jj) * rfact2 
     229               tra(ji,jj,1,jptal) = tra(ji,jj,1,jptal) - rno3 * nitdep(ji,jj) * rfact2 
     230            ENDDO 
     231         ENDDO 
    201232      ENDIF 
    202233 
     
    204235      ! ------------------------------------------------------ 
    205236      IF( ln_ironsed ) THEN 
    206 !$OMP PARALLEL WORKSHARE  
    207          tra(:,:,:,jpfer) = tra(:,:,:,jpfer) + ironsed(:,:,:) * rfact2 
    208 !$OMP END PARALLEL WORKSHARE  
     237!$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
     238         DO jk = 1, jpk 
     239            DO jj = 1, jpj 
     240               DO ji = 1, jpi 
     241                  tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + ironsed(ji,jj,jk) * rfact2 
     242               END DO 
     243            END DO 
     244         END DO 
    209245         ! 
    210246         IF( lk_iomput .AND. knt == nrdttrc .AND. iom_use( "Ironsed" ) )   & 
     
    215251      ! ------------------------------------------------------ 
    216252      IF( ln_hydrofe ) THEN 
    217 !$OMP PARALLEL WORKSHARE  
    218          tra(:,:,:,jpfer) = tra(:,:,:,jpfer) + hydrofe(:,:,:) * rfact2 
    219 !$OMP END PARALLEL WORKSHARE  
     253!$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
     254         DO jk = 1, jpk 
     255            DO jj = 1, jpj 
     256               DO ji = 1, jpi 
     257                  tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + hydrofe(ji,jj,jk) * rfact2 
     258               END DO 
     259            END DO 
     260         END DO 
    220261         ! 
    221262         IF( lk_iomput .AND. knt == nrdttrc .AND. iom_use( "HYDR" ) )   & 
     
    291332         END DO 
    292333      END DO 
    293  
    294 !$OMP SINGLE 
     334!$OMP END PARALLEL 
     335 
    295336      zsumsedsi  = glob_sum( zwork1(:,:) * e1e2t(:,:) ) * r1_rday 
    296337      zsumsedpo4 = glob_sum( zwork2(:,:) * e1e2t(:,:) ) * r1_rday 
     
    304345      zrivsil =  1._wp - ( sumdepsi + rivdsiinput * r1_ryyss ) / ( zsumsedsi + rtrn ) 
    305346#endif 
    306 !$OMP END SINGLE 
     347!$OMP PARALLEL 
    307348 
    308349!$OMP DO schedule(static) private(jj,ji,ikt,zdep,zws4,zwsc,zsiloss,zcaloss,zfactcal,zrivalk)  
  • branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsink.F90

    r7037 r7508  
    115115 
    116116      ! limit the values of the sinking speeds to avoid numerical instabilities   
    117 !$OMP WORKSHARE 
    118       wsbio3(:,:,:) = wsbio 
    119       wscal (:,:,:) = wsbio4(:,:,:) 
    120 !$OMP END WORKSHARE NOWAIT 
     117!$OMP DO schedule(static) private(jk, jj, ji) 
     118      DO jk = 1, jpk 
     119         DO jj = 1, jpj 
     120            DO ji = 1, jpi 
     121               wsbio3(ji,jj,jk) = wsbio 
     122               wscal (ji,jj,jk) = wsbio4(ji,jj,jk) 
     123            END DO 
     124         END DO 
     125      END DO 
    121126!$OMP END PARALLEL 
    122127      ! 
     
    173178      !  Initializa to zero all the sinking arrays  
    174179      !   ----------------------------------------- 
    175 !$OMP WORKSHARE 
    176       sinking (:,:,:) = 0.e0 
    177       sinking2(:,:,:) = 0.e0 
    178       sinkcal (:,:,:) = 0.e0 
    179       sinkfer (:,:,:) = 0.e0 
    180       sinksil (:,:,:) = 0.e0 
    181       sinkfer2(:,:,:) = 0.e0 
    182 !$OMP END WORKSHARE NOWAIT 
     180!$OMP DO schedule(static) private(jk, jj, ji) 
     181      DO jk = 1, jpk 
     182         DO jj = 1, jpj 
     183            DO ji = 1, jpi 
     184               sinking (ji,jj,jk) = 0.e0 
     185               sinking2(ji,jj,jk) = 0.e0 
     186               sinkcal (ji,jj,jk) = 0.e0 
     187               sinkfer (ji,jj,jk) = 0.e0 
     188               sinksil (ji,jj,jk) = 0.e0 
     189               sinkfer2(ji,jj,jk) = 0.e0 
     190            END DO 
     191         END DO 
     192      END DO 
    183193!$OMP END PARALLEL 
    184194 
     
    258268          ! 
    259269          IF( iom_use( "EPC100" ) )  THEN 
    260 !$OMP PARALLEL WORKSHARE 
    261               zw2d(:,:) = ( sinking(:,:,ik100) + sinking2(:,:,ik100) ) * zfact * tmask(:,:,1) ! Export of carbon at 100m 
    262 !$OMP END PARALLEL WORKSHARE 
     270!$OMP DO schedule(static) private(jj, ji) 
     271            DO jj = 1, jpj 
     272               DO ji = 1, jpi 
     273                  zw2d(ji,jj) = ( sinking(ji,jj,ik100) + sinking2(ji,jj,ik100) ) * zfact * tmask(ji,jj,1) ! Export of carbon at 100m 
     274               END DO 
     275            END DO 
    263276              CALL iom_put( "EPC100"  , zw2d ) 
    264277          ENDIF 
    265278          IF( iom_use( "EPFE100" ) )  THEN 
    266 !$OMP PARALLEL WORKSHARE 
    267               zw2d(:,:) = ( sinkfer(:,:,ik100) + sinkfer2(:,:,ik100) ) * zfact * tmask(:,:,1) ! Export of iron at 100m 
    268 !$OMP END PARALLEL WORKSHARE 
     279!$OMP DO schedule(static) private(jj, ji) 
     280            DO jj = 1, jpj 
     281               DO ji = 1, jpi 
     282                  zw2d(ji,jj) = ( sinkfer(ji,jj,ik100) + sinkfer2(ji,jj,ik100) ) * zfact * tmask(ji,jj,1) ! Export of iron at 100m 
     283               END DO 
     284            END DO 
    269285              CALL iom_put( "EPFE100"  , zw2d ) 
    270286          ENDIF 
    271287          IF( iom_use( "EPCAL100" ) )  THEN 
    272 !$OMP PARALLEL WORKSHARE 
    273               zw2d(:,:) = sinkcal(:,:,ik100) * zfact * tmask(:,:,1) ! Export of calcite at 100m 
    274 !$OMP END PARALLEL WORKSHARE 
     288!$OMP DO schedule(static) private(jj, ji) 
     289            DO jj = 1, jpj 
     290               DO ji = 1, jpi 
     291                  zw2d(ji,jj) = sinkcal(ji,jj,ik100) * zfact * tmask(ji,jj,1) ! Export of calcite at 100m 
     292               END DO 
     293            END DO 
    275294              CALL iom_put( "EPCAL100"  , zw2d ) 
    276295          ENDIF 
    277296          IF( iom_use( "EPSI100" ) )  THEN 
    278 !$OMP PARALLEL WORKSHARE 
    279               zw2d(:,:) =  sinksil(:,:,ik100) * zfact * tmask(:,:,1) ! Export of bigenic silica at 100m 
    280 !$OMP END PARALLEL WORKSHARE 
     297!$OMP DO schedule(static) private(jj, ji) 
     298            DO jj = 1, jpj 
     299               DO ji = 1, jpi 
     300                  zw2d(ji,jj) =  sinksil(ji,jj,ik100) * zfact * tmask(ji,jj,1) ! Export of bigenic silica at 100m 
     301               END DO 
     302            END DO 
    281303              CALL iom_put( "EPSI100"  , zw2d ) 
    282304          ENDIF 
    283305          IF( iom_use( "EXPC" ) )  THEN 
    284 !$OMP PARALLEL WORKSHARE 
    285               zw3d(:,:,:) = ( sinking(:,:,:) + sinking2(:,:,:) ) * zfact * tmask(:,:,:) ! Export of carbon in the water column 
    286 !$OMP END PARALLEL WORKSHARE 
     306!$OMP DO schedule(static) private(jk, jj, ji) 
     307            DO jk = 1, jpk 
     308               DO jj = 1, jpj 
     309                  DO ji = 1, jpi 
     310                     zw3d(ji,jj,jk) = ( sinking(ji,jj,jk) + sinking2(ji,jj,jk) ) * zfact * tmask(ji,jj,jk) ! Export of carbon in the water column 
     311                  END DO 
     312               END DO 
     313            END DO 
    287314              CALL iom_put( "EXPC"  , zw3d ) 
    288315          ENDIF 
    289316          IF( iom_use( "EXPFE" ) )  THEN 
    290 !$OMP PARALLEL WORKSHARE 
    291               zw3d(:,:,:) = ( sinkfer(:,:,:) + sinkfer2(:,:,:) ) * zfact * tmask(:,:,:) ! Export of iron  
    292 !$OMP END PARALLEL WORKSHARE 
     317!$OMP DO schedule(static) private(jk, jj, ji) 
     318            DO jk = 1, jpk 
     319               DO jj = 1, jpj 
     320                  DO ji = 1, jpi 
     321                     zw3d(ji,jj,jk) = ( sinkfer(ji,jj,jk) + sinkfer2(ji,jj,jk) ) * zfact * tmask(ji,jj,jk) ! Export of iron  
     322                  END DO 
     323               END DO 
     324            END DO 
    293325              CALL iom_put( "EXPFE"  , zw3d ) 
    294326          ENDIF 
    295327          IF( iom_use( "EXPCAL" ) )  THEN 
    296 !$OMP PARALLEL WORKSHARE 
    297               zw3d(:,:,:) = sinkcal(:,:,:) * zfact * tmask(:,:,:) ! Export of calcite  
    298 !$OMP END PARALLEL WORKSHARE 
     328!$OMP DO schedule(static) private(jk, jj, ji) 
     329            DO jk = 1, jpk 
     330               DO jj = 1, jpj 
     331                  DO ji = 1, jpi 
     332                     zw3d(ji,jj,jk) = sinkcal(ji,jj,jk) * zfact * tmask(ji,jj,jk) ! Export of calcite  
     333                  END DO 
     334               END DO 
     335            END DO 
    299336              CALL iom_put( "EXPCAL"  , zw3d ) 
    300337          ENDIF 
    301338          IF( iom_use( "EXPSI" ) )  THEN 
    302 !$OMP PARALLEL WORKSHARE 
    303               zw3d(:,:,:) = sinksil(:,:,:) * zfact * tmask(:,:,:) ! Export of bigenic silica 
    304 !$OMP END PARALLEL WORKSHARE 
     339!$OMP DO schedule(static) private(jk, jj, ji) 
     340            DO jk = 1, jpk 
     341               DO jj = 1, jpj 
     342                  DO ji = 1, jpi 
     343                     zw3d(ji,jj,jk) = sinksil(ji,jj,jk) * zfact * tmask(ji,jj,jk) ! Export of bigenic silica 
     344                  END DO 
     345               END DO 
     346            END DO 
    305347              CALL iom_put( "EXPSI"  , zw3d ) 
    306348          ENDIF 
     
    313355         IF( ln_diatrc ) THEN 
    314356            zfact = 1.e3 * rfact2r 
    315 !$OMP PARALLEL WORKSHARE 
    316             trc2d(:,:,jp_pcs0_2d + 4) = sinking (:,:,ik100) * zfact * tmask(:,:,1) 
    317             trc2d(:,:,jp_pcs0_2d + 5) = sinking2(:,:,ik100) * zfact * tmask(:,:,1) 
    318             trc2d(:,:,jp_pcs0_2d + 6) = sinkfer (:,:,ik100) * zfact * tmask(:,:,1) 
    319             trc2d(:,:,jp_pcs0_2d + 7) = sinkfer2(:,:,ik100) * zfact * tmask(:,:,1) 
    320             trc2d(:,:,jp_pcs0_2d + 8) = sinksil (:,:,ik100) * zfact * tmask(:,:,1) 
    321             trc2d(:,:,jp_pcs0_2d + 9) = sinkcal (:,:,ik100) * zfact * tmask(:,:,1) 
    322 !$OMP END PARALLEL WORKSHARE 
     357!$OMP DO schedule(static) private(jj, ji) 
     358            DO jj = 1, jpj 
     359               DO ji = 1, jpi 
     360                  trc2d(ji,jj,jp_pcs0_2d + 4) = sinking (ji,jj,ik100) * zfact * tmask(ji,jj,1) 
     361                  trc2d(ji,jj,jp_pcs0_2d + 5) = sinking2(ji,jj,ik100) * zfact * tmask(ji,jj,1) 
     362                  trc2d(ji,jj,jp_pcs0_2d + 6) = sinkfer (ji,jj,ik100) * zfact * tmask(ji,jj,1) 
     363                  trc2d(ji,jj,jp_pcs0_2d + 7) = sinkfer2(ji,jj,ik100) * zfact * tmask(ji,jj,1) 
     364                  trc2d(ji,jj,jp_pcs0_2d + 8) = sinksil (ji,jj,ik100) * zfact * tmask(ji,jj,1) 
     365                  trc2d(ji,jj,jp_pcs0_2d + 9) = sinkcal (ji,jj,ik100) * zfact * tmask(ji,jj,1) 
     366               END DO 
     367            END DO 
    323368         ENDIF 
    324369      ENDIF 
     
    394439      zval3 = 1. + xkr_eta 
    395440!$OMP PARALLEL 
    396 !$OMP WORKSHARE 
    397       znum3d(:,:,:) = 0.e0 
    398 !$OMP END WORKSHARE 
     441!$OMP DO schedule(static) private(jk, jj, ji) 
     442      DO jk = 1, jpk 
     443         DO jj = 1, jpj 
     444            DO ji = 1, jpi 
     445               znum3d(ji,jj,jk) = 0.e0 
     446            END DO 
     447         END DO 
     448      END DO 
    399449      !     Computation of the vertical sinking speed : Kriest et Evans, 2000 
    400450      !     ----------------------------------------------------------------- 
     
    438488      !   INITIALIZE TO ZERO ALL THE SINKING ARRAYS 
    439489      !   ----------------------------------------- 
    440 !$OMP WORKSHARE 
    441       sinking (:,:,:) = 0.e0 
    442       sinking2(:,:,:) = 0.e0 
    443       sinkcal (:,:,:) = 0.e0 
    444       sinkfer (:,:,:) = 0.e0 
    445       sinksil (:,:,:) = 0.e0 
    446 !$OMP END WORKSHARE NOWAIT 
     490!$OMP DO schedule(static) private(jk, jj, ji) 
     491      DO jk = 1, jpk 
     492         DO jj = 1, jpj 
     493            DO ji = 1, jpi 
     494               sinking (ji,jj,jk) = 0.e0 
     495               sinking2(ji,jj,jk) = 0.e0 
     496               sinkcal (ji,jj,jk) = 0.e0 
     497               sinkfer (ji,jj,jk) = 0.e0 
     498               sinksil (ji,jj,jk) = 0.e0 
     499            END DO 
     500         END DO 
     501      END DO 
    447502!$OMP END PARALLEL 
    448503     !   Compute the sedimentation term using p4zsink2 for all the sinking particles 
     
    576631          ! 
    577632          IF( iom_use( "EPC100" ) )  THEN 
    578 !$OMP PARALLEL WORKSHARE 
    579               zw2d(:,:) = sinking(:,:,ik100) * zfact * tmask(:,:,1) ! Export of carbon at 100m 
    580 !$OMP END PARALLEL WORKSHARE 
     633!$OMP DO schedule(static) private(jj, ji) 
     634            DO jj = 1, jpj 
     635               DO ji = 1, jpi 
     636                  zw2d(ji,jj) = sinking(ji,jj,ik100) * zfact * tmask(ji,jj,1) ! Export of carbon at 100m 
     637               END DO 
     638            END DO 
    581639              CALL iom_put( "EPC100"  , zw2d ) 
    582640          ENDIF 
    583641          IF( iom_use( "EPN100" ) )  THEN 
    584 !$OMP PARALLEL WORKSHARE 
    585               zw2d(:,:) = sinking2(:,:,ik100) * zfact * tmask(:,:,1) ! Export of number of aggregates ? 
    586 !$OMP END PARALLEL WORKSHARE 
     642!$OMP DO schedule(static) private(jj, ji) 
     643            DO jj = 1, jpj 
     644               DO ji = 1, jpi 
     645                  zw2d(ji,jj) = sinking2(ji,jj,ik100) * zfact * tmask(ji,jj,1) ! Export of number of aggregates ? 
     646               END DO 
     647            END DO 
    587648              CALL iom_put( "EPN100"  , zw2d ) 
    588649          ENDIF 
    589650          IF( iom_use( "EPCAL100" ) )  THEN 
    590 !$OMP PARALLEL WORKSHARE 
    591               zw2d(:,:) = sinkcal(:,:,ik100) * zfact * tmask(:,:,1) ! Export of calcite at 100m 
    592 !$OMP END PARALLEL WORKSHARE 
     651!$OMP DO schedule(static) private(jj, ji) 
     652            DO jj = 1, jpj 
     653               DO ji = 1, jpi 
     654                  zw2d(ji,jj) = sinkcal(ji,jj,ik100) * zfact * tmask(ji,jj,1) !Export of calcite at 100m 
     655               END DO 
     656            END DO 
    593657              CALL iom_put( "EPCAL100"  , zw2d ) 
    594658          ENDIF 
    595659          IF( iom_use( "EPSI100" ) )  THEN 
    596 !$OMP PARALLEL WORKSHARE 
    597               zw2d(:,:) = sinksil(:,:,ik100) * zfact * tmask(:,:,1) ! Export of bigenic silica at 100m 
    598 !$OMP END PARALLEL WORKSHARE 
     660!$OMP DO schedule(static) private(jj, ji) 
     661            DO jj = 1, jpj 
     662               DO ji = 1, jpi 
     663                  zw2d(ji,jj) =  sinksil(ji,jj,ik100) * zfact * tmask(ji,jj,1) ! Export of bigenic silica at 100m 
     664               END DO 
     665            END DO 
    599666              CALL iom_put( "EPSI100"  , zw2d ) 
    600667          ENDIF 
    601668          IF( iom_use( "EXPC" ) )  THEN 
    602 !$OMP PARALLEL WORKSHARE 
    603               zw3d(:,:,:) = sinking(:,:,:) * zfact * tmask(:,:,:) ! Export of carbon in the water column 
    604 !$OMP END PARALLEL WORKSHARE 
     669!$OMP DO schedule(static) private(jk, jj, ji) 
     670            DO jk = 1, jpk 
     671               DO jj = 1, jpj 
     672                  DO ji = 1, jpi 
     673                     zw3d(ji,jj,jk) = sinking(ji,jj,jk) * zfact * tmask(ji,jj,jk) ! Export of carbon in the water column 
     674                  END DO 
     675               END DO 
     676            END DO 
    605677              CALL iom_put( "EXPC"  , zw3d ) 
    606678          ENDIF 
    607679          IF( iom_use( "EXPN" ) )  THEN 
    608 !$OMP PARALLEL WORKSHARE 
    609               zw3d(:,:,:) = sinking(:,:,:) * zfact * tmask(:,:,:) ! Export of carbon in the water column 
    610 !$OMP END PARALLEL WORKSHARE 
     680!$OMP DO schedule(static) private(jk, jj, ji) 
     681            DO jk = 1, jpk 
     682               DO jj = 1, jpj 
     683                  DO ji = 1, jpi 
     684                     zw3d(ji,jj,jk) = sinking(ji,jj,jk) * zfact * tmask(ji,jj,jk) ! Export of carbon in the water column 
     685                  END DO 
     686               END DO 
     687            END DO 
    611688              CALL iom_put( "EXPN"  , zw3d ) 
    612689          ENDIF 
    613690          IF( iom_use( "EXPCAL" ) )  THEN 
    614 !$OMP PARALLEL WORKSHARE 
    615               zw3d(:,:,:) = sinkcal(:,:,:) * zfact * tmask(:,:,:) ! Export of calcite  
    616 !$OMP END PARALLEL WORKSHARE 
     691!$OMP DO schedule(static) private(jk, jj, ji) 
     692            DO jk = 1, jpk 
     693               DO jj = 1, jpj 
     694                  DO ji = 1, jpi 
     695                     zw3d(ji,jj,jk) = sinkcal(ji,jj,jk) * zfact * tmask(ji,jj,jk) ! Export of calcite  
     696                  END DO 
     697               END DO 
     698            END DO 
    617699              CALL iom_put( "EXPCAL"  , zw3d ) 
    618700          ENDIF 
    619701          IF( iom_use( "EXPSI" ) )  THEN 
    620 !$OMP PARALLEL WORKSHARE 
    621               zw3d(:,:,:) = sinksil(:,:,:) * zfact * tmask(:,:,:) ! Export of bigenic silica 
    622 !$OMP END PARALLEL WORKSHARE 
     702!$OMP DO schedule(static) private(jk, jj, ji) 
     703            DO jk = 1, jpk 
     704               DO jj = 1, jpj 
     705                  DO ji = 1, jpi 
     706                     zw3d(ji,jj,jk) = sinksil(ji,jj,jk) * zfact * tmask(ji,jj,jk) ! Export of bigenic silica 
     707                  END DO 
     708               END DO 
     709            END DO 
    623710              CALL iom_put( "EXPSI"  , zw3d ) 
    624711          ENDIF 
    625712          IF( iom_use( "XNUM" ) )  THEN 
    626 !$OMP PARALLEL WORKSHARE 
    627               zw3d(:,:,:) =  znum3d(:,:,:) * tmask(:,:,:) !  Number of particles on aggregats 
    628 !$OMP END PARALLEL WORKSHARE 
     713!$OMP DO schedule(static) private(jk, jj, ji) 
     714            DO jk = 1, jpk 
     715               DO jj = 1, jpj 
     716                  DO ji = 1, jpi 
     717                     zw3d(ji,jj,jk) = znum3d(ji,jj,jk) * tmask(ji,jj,jk) !  Number of particles on aggregats 
     718                  END DO 
     719               END DO 
     720            END DO 
    629721              CALL iom_put( "XNUM"  , zw3d ) 
    630722          ENDIF 
    631723          IF( iom_use( "WSC" ) )  THEN 
    632 !$OMP PARALLEL WORKSHARE 
    633               zw3d(:,:,:) = wsbio3(:,:,:) * tmask(:,:,:) ! Sinking speed of carbon particles 
    634 !$OMP END PARALLEL WORKSHARE 
     724!$OMP DO schedule(static) private(jk, jj, ji) 
     725            DO jk = 1, jpk 
     726               DO jj = 1, jpj 
     727                  DO ji = 1, jpi 
     728                     zw3d(ji,jj,jk) = wsbio3(ji,jj,jk) * tmask(ji,jj,jk) ! Sinking speed of carbon particles 
     729                  END DO 
     730               END DO 
     731            END DO 
    635732              CALL iom_put( "WSC"  , zw3d ) 
    636733          ENDIF 
    637734          IF( iom_use( "WSN" ) )  THEN 
    638 !$OMP PARALLEL WORKSHARE 
    639               zw3d(:,:,:) = wsbio4(:,:,:) * tmask(:,:,:) ! Sinking speed of particles number 
    640 !$OMP END PARALLEL WORKSHARE 
     735!$OMP DO schedule(static) private(jk, jj, ji) 
     736            DO jk = 1, jpk 
     737               DO jj = 1, jpj 
     738                  DO ji = 1, jpi 
     739                     zw3d(ji,jj,jk) = wsbio4(ji,jj,jk) * tmask(ji,jj,jk) ! Sinking speed of particles number 
     740                  END DO 
     741               END DO 
     742            END DO 
    641743              CALL iom_put( "WSN"  , zw3d ) 
    642744          ENDIF 
     
    647749         IF( ln_diatrc ) THEN 
    648750            zfact = 1.e3 * rfact2r 
    649 !$OMP PARALLEL WORKSHARE 
    650             trc2d(:,:  ,jp_pcs0_2d + 4)  = sinking (:,:,ik100)  * zfact * tmask(:,:,1) 
    651             trc2d(:,:  ,jp_pcs0_2d + 5)  = sinking2(:,:,ik100)  * zfact * tmask(:,:,1) 
    652             trc2d(:,:  ,jp_pcs0_2d + 6)  = sinkfer (:,:,ik100)  * zfact * tmask(:,:,1) 
    653             trc2d(:,:  ,jp_pcs0_2d + 7)  = sinksil (:,:,ik100)  * zfact * tmask(:,:,1) 
    654             trc2d(:,:  ,jp_pcs0_2d + 8)  = sinkcal (:,:,ik100)  * zfact * tmask(:,:,1) 
    655             trc3d(:,:,:,jp_pcs0_3d + 11) = sinking (:,:,:)      * zfact * tmask(:,:,:) 
    656             trc3d(:,:,:,jp_pcs0_3d + 12) = sinking2(:,:,:)      * zfact * tmask(:,:,:) 
    657             trc3d(:,:,:,jp_pcs0_3d + 13) = sinksil (:,:,:)      * zfact * tmask(:,:,:) 
    658             trc3d(:,:,:,jp_pcs0_3d + 14) = sinkcal (:,:,:)      * zfact * tmask(:,:,:) 
    659             trc3d(:,:,:,jp_pcs0_3d + 15) = znum3d  (:,:,:)              * tmask(:,:,:) 
    660             trc3d(:,:,:,jp_pcs0_3d + 16) = wsbio3  (:,:,:)              * tmask(:,:,:) 
    661             trc3d(:,:,:,jp_pcs0_3d + 17) = wsbio4  (:,:,:)              * tmask(:,:,:) 
    662 !$OMP END PARALLEL WORKSHARE 
     751!$OMP PARALLEL 
     752!$OMP DO schedule(static) private(jj, ji) 
     753            DO jj = 1, jpj 
     754               DO ji = 1, jpi 
     755                  trc2d(ji,jj ,jp_pcs0_2d + 4)  = sinking (ji,jj,ik100)  * zfact * tmask(ji,jj,1) 
     756                  trc2d(ji,jj ,jp_pcs0_2d + 5)  = sinking2(ji,jj,ik100)  * zfact * tmask(ji,jj,1) 
     757                  trc2d(ji,jj ,jp_pcs0_2d + 6)  = sinkfer (ji,jj,ik100)  * zfact * tmask(ji,jj,1) 
     758                  trc2d(ji,jj ,jp_pcs0_2d + 7)  = sinksil (ji,jj,ik100)  * zfact * tmask(ji,jj,1) 
     759                  trc2d(ji,jj ,jp_pcs0_2d + 8)  = sinkcal (ji,jj,ik100)  * zfact * tmask(ji,jj,1) 
     760               END DO 
     761            END DO 
     762!$OMP DO schedule(static) private(jk, jj, ji) 
     763            DO jk = 1, jpk 
     764               DO jj = 1, jpj 
     765                  DO ji = 1, jpi 
     766                     trc3d(ji,jj,jk,jp_pcs0_3d + 11) = sinking (ji,jj,jk)      * zfact * tmask(ji,jj,jk) 
     767                     trc3d(ji,jj,jk,jp_pcs0_3d + 12) = sinking2(ji,jj,jk)      * zfact * tmask(ji,jj,jk) 
     768                     trc3d(ji,jj,jk,jp_pcs0_3d + 13) = sinksil (ji,jj,jk)      * zfact * tmask(ji,jj,jk) 
     769                     trc3d(ji,jj,jk,jp_pcs0_3d + 14) = sinkcal (ji,jj,jk)      * zfact * tmask(ji,jj,jk) 
     770                     trc3d(ji,jj,jk,jp_pcs0_3d + 15) = znum3d  (ji,jj,jk)              * tmask(ji,jj,jk) 
     771                     trc3d(ji,jj,jk,jp_pcs0_3d + 16) = wsbio3  (ji,jj,jk)              * tmask(ji,jj,jk) 
     772                     trc3d(ji,jj,jk,jp_pcs0_3d + 17) = wsbio4  (ji,jj,jk)              * tmask(ji,jj,jk) 
     773                  END DO 
     774               END DO 
     775            END DO 
     776!$OMP END PARALLEL 
    663777         ENDIF 
    664778      ENDIF 
     
    8901004 
    8911005      IF( lk_degrad ) THEN 
    892 !$OMP PARALLEL WORKSHARE 
    893          zwsink2(:,:,:) = zwsink2(:,:,:) * facvol(:,:,:) 
    894 !$OMP END PARALLEL WORKSHARE 
     1006!$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
     1007         DO jk = 1, jpk 
     1008            DO jj = 1, jpj 
     1009               DO ji = 1, jpi 
     1010                  zwsink2(ji,jj,jk) = zwsink2(ji,jj,jk) * facvol(ji,jj,jk) 
     1011               END DO 
     1012            END DO 
     1013         END DO 
    8951014      ENDIF 
    8961015 
  • branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsms.F90

    r7037 r7508  
    143143         ! 
    144144!$OMP PARALLEL 
    145 !$OMP WORKSHARE 
    146          xnegtr(:,:,:) = 1.e0 
    147 !$OMP END WORKSHARE 
     145!$OMP DO schedule(static) private(jk, jj, ji) 
     146         DO jk = 1, jpk 
     147            DO jj = 1, jpj 
     148               DO ji = 1, jpi 
     149                  xnegtr(ji,jj,jk) = 1.e0 
     150               END DO 
     151            END DO 
     152         END DO 
    148153         DO jn = jp_pcs0, jp_pcs1 
    149154!$OMP DO schedule(static) private(jk, jj, ji, ztra) 
     
    406411            CALL iom_get( numrtr, jpdom_autoglo, 'Silicamax' , xksimax(:,:)  ) 
    407412         ELSE 
    408 !$OMP PARALLEL WORKSHARE 
    409             xksimax(:,:) = xksi(:,:) 
    410 !$OMP END PARALLEL WORKSHARE 
     413!$OMP PARALLEL DO schedule(static) private(jj, ji) 
     414            DO jj = 1, jpj 
     415               DO ji = 1, jpi 
     416                  xksimax(ji,jj) = xksi(ji,jj) 
     417               END DO 
     418            END DO 
    411419         ENDIF 
    412420         ! 
     
    462470         ! set total alkalinity, phosphate, nitrate & silicate 
    463471         zarea          = 1._wp / glob_sum( cvol(:,:,:) ) * 1e6               
    464 !$OMP PARALLEL 
    465 !$OMP DO schedule(static) private(jk,jj,ji) 
     472 
     473!$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    466474            DO jk = 1, jpk 
    467475               DO jj = 1, jpj 
     
    474482               END DO 
    475483            END DO 
    476 !$OMP SINGLE 
     484 
    477485         zalksumn = glob_sum( zctrn_jptal(:,:,:)  ) * zarea 
    478486         zpo4sumn = glob_sum( zctrn_jppo4(:,:,:)  ) * zarea * po4r 
    479487         zno3sumn = glob_sum( zctrn_jppo3(:,:,:)  ) * zarea * rno3 
    480488         zsilsumn = glob_sum( zctrn_jpsil(:,:,:)  ) * zarea 
    481 !$OMP END SINGLE 
    482  
    483 !$OMP DO schedule(static) private(jk,jj,ji) 
     489 
     490!$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    484491            DO jk = 1, jpk 
    485492               DO jj = 1, jpj 
     
    492499               END DO 
    493500            END DO 
    494 !$OMP END DO NOWAIT 
    495 !$OMP END PARALLEL 
    496501 
    497502         IF(lwp) THEN 
     
    503508         ! 
    504509         IF( .NOT. ln_top_euler ) THEN 
    505 !$OMP PARALLEL 
    506 !$OMP DO schedule(static) private(jk,jj,ji) 
     510!$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    507511            DO jk = 1, jpk 
    508512               DO jj = 1, jpj 
     
    515519               END DO 
    516520            END DO 
    517 !$OMP SINGLE  
     521 
    518522            zalksumb = glob_sum( zctrb_jptal(:,:,:)  ) * zarea 
    519523            zpo4sumb = glob_sum( zctrb_jppo4(:,:,:)  ) * zarea * po4r 
    520524            zno3sumb = glob_sum( zctrb_jppo3(:,:,:)  ) * zarea * rno3 
    521             zsilsumb = glob_sum( zctrb_jpsil(:,:,:)  ) * zarea 
    522 !$OMP END SINGLE             
    523  
    524 !$OMP DO schedule(static) private(jk,jj,ji) 
     525            zsilsumb = glob_sum( zctrb_jpsil(:,:,:)  ) * zarea          
     526 
     527!$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    525528            DO jk = 1, jpk 
    526529               DO jj = 1, jpj 
     
    533536               END DO 
    534537            END DO 
    535 !$OMP END DO NOWAIT 
    536 !$OMP END PARALLEL 
    537538  
    538539            IF(lwp) THEN 
Note: See TracChangeset for help on using the changeset viewer.