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 10345 for NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/TOP/PISCES/P4Z/p4zsms.F90 – NEMO

Ignore:
Timestamp:
2018-11-21T11:25:53+01:00 (5 years ago)
Author:
smasson
Message:

dev_r10164_HPC09_ESIWACE_PREP_MERGE: merge with trunk@10344, see #2133

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/TOP/PISCES/P4Z/p4zsms.F90

    r10314 r10345  
    7474            CALL p4z_che                              ! initialize the chemical constants 
    7575            CALL ahini_for_at(hi)   !  set PH at kt=nit000 
     76            t_oce_co2_flx_cum = 0._wp 
    7677        ELSE 
    7778            CALL p4z_rst( nittrc000, 'READ' )  !* read or initialize all required fields 
     
    101102      ENDIF 
    102103      ! 
     104      IF( ll_sbc ) CALL p4z_sbc( kt )   ! external sources of nutrients  
     105      ! 
     106#if ! defined key_sed_off 
    103107      CALL p4z_che              ! computation of chemical constants 
    104108      CALL p4z_int( kt )        ! computation of various rates for biogeochemistry 
    105109      ! 
    106       IF( ll_sbc ) CALL p4z_sbc( kt )   ! external sources of nutrients  
    107  
    108110      DO jnt = 1, nrdttrc          ! Potential time splitting if requested 
    109111         ! 
     
    149151         END DO 
    150152      END IF 
    151       ! 
    152       IF( lk_sed ) THEN  
     153#endif 
     154      ! 
     155      IF( ln_sediment ) THEN  
    153156         ! 
    154157         CALL sed_model( kt )     !  Main program of Sediment model 
     158         ! 
     159         IF( ln_top_euler ) THEN 
     160            DO jn = jp_pcs0, jp_pcs1 
     161               trn(:,:,:,jn) = trb(:,:,:,jn) 
     162            END DO 
     163         ENDIF 
    155164         ! 
    156165      ENDIF 
     
    352361      IF(lwp)  WRITE(numout,*) 
    353362 
    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( 'p4zsms', cvol(:,:,:) ) * 1e6               
    358  
    359          zalksumn = glob_sum( 'p4zsms', trn(:,:,:,jptal) * cvol(:,:,:)  ) * zarea 
    360          zpo4sumn = glob_sum( 'p4zsms', trn(:,:,:,jppo4) * cvol(:,:,:)  ) * zarea * po4r 
    361          zno3sumn = glob_sum( 'p4zsms', trn(:,:,:,jpno3) * cvol(:,:,:)  ) * zarea * rno3 
    362          zsilsumn = glob_sum( 'p4zsms', trn(:,:,:,jpsil) * cvol(:,:,:)  ) * zarea 
     363      IF( cn_cfg == "ORCA" .OR. cn_cfg == "orca") THEN 
     364         IF( .NOT. lk_c1d ) THEN      ! ORCA configuration (not 1D) ! 
     365            !                                                ! --------------------------- ! 
     366            ! set total alkalinity, phosphate, nitrate & silicate 
     367            zarea          = 1._wp / glob_sum( 'p4zsms', cvol(:,:,:) ) * 1e6               
     368 
     369            zalksumn = glob_sum( 'p4zsms', trn(:,:,:,jptal) * cvol(:,:,:)  ) * zarea 
     370            zpo4sumn = glob_sum( 'p4zsms', trn(:,:,:,jppo4) * cvol(:,:,:)  ) * zarea * po4r 
     371            zno3sumn = glob_sum( 'p4zsms', trn(:,:,:,jpno3) * cvol(:,:,:)  ) * zarea * rno3 
     372            zsilsumn = glob_sum( 'p4zsms', trn(:,:,:,jpsil) * cvol(:,:,:)  ) * zarea 
    363373  
    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( 'p4zsms', trb(:,:,:,jptal) * cvol(:,:,:)  ) * zarea 
    379             zpo4sumb = glob_sum( 'p4zsms', trb(:,:,:,jppo4) * cvol(:,:,:)  ) * zarea * po4r 
    380             zno3sumb = glob_sum( 'p4zsms', trb(:,:,:,jpno3) * cvol(:,:,:)  ) * zarea * rno3 
    381             zsilsumb = glob_sum( 'p4zsms', trb(:,:,:,jpsil) * cvol(:,:,:)  ) * zarea 
     374            IF(lwp) WRITE(numout,*) '       TALKN mean : ', zalksumn 
     375            trn(:,:,:,jptal) = trn(:,:,:,jptal) * alkmean / zalksumn 
     376 
     377            IF(lwp) WRITE(numout,*) '       PO4N  mean : ', zpo4sumn 
     378            trn(:,:,:,jppo4) = trn(:,:,:,jppo4) * po4mean / zpo4sumn 
     379 
     380            IF(lwp) WRITE(numout,*) '       NO3N  mean : ', zno3sumn 
     381            trn(:,:,:,jpno3) = trn(:,:,:,jpno3) * no3mean / zno3sumn 
     382 
     383            IF(lwp) WRITE(numout,*) '       SiO3N mean : ', zsilsumn 
     384            trn(:,:,:,jpsil) = MIN( 400.e-6,trn(:,:,:,jpsil) * silmean / zsilsumn ) 
     385            ! 
     386            ! 
     387            IF( .NOT. ln_top_euler ) THEN 
     388               zalksumb = glob_sum( 'p4zsms', trb(:,:,:,jptal) * cvol(:,:,:)  ) * zarea 
     389               zpo4sumb = glob_sum( 'p4zsms', trb(:,:,:,jppo4) * cvol(:,:,:)  ) * zarea * po4r 
     390               zno3sumb = glob_sum( 'p4zsms', trb(:,:,:,jpno3) * cvol(:,:,:)  ) * zarea * rno3 
     391               zsilsumb = glob_sum( 'p4zsms', trb(:,:,:,jpsil) * cvol(:,:,:)  ) * zarea 
    382392  
    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 ) 
     393               IF(lwp) WRITE(numout,*) ' ' 
     394               IF(lwp) WRITE(numout,*) '       TALKB mean : ', zalksumb 
     395               trb(:,:,:,jptal) = trb(:,:,:,jptal) * alkmean / zalksumb 
     396 
     397               IF(lwp) WRITE(numout,*) '       PO4B  mean : ', zpo4sumb 
     398               trb(:,:,:,jppo4) = trb(:,:,:,jppo4) * po4mean / zpo4sumb 
     399 
     400               IF(lwp) WRITE(numout,*) '       NO3B  mean : ', zno3sumb 
     401               trb(:,:,:,jpno3) = trb(:,:,:,jpno3) * no3mean / zno3sumb 
     402 
     403               IF(lwp) WRITE(numout,*) '       SiO3B mean : ', zsilsumb 
     404               trb(:,:,:,jpsil) = MIN( 400.e-6,trb(:,:,:,jpsil) * silmean / zsilsumb ) 
     405           ENDIF 
    395406        ENDIF 
    396407        ! 
Note: See TracChangeset for help on using the changeset viewer.