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 10321 for NEMO/branches/UKMO/NEMO4_beta_mirror/src/TOP/PISCES/P4Z/p4zsms.F90 – NEMO

Ignore:
Timestamp:
2018-11-16T15:59:30+01:00 (5 years ago)
Author:
davestorkey
Message:

UKMO/NEMO4_beta_mirror: Update to version 10279 of the trunk.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/UKMO/NEMO4_beta_mirror/src/TOP/PISCES/P4Z/p4zsms.F90

    • Property svn:keywords set to Id
    r9950 r10321  
    4040 
    4141   !!---------------------------------------------------------------------- 
    42    !! NEMO/TOP 3.3 , NEMO Consortium (2018) 
     42   !! NEMO/TOP 4.0 , NEMO Consortium (2018) 
    4343   !! $Id$ 
    44    !! Software governed by the CeCILL licence (./LICENSE) 
     44   !! Software governed by the CeCILL license (see ./LICENSE) 
    4545   !!---------------------------------------------------------------------- 
    4646CONTAINS 
     
    101101      ENDIF 
    102102      ! 
     103      IF( ll_sbc ) CALL p4z_sbc( kt )   ! external sources of nutrients  
     104      ! 
     105#if ! defined key_sed_off 
    103106      CALL p4z_che              ! computation of chemical constants 
    104107      CALL p4z_int( kt )        ! computation of various rates for biogeochemistry 
    105108      ! 
    106       IF( ll_sbc ) CALL p4z_sbc( kt )   ! external sources of nutrients  
    107  
    108109      DO jnt = 1, nrdttrc          ! Potential time splitting if requested 
    109110         ! 
     
    149150         END DO 
    150151      END IF 
    151       ! 
    152       IF( lk_sed ) THEN  
     152#endif 
     153      ! 
     154      IF( ln_sediment ) THEN  
    153155         ! 
    154156         CALL sed_model( kt )     !  Main program of Sediment model 
     157         ! 
     158         IF( ln_top_euler ) THEN 
     159            DO jn = jp_pcs0, jp_pcs1 
     160               trn(:,:,:,jn) = trb(:,:,:,jn) 
     161            END DO 
     162         ENDIF 
    155163         ! 
    156164      ENDIF 
     
    352360      IF(lwp)  WRITE(numout,*) 
    353361 
    354       IF( cn_cfg == "orca" .AND. .NOT. lk_c1d ) THEN      ! ORCA configuration (not 1D) ! 
    355          !                                                ! --------------------------- ! 
    356          ! set total alkalinity, phosphate, nitrate & silicate 
    357          zarea          = 1._wp / glob_sum( cvol(:,:,:) ) * 1e6               
    358  
    359          zalksumn = glob_sum( trn(:,:,:,jptal) * cvol(:,:,:)  ) * zarea 
    360          zpo4sumn = glob_sum( trn(:,:,:,jppo4) * cvol(:,:,:)  ) * zarea * po4r 
    361          zno3sumn = glob_sum( trn(:,:,:,jpno3) * cvol(:,:,:)  ) * zarea * rno3 
    362          zsilsumn = glob_sum( trn(:,:,:,jpsil) * cvol(:,:,:)  ) * zarea 
     362      IF( cn_cfg == "ORCA" .OR. cn_cfg == "orca") THEN 
     363         IF( .NOT. lk_c1d ) THEN      ! ORCA configuration (not 1D) ! 
     364            !                                                ! --------------------------- ! 
     365            ! set total alkalinity, phosphate, nitrate & silicate 
     366            zarea          = 1._wp / glob_sum( cvol(:,:,:) ) * 1e6               
     367 
     368            zalksumn = glob_sum( trn(:,:,:,jptal) * cvol(:,:,:)  ) * zarea 
     369            zpo4sumn = glob_sum( trn(:,:,:,jppo4) * cvol(:,:,:)  ) * zarea * po4r 
     370            zno3sumn = glob_sum( trn(:,:,:,jpno3) * cvol(:,:,:)  ) * zarea * rno3 
     371            zsilsumn = glob_sum( trn(:,:,:,jpsil) * cvol(:,:,:)  ) * zarea 
    363372  
    364          IF(lwp) WRITE(numout,*) '       TALKN mean : ', zalksumn 
    365          trn(:,:,:,jptal) = trn(:,:,:,jptal) * alkmean / zalksumn 
    366  
    367          IF(lwp) WRITE(numout,*) '       PO4N  mean : ', zpo4sumn 
    368          trn(:,:,:,jppo4) = trn(:,:,:,jppo4) * po4mean / zpo4sumn 
    369  
    370          IF(lwp) WRITE(numout,*) '       NO3N  mean : ', zno3sumn 
    371          trn(:,:,:,jpno3) = trn(:,:,:,jpno3) * no3mean / zno3sumn 
    372  
    373          IF(lwp) WRITE(numout,*) '       SiO3N mean : ', zsilsumn 
    374          trn(:,:,:,jpsil) = MIN( 400.e-6,trn(:,:,:,jpsil) * silmean / zsilsumn ) 
    375          ! 
    376          ! 
    377          IF( .NOT. ln_top_euler ) THEN 
    378             zalksumb = glob_sum( trb(:,:,:,jptal) * cvol(:,:,:)  ) * zarea 
    379             zpo4sumb = glob_sum( trb(:,:,:,jppo4) * cvol(:,:,:)  ) * zarea * po4r 
    380             zno3sumb = glob_sum( trb(:,:,:,jpno3) * cvol(:,:,:)  ) * zarea * rno3 
    381             zsilsumb = glob_sum( trb(:,:,:,jpsil) * cvol(:,:,:)  ) * zarea 
     373            IF(lwp) WRITE(numout,*) '       TALKN mean : ', zalksumn 
     374            trn(:,:,:,jptal) = trn(:,:,:,jptal) * alkmean / zalksumn 
     375 
     376            IF(lwp) WRITE(numout,*) '       PO4N  mean : ', zpo4sumn 
     377            trn(:,:,:,jppo4) = trn(:,:,:,jppo4) * po4mean / zpo4sumn 
     378 
     379            IF(lwp) WRITE(numout,*) '       NO3N  mean : ', zno3sumn 
     380            trn(:,:,:,jpno3) = trn(:,:,:,jpno3) * no3mean / zno3sumn 
     381 
     382            IF(lwp) WRITE(numout,*) '       SiO3N mean : ', zsilsumn 
     383            trn(:,:,:,jpsil) = MIN( 400.e-6,trn(:,:,:,jpsil) * silmean / zsilsumn ) 
     384            ! 
     385            ! 
     386            IF( .NOT. ln_top_euler ) THEN 
     387               zalksumb = glob_sum( trb(:,:,:,jptal) * cvol(:,:,:)  ) * zarea 
     388               zpo4sumb = glob_sum( trb(:,:,:,jppo4) * cvol(:,:,:)  ) * zarea * po4r 
     389               zno3sumb = glob_sum( trb(:,:,:,jpno3) * cvol(:,:,:)  ) * zarea * rno3 
     390               zsilsumb = glob_sum( trb(:,:,:,jpsil) * cvol(:,:,:)  ) * zarea 
    382391  
    383             IF(lwp) WRITE(numout,*) ' ' 
    384             IF(lwp) WRITE(numout,*) '       TALKB mean : ', zalksumb 
    385             trb(:,:,:,jptal) = trb(:,:,:,jptal) * alkmean / zalksumb 
    386  
    387             IF(lwp) WRITE(numout,*) '       PO4B  mean : ', zpo4sumb 
    388             trb(:,:,:,jppo4) = trb(:,:,:,jppo4) * po4mean / zpo4sumb 
    389  
    390             IF(lwp) WRITE(numout,*) '       NO3B  mean : ', zno3sumb 
    391             trb(:,:,:,jpno3) = trb(:,:,:,jpno3) * no3mean / zno3sumb 
    392  
    393             IF(lwp) WRITE(numout,*) '       SiO3B mean : ', zsilsumb 
    394             trb(:,:,:,jpsil) = MIN( 400.e-6,trb(:,:,:,jpsil) * silmean / zsilsumb ) 
     392               IF(lwp) WRITE(numout,*) ' ' 
     393               IF(lwp) WRITE(numout,*) '       TALKB mean : ', zalksumb 
     394               trb(:,:,:,jptal) = trb(:,:,:,jptal) * alkmean / zalksumb 
     395 
     396               IF(lwp) WRITE(numout,*) '       PO4B  mean : ', zpo4sumb 
     397               trb(:,:,:,jppo4) = trb(:,:,:,jppo4) * po4mean / zpo4sumb 
     398 
     399               IF(lwp) WRITE(numout,*) '       NO3B  mean : ', zno3sumb 
     400               trb(:,:,:,jpno3) = trb(:,:,:,jpno3) * no3mean / zno3sumb 
     401 
     402               IF(lwp) WRITE(numout,*) '       SiO3B mean : ', zsilsumb 
     403               trb(:,:,:,jpsil) = MIN( 400.e-6,trb(:,:,:,jpsil) * silmean / zsilsumb ) 
     404           ENDIF 
    395405        ENDIF 
    396406        ! 
Note: See TracChangeset for help on using the changeset viewer.