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

    r7698 r7753  
    9999      IF( ( neuler == 0 .AND. kt == nittrc000 ) .OR. ln_top_euler ) THEN 
    100100         DO jn = jp_pcs0, jp_pcs1              !   SMS on tracer without Asselin time-filter 
    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                      trb(ji,jj,jk,jn) = trn(ji,jj,jk,jn) 
    106                   END DO 
    107                END DO 
    108             END DO 
     101            trb(:,:,:,jn) = trn(:,:,:,jn) 
    109102         END DO 
    110103      ENDIF 
     
    132125         CALL p4z_flx( kt, jnt )   ! Compute surface fluxes 
    133126         ! 
    134 !$OMP PARALLEL 
    135 !$OMP DO schedule(static) private(jk, jj, ji) 
    136          DO jk = 1, jpk 
    137             DO jj = 1, jpj 
    138                DO ji = 1, jpi 
    139                   xnegtr(ji,jj,jk) = 1.e0 
    140                END DO 
    141             END DO 
    142          END DO 
     127         xnegtr(:,:,:) = 1.e0 
    143128         DO jn = jp_pcs0, jp_pcs1 
    144 !$OMP DO schedule(static) private(jk, jj, ji, ztra) 
    145129            DO jk = 1, jpk 
    146130               DO jj = 1, jpj 
     
    157141         !                                !  
    158142         DO jn = jp_pcs0, jp_pcs1 
    159 !$OMP DO schedule(static) private(jk, jj, ji) 
    160             DO jk = 1, jpk 
    161                DO jj = 1, jpj 
    162                   DO ji = 1, jpi 
    163                      trb(ji,jj,jk,jn) = trb(ji,jj,jk,jn) + xnegtr(ji,jj,jk) * tra(ji,jj,jk,jn) 
    164                   END DO 
    165                END DO 
    166             END DO 
     143           trb(:,:,:,jn) = trb(:,:,:,jn) + xnegtr(:,:,:) * tra(:,:,:,jn) 
    167144         END DO 
    168145        ! 
    169146         DO jn = jp_pcs0, jp_pcs1 
    170 !$OMP DO schedule(static) private(jk, jj, ji) 
    171             DO jk = 1, jpk 
    172                DO jj = 1, jpj 
    173                   DO ji = 1, jpi 
    174                      tra(ji,jj,jk,jn) = 0._wp 
    175                   END DO 
    176                END DO 
    177             END DO 
     147            tra(:,:,:,jn) = 0._wp 
    178148         END DO 
    179 !$OMP END PARALLEL 
    180149         ! 
    181150         IF( ln_top_euler ) THEN 
    182151            DO jn = jp_pcs0, jp_pcs1 
    183 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
    184                DO jk = 1, jpk 
    185                   DO jj = 1, jpj 
    186                      DO ji = 1, jpi 
    187                         trn(ji,jj,jk,jn) = trb(ji,jj,jk,jn) 
    188                      END DO 
    189                   END DO 
    190                END DO 
     152               trn(:,:,:,jn) = trb(:,:,:,jn) 
    191153            END DO 
    192154         ENDIF 
     
    387349      ! 
    388350      INTEGER, INTENT( in )  ::     kt ! time step 
    389       INTEGER ::   ji, jj, jk 
    390351      ! 
    391352      REAL(wp) ::  alkmean = 2426.     ! mean value of alkalinity ( Glodap ; for Goyet 2391. ) 
     
    396357      REAL(wp) :: zarea, zalksumn, zpo4sumn, zno3sumn, zsilsumn 
    397358      REAL(wp) :: zalksumb, zpo4sumb, zno3sumb, zsilsumb 
    398       REAL(wp), POINTER, DIMENSION(:,:,:) :: zctrn_jptal, zctrn_jppo4, zctrn_jppo3, zctrn_jpsil !workspace arrays 
    399       REAL(wp), POINTER, DIMENSION(:,:,:) :: zctrb_jptal, zctrb_jppo4, zctrb_jppo3, zctrb_jpsil !workspace arrays 
    400359      !!--------------------------------------------------------------------- 
    401360 
     
    407366      IF( cn_cfg == "orca" .AND. .NOT. lk_c1d ) THEN      ! ORCA configuration (not 1D) ! 
    408367         !                                                ! --------------------------- ! 
    409          CALL wrk_alloc( jpi, jpj, jpk, zctrn_jptal, zctrn_jppo4, zctrn_jppo3, zctrn_jpsil ) 
    410          CALL wrk_alloc( jpi, jpj, jpk, zctrb_jptal, zctrb_jppo4, zctrb_jppo3, zctrb_jpsil ) 
    411  
    412368         ! set total alkalinity, phosphate, nitrate & silicate 
    413369         zarea          = 1._wp / glob_sum( cvol(:,:,:) ) * 1e6               
    414370 
    415 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    416          DO jk = 1, jpk 
    417             DO jj = 1, jpj 
    418                DO ji = 1, jpi 
    419                   zctrn_jptal(ji,jj,jk) = trn(ji,jj,jk,jptal) * cvol(ji,jj,jk) 
    420                   zctrn_jppo4(ji,jj,jk) = trn(ji,jj,jk,jppo4) * cvol(ji,jj,jk) 
    421                   zctrn_jppo3(ji,jj,jk) = trn(ji,jj,jk,jpno3) * cvol(ji,jj,jk) 
    422                   zctrn_jpsil(ji,jj,jk) = trn(ji,jj,jk,jpsil) * cvol(ji,jj,jk) 
    423                END DO 
    424             END DO 
    425          END DO 
    426  
    427          zalksumn = glob_sum( zctrn_jptal(:,:,:)  ) * zarea 
    428          zpo4sumn = glob_sum( zctrn_jppo4(:,:,:)  ) * zarea * po4r 
    429          zno3sumn = glob_sum( zctrn_jppo3(:,:,:)  ) * zarea * rno3 
    430          zsilsumn = glob_sum( zctrn_jpsil(:,:,:)  ) * zarea 
    431  
    432 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    433          DO jk = 1, jpk 
    434             DO jj = 1, jpj 
    435                DO ji = 1, jpi 
    436                   trn(ji,jj,jk,jpsil) = MIN( 400.e-6,trn(ji,jj,jk,jpsil) * silmean / zsilsumn ) 
    437                   trn(ji,jj,jk,jptal) = trn(ji,jj,jk,jptal) * alkmean / zalksumn 
    438                   trn(ji,jj,jk,jppo4) = trn(ji,jj,jk,jppo4) * po4mean / zpo4sumn 
    439                   trn(ji,jj,jk,jpno3) = trn(ji,jj,jk,jpno3) * no3mean / zno3sumn 
    440                END DO 
    441             END DO 
    442          END DO 
    443  
    444          IF(lwp) THEN 
    445                 WRITE(numout,*) '       TALKN mean : ', zalksumn 
    446                 WRITE(numout,*) '       PO4N  mean : ', zpo4sumn 
    447                 WRITE(numout,*) '       NO3N  mean : ', zno3sumn 
    448                 WRITE(numout,*) '       SiO3N mean : ', zsilsumn 
    449          END IF 
     371         zalksumn = glob_sum( trn(:,:,:,jptal) * cvol(:,:,:)  ) * zarea 
     372         zpo4sumn = glob_sum( trn(:,:,:,jppo4) * cvol(:,:,:)  ) * zarea * po4r 
     373         zno3sumn = glob_sum( trn(:,:,:,jpno3) * cvol(:,:,:)  ) * zarea * rno3 
     374         zsilsumn = glob_sum( trn(:,:,:,jpsil) * cvol(:,:,:)  ) * zarea 
     375  
     376         IF(lwp) WRITE(numout,*) '       TALKN mean : ', zalksumn 
     377         trn(:,:,:,jptal) = trn(:,:,:,jptal) * alkmean / zalksumn 
     378 
     379         IF(lwp) WRITE(numout,*) '       PO4N  mean : ', zpo4sumn 
     380         trn(:,:,:,jppo4) = trn(:,:,:,jppo4) * po4mean / zpo4sumn 
     381 
     382         IF(lwp) WRITE(numout,*) '       NO3N  mean : ', zno3sumn 
     383         trn(:,:,:,jpno3) = trn(:,:,:,jpno3) * no3mean / zno3sumn 
     384 
     385         IF(lwp) WRITE(numout,*) '       SiO3N mean : ', zsilsumn 
     386         trn(:,:,:,jpsil) = MIN( 400.e-6,trn(:,:,:,jpsil) * silmean / zsilsumn ) 
    450387         ! 
    451388         ! 
    452389         IF( .NOT. ln_top_euler ) THEN 
    453 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    454             DO jk = 1, jpk 
    455                DO jj = 1, jpj 
    456                   DO ji = 1, jpi 
    457                      zctrb_jptal(ji,jj,jk) = trb(ji,jj,jk,jptal) * cvol(ji,jj,jk) 
    458                      zctrb_jppo4(ji,jj,jk) = trb(ji,jj,jk,jppo4) * cvol(ji,jj,jk) 
    459                      zctrb_jppo3(ji,jj,jk) = trb(ji,jj,jk,jpno3) * cvol(ji,jj,jk) 
    460                      zctrb_jpsil(ji,jj,jk) = trb(ji,jj,jk,jpsil) * cvol(ji,jj,jk) 
    461                   END DO 
    462                END DO 
    463             END DO 
    464  
    465             zalksumb = glob_sum( zctrb_jptal(:,:,:)  ) * zarea 
    466             zpo4sumb = glob_sum( zctrb_jppo4(:,:,:)  ) * zarea * po4r 
    467             zno3sumb = glob_sum( zctrb_jppo3(:,:,:)  ) * zarea * rno3 
    468             zsilsumb = glob_sum( zctrb_jpsil(:,:,:)  ) * zarea 
    469  
    470 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 
    471             DO jk = 1, jpk 
    472                DO jj = 1, jpj 
    473                   DO ji = 1, jpi 
    474                      trb(ji,jj,jk,jpsil) = MIN( 400.e-6,trb(ji,jj,jk,jpsil) * silmean / zsilsumb ) 
    475                      trb(ji,jj,jk,jptal) = trb(ji,jj,jk,jptal) * alkmean / zalksumb 
    476                      trb(ji,jj,jk,jppo4) = trb(ji,jj,jk,jppo4) * po4mean / zpo4sumb 
    477                      trb(ji,jj,jk,jpno3) = trb(ji,jj,jk,jpno3) * no3mean / zno3sumb 
    478                   END DO 
    479                END DO 
    480             END DO 
    481  
    482             IF(lwp) THEN 
    483                 WRITE(numout,*) ' ' 
    484                 WRITE(numout,*) '       TALKB mean : ', zalksumb 
    485                 WRITE(numout,*) '       PO4B  mean : ', zpo4sumb 
    486                 WRITE(numout,*) '       NO3B  mean : ', zno3sumb 
    487                 WRITE(numout,*) '       SiO3B mean : ', zsilsumb 
    488             END IF 
     390            zalksumb = glob_sum( trb(:,:,:,jptal) * cvol(:,:,:)  ) * zarea 
     391            zpo4sumb = glob_sum( trb(:,:,:,jppo4) * cvol(:,:,:)  ) * zarea * po4r 
     392            zno3sumb = glob_sum( trb(:,:,:,jpno3) * cvol(:,:,:)  ) * zarea * rno3 
     393            zsilsumb = glob_sum( trb(:,:,:,jpsil) * cvol(:,:,:)  ) * zarea 
     394  
     395            IF(lwp) WRITE(numout,*) ' ' 
     396            IF(lwp) WRITE(numout,*) '       TALKB mean : ', zalksumb 
     397            trb(:,:,:,jptal) = trb(:,:,:,jptal) * alkmean / zalksumb 
     398 
     399            IF(lwp) WRITE(numout,*) '       PO4B  mean : ', zpo4sumb 
     400            trb(:,:,:,jppo4) = trb(:,:,:,jppo4) * po4mean / zpo4sumb 
     401 
     402            IF(lwp) WRITE(numout,*) '       NO3B  mean : ', zno3sumb 
     403            trb(:,:,:,jpno3) = trb(:,:,:,jpno3) * no3mean / zno3sumb 
     404 
     405            IF(lwp) WRITE(numout,*) '       SiO3B mean : ', zsilsumb 
     406            trb(:,:,:,jpsil) = MIN( 400.e-6,trb(:,:,:,jpsil) * silmean / zsilsumb ) 
    489407        ENDIF 
    490         ! 
    491         CALL wrk_dealloc( jpi, jpj, jpk, zctrb_jptal, zctrb_jppo4, zctrb_jppo3, zctrb_jpsil ) 
    492         CALL wrk_dealloc( jpi, jpj, jpk, zctrn_jptal, zctrn_jppo4, zctrn_jppo3, zctrn_jpsil ) 
    493408        ! 
    494409      ENDIF 
Note: See TracChangeset for help on using the changeset viewer.