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 7753 for trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zpoc.F90 – NEMO

Ignore:
Timestamp:
2017-03-03T12:46:59+01:00 (7 years ago)
Author:
mocavero
Message:

Reverting trunk to remove OpenMP

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zpoc.F90

    r7698 r7753  
    8989      ! Initialisation of temprary arrys 
    9090      IF( ln_p4z ) THEN 
    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                   zremipoc(ji,jj,jk) = xremip 
    96                   zremigoc(ji,jj,jk) = xremip 
    97                END DO 
    98             END DO 
    99          END DO 
     91         zremipoc(:,:,:) = xremip 
     92         zremigoc(:,:,:) = xremip 
    10093      ELSE    ! ln_p5z 
    101 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    102          DO jk = 1, jpk 
    103             DO jj = 1, jpj 
    104                DO ji = 1, jpi 
    105                   zremipoc(ji,jj,jk) = xremipc 
    106                   zremigoc(ji,jj,jk) = xremipc 
    107                END DO 
    108             END DO 
    109          END DO 
     94         zremipoc(:,:,:) = xremipc 
     95         zremigoc(:,:,:) = xremipc 
    11096      ENDIF 
    111 !$OMP PARALLEL 
    112 !$OMP DO schedule(static) private(jk, jj, ji) 
    113       DO jk = 1, jpk 
    114          DO jj = 1, jpj 
    115             DO ji = 1, jpi 
    116                zorem3  (ji,jj,jk) = 0. 
    117                orem    (ji,jj,jk) = 0. 
    118                ztremint(ji,jj,jk) = 0. 
    119             END DO 
    120          END DO 
     97      zorem3(:,:,:)   = 0. 
     98      orem  (:,:,:)   = 0. 
     99      ztremint(:,:,:) = 0. 
     100 
     101      DO jn = 1, jcpoc 
     102        alphag(:,:,:,jn) = alphan(jn) 
     103        alphap(:,:,:,jn) = alphan(jn) 
    121104      END DO 
    122 !OMP END DO NOWAIT 
    123       DO jn = 1, jcpoc 
    124 !$OMP DO schedule(static) private(jk, jj, ji) 
    125          DO jk = 1, jpk 
    126             DO jj = 1, jpj 
    127                DO ji = 1, jpi 
    128                   alphag(ji,jj,jk,jn) = alphan(jn) 
    129                   alphap(ji,jj,jk,jn) = alphan(jn) 
    130                END DO 
    131             END DO 
    132          END DO 
    133       END DO 
    134 !$OMP END PARALLEL 
    135105 
    136106     ! ----------------------------------------------------------------------- 
     
    140110     ! ----------------------------------------------------------------------- 
    141111     DO jk = 2, jpkm1 
    142 !$OMP PARALLEL DO schedule(static) private(jj,ji,zdep,alphat,remint,zsizek1,zsizek,zpoc,jn) 
    143112        DO jj = 1, jpj 
    144113           DO ji = 1, jpi 
     
    151120                ! 
    152121                IF( gdept_n(ji,jj,jk) > zdep ) THEN 
     122                  alphat = 0. 
     123                  remint = 0. 
     124                  ! 
    153125                  zsizek1  = e3t_n(ji,jj,jk-1) / 2. / (wsbio4(ji,jj,jk-1) + rtrn) * tgfunc(ji,jj,jk-1) 
    154126                  zsizek = e3t_n(ji,jj,jk) / 2. / (wsbio4(ji,jj,jk) + rtrn) * tgfunc(ji,jj,jk) 
     
    183155                       &   + prodgoc(ji,jj,jk) * alphan(jn) / tgfunc(ji,jj,jk) / reminp(jn)             & 
    184156                       &   * ( 1. - exp( -reminp(jn) * zsizek ) ) * rday / rfact2  
    185  
     157                       alphat = alphat + alphag(ji,jj,jk,jn) 
     158                       remint = remint + alphag(ji,jj,jk,jn) * reminp(jn) 
    186159                    END DO 
    187160                  ELSE 
     
    201174                       &   - exp( -reminp(jn) * zsizek1 ) ) * exp( -reminp(jn) * zsizek ) + prodgoc(ji,jj,jk) & 
    202175                       &   / tgfunc(ji,jj,jk) * ( 1. - exp( -reminp(jn) * zsizek ) ) ) * rday / rfact2 / reminp(jn)  
     176                       alphat = alphat + alphag(ji,jj,jk,jn) 
     177                       remint = remint + alphag(ji,jj,jk,jn) * reminp(jn) 
    203178                    END DO 
    204179                  ENDIF 
    205                   ! 
    206                   alphat =  SUM(alphag(ji,jj,jk,:)) 
    207                   remint =  SUM(alphag(ji,jj,jk,:) * reminp(:)) 
    208180                  ! 
    209181                  DO jn = 1, jcpoc 
     
    221193      END DO 
    222194 
    223       IF( ln_p4z ) THEN    
    224 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    225          DO jk = 1, jpk 
    226             DO jj = 1, jpj 
    227                DO ji = 1, jpi 
    228                   zremigoc(ji,jj,jk) = MIN( xremip , ztremint(ji,jj,jk) ) 
    229                END DO 
    230             END DO 
    231          END DO 
    232       ELSE 
    233 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    234          DO jk = 1, jpk 
    235             DO jj = 1, jpj 
    236                DO ji = 1, jpi 
    237                   zremigoc(ji,jj,jk) = MIN( xremipc, ztremint(ji,jj,jk) ) 
    238                END DO 
    239             END DO 
    240          END DO 
     195      IF( ln_p4z ) THEN   ;  zremigoc(:,:,:) = MIN( xremip , ztremint(:,:,:) ) 
     196      ELSE                ;  zremigoc(:,:,:) = MIN( xremipc, ztremint(:,:,:) ) 
    241197      ENDIF 
    242198 
    243199      IF( ln_p4z ) THEN 
    244 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji,zremig,zorem2,zofer2,zofer3) 
    245200         DO jk = 1, jpkm1 
    246201            DO jj = 1, jpj 
     
    266221         END DO 
    267222      ELSE 
    268 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji,zremig,zopoc2,zofer2,zopon2,zopop2) 
    269223         DO jk = 1, jpkm1 
    270224            DO jj = 1, jpj 
     
    312266     ! ------------------------------------------------------------------- 
    313267     ! 
    314 !$OMP PARALLEL 
    315 !$OMP DO schedule(static) private(jj,ji) 
    316      DO jj = 1, jpj 
    317         DO ji = 1, jpi 
    318            totprod(ji,jj) = 0. 
    319            totthick(ji,jj) = 0. 
    320            totcons(ji,jj) = 0. 
    321         END DO 
    322      END DO 
     268     totprod(:,:) = 0. 
     269     totthick(:,:) = 0. 
     270     totcons(:,:) = 0. 
    323271     ! intregrated production and consumption of POC in the mixed layer 
    324272     ! ---------------------------------------------------------------- 
    325273     !  
    326274     DO jk = 1, jpkm1 
    327 !$OMP DO schedule(static) private(jj,ji,zdep) 
    328275        DO jj = 1, jpj 
    329276           DO ji = 1, jpi 
     
    339286        END DO 
    340287     END DO 
    341 !$OMP END PARALLEL 
    342288 
    343289     ! Computation of the lability spectrum in the mixed layer. In the mixed  
    344290     ! layer, this spectrum is supposed to be uniform. 
    345291     ! --------------------------------------------------------------------- 
    346 !$OMP DO schedule(static) private(jk,jj,ji,zdep,alphat,remint,jn) 
    347292     DO jk = 1, jpkm1 
    348293        DO jj = 1, jpj 
     
    350295              IF (tmask(ji,jj,jk) == 1.) THEN 
    351296                zdep = hmld(ji,jj) 
     297                alphat = 0.0 
     298                remint = 0.0 
    352299                IF( gdept_n(ji,jj,jk) <= zdep ) THEN 
    353300                   DO jn = 1, jcpoc 
     
    356303                      alphap(ji,jj,jk,jn) = totprod(ji,jj) * alphan(jn) / ( reminp(jn)    & 
    357304                      &                     * totthick(ji,jj) + totcons(ji,jj) + wsbio + rtrn ) 
     305                      alphat = alphat + alphap(ji,jj,jk,jn) 
    358306                   END DO 
    359                    alphat =  SUM(alphap(ji,jj,jk,:)) 
    360307                   DO jn = 1, jcpoc 
    361308                      alphap(ji,jj,jk,jn) = alphap(ji,jj,jk,jn) / ( alphat + rtrn) 
     309                      remint = remint + alphap(ji,jj,jk,jn) * reminp(jn) 
    362310                   END DO 
    363                    remint =  SUM(alphap(ji,jj,jk,:) * reminp(:)) 
    364311                   ! Mean remineralization rate in the mixed layer 
    365312                   ztremint(ji,jj,jk) =  MAX( 0., remint ) 
     
    370317     END DO 
    371318     ! 
    372      IF( ln_p4z ) THEN   
    373 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    374         DO jk = 1, jpk 
    375            DO jj = 1, jpj 
    376               DO ji = 1, jpi 
    377                  zremipoc(ji,jj,jk) = MIN( xremip , ztremint(ji,jj,jk) ) 
    378               END DO 
    379            END DO 
    380         END DO 
    381      ELSE                 
    382 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    383         DO jk = 1, jpk 
    384            DO jj = 1, jpj 
    385               DO ji = 1, jpi 
    386                  zremipoc(ji,jj,jk) = MIN( xremipc , ztremint(ji,jj,jk) ) 
    387               END DO 
    388            END DO 
    389         END DO 
     319     IF( ln_p4z ) THEN   ;  zremipoc(:,:,:) = MIN( xremip , ztremint(:,:,:) ) 
     320     ELSE                ;  zremipoc(:,:,:) = MIN( xremipc, ztremint(:,:,:) ) 
    390321     ENDIF 
    391322 
     
    399330     ! 
    400331     DO jk = 2, jpkm1 
    401 !$OMP PARALLEL DO schedule(static) private(jj,ji,zdep,alphat,remint,zsizek1,zsizek,zpoc,jn) 
    402332        DO jj = 1, jpj 
    403333           DO ji = 1, jpi 
     
    405335                zdep = hmld(ji,jj) 
    406336                IF( gdept_n(ji,jj,jk) > zdep ) THEN 
     337                  alphat = 0. 
     338                  remint = 0. 
    407339                  ! 
    408340                  ! the scale factors are corrected with temperature 
     
    430362                       &   * zsizek ) ) 
    431363                       alphap(ji,jj,jk,jn) = MAX( 0., alphap(ji,jj,jk,jn) ) 
     364                       alphat = alphat + alphap(ji,jj,jk,jn) 
    432365                    END DO 
    433366                  ELSE 
     
    452385                       &   - exp( -reminp(jn) * zsizek ) ) 
    453386                       alphap(ji,jj,jk,jn) = max(0., alphap(ji,jj,jk,jn) ) 
     387                       alphat = alphat + alphap(ji,jj,jk,jn) 
    454388                    END DO 
    455389                  ENDIF 
    456                   alphat =  SUM(alphap(ji,jj,jk,:)) 
    457390                  ! Normalization of the lability spectrum so that the  
    458391                  ! integral is equal to 1 
    459392                  DO jn = 1, jcpoc 
    460393                     alphap(ji,jj,jk,jn) = alphap(ji,jj,jk,jn) / ( alphat + rtrn) 
     394                     remint = remint + alphap(ji,jj,jk,jn) * reminp(jn) 
    461395                  END DO 
    462                   remint =  SUM(alphap(ji,jj,jk,:) * reminp(:)) 
    463396                  ! Mean remineralization rate in the water column 
    464397                  ztremint(ji,jj,jk) =  MAX( 0., remint ) 
     
    469402      END DO 
    470403 
    471      IF( ln_p4z ) THEN   
    472 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    473         DO jk = 1, jpk 
    474            DO jj = 1, jpj 
    475               DO ji = 1, jpi 
    476                  zremipoc(ji,jj,jk) = MIN( xremip , ztremint(ji,jj,jk) ) 
    477               END DO 
    478            END DO 
    479         END DO 
    480      ELSE                 
    481 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    482         DO jk = 1, jpk 
    483            DO jj = 1, jpj 
    484               DO ji = 1, jpi 
    485                  zremipoc(ji,jj,jk) = MIN( xremipc , ztremint(ji,jj,jk) ) 
    486               END DO 
    487            END DO 
    488         END DO 
     404     IF( ln_p4z ) THEN   ;  zremipoc(:,:,:) = MIN( xremip , ztremint(:,:,:) ) 
     405     ELSE                ;  zremipoc(:,:,:) = MIN( xremipc, ztremint(:,:,:) ) 
    489406     ENDIF 
    490407 
    491408     IF( ln_p4z ) THEN 
    492 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji,zremip,zorem,zofer) 
    493409         DO jk = 1, jpkm1 
    494410            DO jj = 1, jpj 
     
    511427         END DO 
    512428     ELSE 
    513 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji,zremip,zopoc,zopon,zopop,zofer) 
    514429       DO jk = 1, jpkm1 
    515430          DO jj = 1, jpj 
     
    572487      !! 
    573488      !!---------------------------------------------------------------------- 
    574       INTEGER :: jn, jk, jj, ji 
     489      INTEGER :: jn 
    575490      REAL(wp) :: remindelta, reminup, remindown 
    576491      INTEGER  :: ifault 
     
    642557 
    643558      DO jn = 1, jcpoc 
    644 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    645          DO jk = 1, jpk 
    646             DO jj = 1, jpj 
    647                DO ji = 1, jpi 
    648                   alphap(ji,jj,jk,jn) = alphan(jn) 
    649                END DO 
    650             END DO 
    651          END DO 
     559         alphap(:,:,:,jn) = alphan(jn) 
    652560      END DO 
    653561 
Note: See TracChangeset for help on using the changeset viewer.