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/p4zfechem.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/p4zfechem.F90

    r7698 r7753  
    8383      ! Allocate temporary workspace 
    8484      CALL wrk_alloc( jpi, jpj, jpk, zFe3, zFeL1, zTL1, ztotlig, precip ) 
    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 
     85      zFe3 (:,:,:) = 0. 
     86      zFeL1(:,:,:) = 0. 
     87      zTL1 (:,:,:) = 0. 
     88      IF( ln_fechem ) THEN 
     89         CALL wrk_alloc( jpi, jpj,      zstrn, zstrn2 ) 
     90         CALL wrk_alloc( jpi, jpj, jpk, zFe2, zFeL2, zTL2, zFeP ) 
     91         zFe2 (:,:,:) = 0. 
     92         zFeL2(:,:,:) = 0. 
     93         zTL2 (:,:,:) = 0. 
     94         zFeP (:,:,:) = 0. 
     95      ENDIF 
    9596 
    9697      ! Total ligand concentration : Ligands can be chosen to be constant or variable 
     
    9899      ! ------------------------------------------------- 
    99100      IF( ln_ligvar ) THEN 
    100 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    101          DO jk = 1, jpk 
    102             DO jj = 1, jpj 
    103                DO ji = 1, jpi 
    104                   ztotlig(ji,jj,jk) =  0.09 * trb(ji,jj,jk,jpdoc) * 1E6 + ligand * 1E9 
    105                   ztotlig(ji,jj,jk) =  MIN( ztotlig(ji,jj,jk), 10. ) 
    106                END DO 
    107             END DO 
    108          END DO 
     101         ztotlig(:,:,:) =  0.09 * trb(:,:,:,jpdoc) * 1E6 + ligand * 1E9 
     102         ztotlig(:,:,:) =  MIN( ztotlig(:,:,:), 10. ) 
    109103      ELSE 
    110         IF( ln_ligand ) THEN 
    111 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    112            DO jk = 1, jpk 
    113               DO jj = 1, jpj 
    114                  DO ji = 1, jpi 
    115                     ztotlig(ji,jj,jk) = trb(ji,jj,jk,jplgw) * 1E9 
    116                  END DO 
    117               END DO 
    118            END DO 
    119         ELSE               
    120 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    121            DO jk = 1, jpk 
    122               DO jj = 1, jpj 
    123                  DO ji = 1, jpi 
    124                     ztotlig(ji,jj,jk) = ligand * 1E9 
    125                  END DO 
    126               END DO 
    127            END DO 
     104        IF( ln_ligand ) THEN  ;   ztotlig(:,:,:) = trb(:,:,:,jplgw) * 1E9 
     105        ELSE                  ;   ztotlig(:,:,:) = ligand * 1E9 
    128106        ENDIF 
    129107      ENDIF 
    130108 
    131109      IF( ln_fechem ) THEN 
    132          CALL wrk_alloc( jpi, jpj,      zstrn, zstrn2 ) 
    133          CALL wrk_alloc( jpi, jpj, jpk, zFe2, zFeL2, zTL2, zFeP ) 
    134110         ! compute the day length depending on latitude and the day 
    135111         zrum = REAL( nday_year - 80, wp ) / REAL( nyear_len(1), wp ) 
    136112         zcodel = ASIN(  SIN( zrum * rpi * 2._wp ) * SIN( rad * 23.5_wp )  ) 
    137113 
    138 !$OMP PARALLEL 
    139 !$OMP DO schedule(static) private(jk,jj,ji) 
    140          DO jk = 1, jpk 
    141             DO jj = 1, jpj 
    142                DO ji = 1, jpi 
    143                   zFe2 (ji,jj,jk) = 0. 
    144                   zFeL2(ji,jj,jk) = 0. 
    145                   zTL2 (ji,jj,jk) = 0. 
    146                   zFeP (ji,jj,jk) = 0. 
    147                END DO 
    148             END DO 
    149          END DO 
    150114         ! day length in hours 
    151 !$OMP DO schedule(static) private(jj,ji) 
    152          DO jj = 1, jpj 
    153             DO ji = 1, jpi 
    154                zstrn(ji,jj) = 0. 
    155             END DO 
    156          END DO 
    157 !$OMP DO schedule(static) private(jj,ji,zargu) 
     115         zstrn(:,:) = 0. 
    158116         DO jj = 1, jpj 
    159117            DO ji = 1, jpi 
     
    165123 
    166124         ! Maximum light intensity 
    167 !$OMP DO schedule(static) private(jj,ji) 
    168          DO jj = 1, jpj 
    169             DO ji = 1, jpi 
    170                zstrn2(ji,jj) = zstrn(ji,jj) / 24. 
    171                IF( zstrn(ji,jj) < 1.e0 ) zstrn(ji,jj) = 24. 
    172                zstrn(ji,jj) = 24. / zstrn(ji,jj) 
    173             END DO 
    174          END DO 
     125         zstrn2(:,:) = zstrn(:,:) / 24. 
     126         WHERE( zstrn(:,:) < 1.e0 ) zstrn(:,:) = 24. 
     127         zstrn(:,:) = 24. / zstrn(:,:) 
    175128 
    176129         ! ------------------------------------------------------------ 
     
    180133         ! ------------------------------------------------------------ 
    181134         DO jn = 1, 2 
    182 !$OMP DO schedule(static) private(jk,jj,ji,zzstrn2,ztligand,zph,zoxy,zkox,zkph2,zkph1,ztfe,za) & 
    183 !$OMP& private(zb,zc,zkappa1,zkappa2,za2,za1,za0,zp,zq,zp3,zq2,zd,zr,zphi,zxs,zfff,jic,zfunc) & 
    184 !$OMP& private(zlight,zzFe3,zzFep,zzFeL2,zzFeL1,zzFe2) 
    185135          DO jk = 1, jpkm1 
    186136            DO jj = 1, jpj 
     
    263213         END DO 
    264214         END DO 
    265 !$OMP END PARALLEL 
    266215      ELSE 
    267216         ! ------------------------------------------------------------ 
     
    270219         ! Chemistry is supposed to be fast enough to be at equilibrium 
    271220         ! ------------------------------------------------------------ 
    272 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji,zkeq,zfesatur,ztfe) 
    273221         DO jk = 1, jpkm1 
    274222            DO jj = 1, jpj 
     
    291239 
    292240      zdust = 0.         ! if no dust available 
    293 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji,zfeequi,zfecoll,zhplus,fe3sol,ztrc,zdust) & 
    294 !$OMP& private(zlam1b,zscave,zdenom1,zdenom2,zlamfac,zdep,zcoag,zlam1a,zaggdfea,zaggdfeb) 
    295241      DO jk = 1, jpkm1 
    296242         DO jj = 1, jpj 
     
    362308      !  Define the bioavailable fraction of iron 
    363309      !  ---------------------------------------- 
    364       IF( ln_fechem ) THEN   
    365 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    366          DO jk = 1, jpk 
    367             DO jj = 1, jpj 
    368                DO ji = 1, jpi 
    369                   biron(ji,jj,jk) = MAX( 0., trb(ji,jj,jk,jpfer) - zFeP(ji,jj,jk) * 1E-9 ) 
    370                END DO 
    371             END DO 
    372          END DO 
    373       ELSE                   
    374 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    375          DO jk = 1, jpk 
    376             DO jj = 1, jpj 
    377                DO ji = 1, jpi 
    378                   biron(ji,jj,jk) = trb(ji,jj,jk,jpfer)  
    379                END DO 
    380             END DO 
    381          END DO 
     310      IF( ln_fechem ) THEN  ;  biron(:,:,:) = MAX( 0., trb(:,:,:,jpfer) - zFeP(:,:,:) * 1E-9 ) 
     311      ELSE                  ;  biron(:,:,:) = trb(:,:,:,jpfer)  
    382312      ENDIF 
    383313      ! 
    384314      IF( ln_ligand ) THEN 
    385315         ! 
    386 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji,zlam1a,zlam1b,zligco,zaggliga,zaggligb) 
    387316         DO jk = 1, jpkm1 
    388317            DO jj = 1, jpj 
     
    402331         ! 
    403332         IF( .NOT.ln_fechem) THEN 
    404 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    405             DO jk = 1, jpk 
    406                DO jj = 1, jpj 
    407                   DO ji = 1, jpi 
    408                      plig(ji,jj,jk) =  MAX( 0., ( ( zFeL1(ji,jj,jk) * 1E-9 ) / ( trb(ji,jj,jk,jpfer) +rtrn ) ) ) 
    409                      plig(ji,jj,jk) =  MAX( 0. , plig(ji,jj,jk) ) 
    410                   END DO 
    411                END DO 
    412             END DO 
     333            plig(:,:,:) =  MAX( 0., ( ( zFeL1(:,:,:) * 1E-9 ) / ( trb(:,:,:,jpfer) +rtrn ) ) ) 
     334            plig(:,:,:) =  MAX( 0. , plig(:,:,:) ) 
    413335         ENDIF 
    414336         ! 
Note: See TracChangeset for help on using the changeset viewer.