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

    r7698 r7753  
    3232   !!---------------------------------------------------------------------- 
    3333   !! NEMO/TOP 3.3 , NEMO Consortium (2010) 
    34    !! $Id$ 
     34   !! $Id$  
    3535   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
    3636   !!---------------------------------------------------------------------- 
     
    8484 
    8585 
    86 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    87       DO jj = 1, jpj 
    88          DO ji = 1, jpi 
    89             zdenit2d(ji,jj) = 0.e0 
    90             zbureff (ji,jj) = 0.e0 
    91             zwork1  (ji,jj) = 0.e0 
    92             zwork2  (ji,jj) = 0.e0 
    93             zwork3  (ji,jj) = 0.e0 
    94             zsedsi  (ji,jj) = 0.e0 
    95             zsedcal (ji,jj) = 0.e0 
    96             zsedc   (ji,jj) = 0.e0 
    97          END DO 
    98       END DO 
     86      zdenit2d(:,:) = 0.e0 
     87      zbureff (:,:) = 0.e0 
     88      zwork1  (:,:) = 0.e0 
     89      zwork2  (:,:) = 0.e0 
     90      zwork3  (:,:) = 0.e0 
     91      zsedsi  (:,:) = 0.e0 
     92      zsedcal (:,:) = 0.e0 
     93      zsedc   (:,:) = 0.e0 
     94 
    9995 
    10096      ! Iron input/uptake due to sea ice : Crude parameterization based on Lancelot et al. 
     
    104100         CALL wrk_alloc( jpi, jpj, zironice ) 
    105101         !                                               
    106 !$OMP PARALLEL  
    107 !$OMP DO schedule(static) private(jj,ji,zdep,zwflux,zfminus,zfplus) 
    108102         DO jj = 1, jpj 
    109103            DO ji = 1, jpi 
     
    116110         END DO 
    117111         ! 
    118 !$OMP DO schedule(static) private(jj,ji) 
    119       DO jj = 1, jpj 
    120          DO ji = 1, jpi 
    121             tra(ji,jj,1,jpfer) = tra(ji,jj,1,jpfer) + zironice(ji,jj) 
    122          END DO 
    123       END DO 
    124 !$OMP END PARALLEL 
     112         tra(:,:,1,jpfer) = tra(:,:,1,jpfer) + zironice(:,:)  
    125113         !  
    126114         IF( lk_iomput .AND. knt == nrdttrc .AND. iom_use( "Ironice" ) )   & 
     
    139127         !                                              ! Iron and Si deposition at the surface 
    140128         IF( ln_solub ) THEN 
    141 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    142            DO jj = 1, jpj 
    143               DO ji = 1, jpi 
    144                  zirondep(ji,jj,1) = solub(ji,jj) * dust(ji,jj) * mfrac * rfact2 / e3t_n(ji,jj,1) / 55.85 + 3.e-10 * r1_ryyss 
    145               END DO 
    146            END DO 
     129            zirondep(:,:,1) = solub(:,:) * dust(:,:) * mfrac * rfact2 / e3t_n(:,:,1) / 55.85 + 3.e-10 * r1_ryyss  
    147130         ELSE 
    148 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    149            DO jj = 1, jpj 
    150               DO ji = 1, jpi 
    151                  zirondep(ji,jj,1) = dustsolub  * dust(ji,jj) * mfrac * rfact2 / e3t_n(ji,jj,1) / 55.85 + 3.e-10 * r1_ryyss 
    152               END DO 
    153            END DO 
     131            zirondep(:,:,1) = dustsolub  * dust(:,:) * mfrac * rfact2 / e3t_n(:,:,1) / 55.85 + 3.e-10 * r1_ryyss  
    154132         ENDIF 
    155 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    156          DO jj = 1, jpj 
    157             DO ji = 1, jpi 
    158                zsidep(ji,jj) = 8.8 * 0.075 * dust(ji,jj) * mfrac * rfact2 / e3t_n(ji,jj,1) / 28.1 
    159                zpdep (ji,jj,1) = 0.1 * 0.021 * dust(ji,jj) * mfrac * rfact2 / e3t_n(ji,jj,1) / 31. / po4r 
    160             END DO 
    161          END DO 
     133         zsidep(:,:)   = 8.8 * 0.075 * dust(:,:) * mfrac * rfact2 / e3t_n(:,:,1) / 28.1  
     134         zpdep (:,:,1) = 0.1 * 0.021 * dust(:,:) * mfrac * rfact2 / e3t_n(:,:,1) / 31. / po4r  
    162135         !                                              ! Iron solubilization of particles in the water column 
    163136         !                                              ! dust in kg/m2/s ---> 1/55.85 to put in mol/Fe ;  wdust in m/j 
    164137         zwdust = 0.03 * rday / ( wdust * 55.85 ) / ( 270. * rday ) 
    165 !$OMP PARALLEL  
    166 !$OMP DO schedule(static) private(jk,jj,ji) 
    167138         DO jk = 2, jpkm1 
    168             DO jj = 1, jpj 
    169                DO ji = 1, jpi 
    170                   zirondep(ji,jj,jk) = dust(ji,jj) * mfrac * zwdust * rfact2 * EXP( -gdept_n(ji,jj,jk) / 540. ) 
    171                   zpdep   (ji,jj,jk) = zirondep(ji,jj,jk) * 0.023 
    172                END DO 
    173             END DO 
     139            zirondep(:,:,jk) = dust(:,:) * mfrac * zwdust * rfact2 * EXP( -gdept_n(:,:,jk) / 540. ) 
     140            zpdep   (:,:,jk) = zirondep(:,:,jk) * 0.023 
    174141         END DO 
    175142         !                                              ! Iron solubilization of particles in the water column 
    176 !$OMP DO schedule(static) private(jj,ji) 
    177          DO jj = 1, jpj 
    178             DO ji = 1, jpi 
    179                tra(ji,jj,1,jpsil) = tra(ji,jj,1,jpsil) + zsidep  (ji,jj) 
    180             END DO 
    181          END DO 
    182 !$OMP DO schedule(static) private(jk,jj,ji) 
    183          DO jk = 1, jpk 
    184             DO jj = 1, jpj 
    185                DO ji = 1, jpi 
    186                   tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) + zpdep   (ji,jj,jk) 
    187                   tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + zirondep(ji,jj,jk) 
    188                END DO 
    189             END DO 
    190          END DO 
    191 !$OMP END PARALLEL  
     143         tra(:,:,1,jpsil) = tra(:,:,1,jpsil) + zsidep  (:,:) 
     144         tra(:,:,:,jppo4) = tra(:,:,:,jppo4) + zpdep   (:,:,:) 
     145         tra(:,:,:,jpfer) = tra(:,:,:,jpfer) + zirondep(:,:,:)  
    192146         !  
    193147         IF( lk_iomput ) THEN 
     
    207161      ! ---------------------------------------------------------- 
    208162      IF( ln_river ) THEN 
    209 !$OMP PARALLEL DO schedule(static) private(jj,ji,jk) 
    210163         DO jj = 1, jpj 
    211164            DO ji = 1, jpi 
     
    221174         ENDDO 
    222175         IF( ln_p5z ) THEN 
    223 !$OMP PARALLEL DO schedule(static) private(jj,ji,jk) 
    224176            DO jj = 1, jpj 
    225177               DO ji = 1, jpi 
     
    237189      ! ---------------------------------------------------------- 
    238190      IF( ln_ndepo ) THEN 
    239 !$OMP PARALLEL DO schedule(static) private(jj,ji) 
    240          DO jj = 1, jpj 
    241             DO ji = 1, jpi 
    242                tra(ji,jj,1,jpno3) = tra(ji,jj,1,jpno3) + nitdep(ji,jj) * rfact2 
    243                tra(ji,jj,1,jptal) = tra(ji,jj,1,jptal) - rno3 * nitdep(ji,jj) * rfact2 
    244             ENDDO 
    245          ENDDO 
     191         tra(:,:,1,jpno3) = tra(:,:,1,jpno3) + nitdep(:,:) * rfact2 
     192         tra(:,:,1,jptal) = tra(:,:,1,jptal) - rno3 * nitdep(:,:) * rfact2 
    246193      ENDIF 
    247194 
     
    249196      ! ------------------------------------------------------ 
    250197      IF( ln_ironsed ) THEN 
    251 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    252          DO jk = 1, jpk 
    253             DO jj = 1, jpj 
    254                DO ji = 1, jpi 
    255                   tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + ironsed(ji,jj,jk) * rfact2 
    256                END DO 
    257             END DO 
    258          END DO 
    259  
    260          IF( ln_ligand ) THEN 
    261 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    262             DO jk = 1, jpk 
    263                DO jj = 1, jpj 
    264                   DO ji = 1, jpi 
    265                      tra(ji,jj,jk,jpfep) = tra(ji,jj,jk,jpfep) + ( ironsed(ji,jj,jk) * fep_rats ) * rfact2 
    266                   END DO 
    267                END DO 
    268             END DO 
    269          END IF 
     198                         tra(:,:,:,jpfer) = tra(:,:,:,jpfer) + ironsed(:,:,:) * rfact2 
     199         IF( ln_ligand ) tra(:,:,:,jpfep) = tra(:,:,:,jpfep) + ( ironsed(:,:,:) * fep_rats ) * rfact2 
    270200         ! 
    271201         IF( lk_iomput .AND. knt == nrdttrc .AND. iom_use( "Ironsed" ) )   & 
     
    276206      ! ------------------------------------------------------ 
    277207      IF( ln_hydrofe ) THEN 
    278 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    279          DO jk = 1, jpk 
    280             DO jj = 1, jpj 
    281                DO ji = 1, jpi 
    282                   tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + hydrofe(ji,jj,jk) * rfact2 
    283                END DO 
    284             END DO 
    285          END DO 
     208            tra(:,:,:,jpfer) = tra(:,:,:,jpfer) + hydrofe(:,:,:) * rfact2 
    286209         IF( ln_ligand ) THEN 
    287 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    288             DO jk = 1, jpk 
    289                DO jj = 1, jpj 
    290                   DO ji = 1, jpi 
    291                      tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + ( hydrofe(ji,jj,jk) * fep_rath ) * rfact2 
    292                      tra(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) + ( hydrofe(ji,jj,jk) * lgw_rath ) * rfact2 
    293                   END DO 
    294                END DO 
    295             END DO 
     210            tra(:,:,:,jpfep) = tra(:,:,:,jpfep) + ( hydrofe(:,:,:) * fep_rath ) * rfact2 
     211            tra(:,:,:,jplgw) = tra(:,:,:,jplgw) + ( hydrofe(:,:,:) * lgw_rath ) * rfact2 
    296212         ENDIF 
    297213         ! 
     
    302218      ! OA: Warning, the following part is necessary to avoid CFL problems above the sediments 
    303219      ! -------------------------------------------------------------------- 
    304 !$OMP PARALLEL DO schedule(static) private(jj,ji,ikt,zdep) 
    305220      DO jj = 1, jpj 
    306221         DO ji = 1, jpi 
     
    314229      ! 
    315230      IF( ln_ligand ) THEN 
    316 !$OMP PARALLEL DO schedule(static) private(jj,ji,ikt,zdep) 
    317231         DO jj = 1, jpj 
    318232            DO ji = 1, jpi 
     
    328242         ! Computation of the fraction of organic matter that is permanently buried from Dunne's model 
    329243         ! ------------------------------------------------------- 
    330 !$OMP PARALLEL 
    331 !$OMP DO schedule(static) private(jj,ji,ikt,zflx,zo2,zno3,zdep) 
    332244         DO jj = 1, jpj 
    333245            DO ji = 1, jpi 
     
    355267           ! The factor for calcite comes from the alkalinity effect 
    356268           ! ------------------------------------------------------------- 
    357 !$OMP DO schedule(static) private(jj,ji,ikt,zfactcal) 
    358269           DO jj = 1, jpj 
    359270              DO ji = 1, jpi 
     
    369280            END DO 
    370281         END DO 
    371 !$OMP END PARALLEL 
    372282         zsumsedsi  = glob_sum( zwork1(:,:) * e1e2t(:,:) ) * r1_rday 
    373283         zsumsedpo4 = glob_sum( zwork2(:,:) * e1e2t(:,:) ) * r1_rday 
     
    381291      IF( .NOT.lk_sed )  zrivsil =  1._wp - ( sumdepsi + rivdsiinput * r1_ryyss ) / ( zsumsedsi + rtrn ) 
    382292 
    383 !$OMP PARALLEL DO schedule(static) private(jj,ji,ikt,zdep,zwsc,zsiloss,zcaloss)  
    384293      DO jj = 1, jpj 
    385294         DO ji = 1, jpi 
     
    396305      ! 
    397306      IF( .NOT.lk_sed ) THEN 
    398 !$OMP PARALLEL DO schedule(static) private(jj,ji,ikt,zdep,zwsc,zsiloss,zcaloss,zfactcal,zrivalk) 
    399307         DO jj = 1, jpj 
    400308            DO ji = 1, jpi 
     
    417325      ENDIF 
    418326      ! 
    419 !$OMP PARALLEL DO schedule(static) private(jj,ji,ikt,zdep,zws3,zws4) 
    420327      DO jj = 1, jpj 
    421328         DO ji = 1, jpi 
     
    432339      ! 
    433340      IF( ln_ligand ) THEN 
    434 !$OMP PARALLEL DO schedule(static) private(jj,ji,ikt,zdep,zwssfep) 
    435341         DO jj = 1, jpj 
    436342            DO ji = 1, jpi 
     
    444350      ! 
    445351      IF( ln_p5z ) THEN 
    446 !$OMP PARALLEL DO schedule(static) private(jj,ji,ikt,zdep,zws3,zws4) 
    447352         DO jj = 1, jpj 
    448353            DO ji = 1, jpi 
     
    462367         ! The 0.5 factor in zpdenit and zdenitt is to avoid negative NO3 concentration after both denitrification 
    463368         ! in the sediments and just above the sediments. Not very clever, but simpliest option. 
    464 !$OMP PARALLEL DO schedule(static) private(jj,ji,ikt,zdep,zws3,zws4,zrivno3,zwstpoc,zpdenit,z1pdenit,zolimit,zdenitt,zwstpop,zwstpon) 
    465369         DO jj = 1, jpj 
    466370            DO ji = 1, jpi 
     
    498402      ! Small source iron from particulate inorganic iron 
    499403      !----------------------------------- 
    500 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    501404      DO jk = 1, jpkm1 
    502          DO jj = 1, jpj 
    503             DO ji = 1, jpi 
    504                zlight (ji,jj,jk) =  ( 1.- EXP( -etot_ndcy(ji,jj,jk) / diazolight ) ) * ( 1. - fr_i(ji,jj) )  
    505                zsoufer(ji,jj,jk) = zlight(ji,jj,jk) * 2E-11 / ( 2E-11 + biron(ji,jj,jk) ) 
    506            END DO 
    507          END DO 
     405         zlight (:,:,jk) =  ( 1.- EXP( -etot_ndcy(:,:,jk) / diazolight ) ) * ( 1. - fr_i(:,:) )  
     406         zsoufer(:,:,jk) = zlight(:,:,jk) * 2E-11 / ( 2E-11 + biron(:,:,jk) ) 
    508407      ENDDO 
    509408      IF( ln_p4z ) THEN 
    510 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji,zlim,zfact,ztrfer,ztrpo4s) 
    511409         DO jk = 1, jpkm1 
    512410            DO jj = 1, jpj 
     
    525423         END DO 
    526424      ELSE       ! p5z 
    527 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji,ztemp,zmudia,xdianh4,xdiano3,zlim,zfact,ztrfer,ztrdp) 
    528425         DO jk = 1, jpkm1 
    529426            DO jj = 1, jpj 
     
    551448      ! ---------------------------------------- 
    552449      IF( ln_p4z ) THEN 
    553 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji,zfact) 
    554450         DO jk = 1, jpkm1 
    555451            DO jj = 1, jpj 
     
    566462         END DO 
    567463      ELSE    ! p5z 
    568 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji,zfact) 
    569464         DO jk = 1, jpkm1 
    570465            DO jj = 1, jpj 
     
    602497            IF( iom_use("Nfix"   ) ) CALL iom_put( "Nfix", nitrpot(:,:,:) * nitrfix * zfact * tmask(:,:,:) )  ! nitrogen fixation  
    603498            IF( iom_use("INTNFIX") ) THEN   ! nitrogen fixation rate in ocean ( vertically integrated ) 
    604 !$OMP PARALLEL 
    605 !$OMP DO schedule(static) private(jj,ji)  
    606                DO jj = 1, jpj 
    607                   DO ji = 1, jpi 
    608                      zwork1(ji,jj) = 0. 
    609                   END DO 
     499               zwork1(:,:) = 0. 
     500               DO jk = 1, jpkm1 
     501                 zwork1(:,:) = zwork1(:,:) + nitrpot(:,:,jk) * nitrfix * zfact * e3t_n(:,:,jk) * tmask(:,:,jk) 
    610502               ENDDO 
    611                DO jk = 1, jpkm1 
    612 !$OMP DO schedule(static) private(jj,ji)  
    613                   DO jj = 1, jpj 
    614                      DO ji = 1, jpi 
    615                         zwork1(ji,jj) = zwork1(ji,jj) + nitrpot(ji,jj,jk) * nitrfix * zfact * e3t_n(ji,jj,jk) * tmask(ji,jj,jk) 
    616                      END DO 
    617                   END DO 
    618                ENDDO 
    619 !$OMP END PARALLEL 
    620503               CALL iom_put( "INTNFIX" , zwork1 )  
    621504            ENDIF 
Note: See TracChangeset for help on using the changeset viewer.