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 10213 for NEMO/trunk/src/TOP/PISCES/P4Z/p4zsms.F90 – NEMO

Ignore:
Timestamp:
2018-10-23T16:40:09+02:00 (6 years ago)
Author:
aumont
Message:

corrects bugs described in Tickets 2144 and 2145

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk/src/TOP/PISCES/P4Z/p4zsms.F90

    r10069 r10213  
    352352      IF(lwp)  WRITE(numout,*) 
    353353 
    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 
     354      IF( cn_cfg == "ORCA" .OR. cn_cfg == "orca" ) THEN 
     355         IF( .NOT. lk_c1d ) THEN      ! ORCA configuration (not 1D) ! 
     356            !                                                ! --------------------------- ! 
     357            ! set total alkalinity, phosphate, nitrate & silicate 
     358            zarea          = 1._wp / glob_sum( cvol(:,:,:) ) * 1e6               
     359 
     360            zalksumn = glob_sum( trn(:,:,:,jptal) * cvol(:,:,:)  ) * zarea 
     361            zpo4sumn = glob_sum( trn(:,:,:,jppo4) * cvol(:,:,:)  ) * zarea * po4r 
     362            zno3sumn = glob_sum( trn(:,:,:,jpno3) * cvol(:,:,:)  ) * zarea * rno3 
     363            zsilsumn = glob_sum( trn(:,:,:,jpsil) * cvol(:,:,:)  ) * zarea 
    363364  
    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 
     365            IF(lwp) WRITE(numout,*) '       TALKN mean : ', zalksumn 
     366            trn(:,:,:,jptal) = trn(:,:,:,jptal) * alkmean / zalksumn 
     367 
     368            IF(lwp) WRITE(numout,*) '       PO4N  mean : ', zpo4sumn 
     369            trn(:,:,:,jppo4) = trn(:,:,:,jppo4) * po4mean / zpo4sumn 
     370 
     371            IF(lwp) WRITE(numout,*) '       NO3N  mean : ', zno3sumn 
     372            trn(:,:,:,jpno3) = trn(:,:,:,jpno3) * no3mean / zno3sumn 
     373 
     374            IF(lwp) WRITE(numout,*) '       SiO3N mean : ', zsilsumn 
     375            trn(:,:,:,jpsil) = MIN( 400.e-6,trn(:,:,:,jpsil) * silmean / zsilsumn ) 
     376            ! 
     377            ! 
     378            IF( .NOT. ln_top_euler ) THEN 
     379               zalksumb = glob_sum( trb(:,:,:,jptal) * cvol(:,:,:)  ) * zarea 
     380               zpo4sumb = glob_sum( trb(:,:,:,jppo4) * cvol(:,:,:)  ) * zarea * po4r 
     381               zno3sumb = glob_sum( trb(:,:,:,jpno3) * cvol(:,:,:)  ) * zarea * rno3 
     382               zsilsumb = glob_sum( trb(:,:,:,jpsil) * cvol(:,:,:)  ) * zarea 
    382383  
    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 ) 
     384               IF(lwp) WRITE(numout,*) ' ' 
     385               IF(lwp) WRITE(numout,*) '       TALKB mean : ', zalksumb 
     386               trb(:,:,:,jptal) = trb(:,:,:,jptal) * alkmean / zalksumb 
     387 
     388               IF(lwp) WRITE(numout,*) '       PO4B  mean : ', zpo4sumb 
     389               trb(:,:,:,jppo4) = trb(:,:,:,jppo4) * po4mean / zpo4sumb 
     390 
     391               IF(lwp) WRITE(numout,*) '       NO3B  mean : ', zno3sumb 
     392               trb(:,:,:,jpno3) = trb(:,:,:,jpno3) * no3mean / zno3sumb 
     393 
     394               IF(lwp) WRITE(numout,*) '       SiO3B mean : ', zsilsumb 
     395               trb(:,:,:,jpsil) = MIN( 400.e-6,trb(:,:,:,jpsil) * silmean / zsilsumb ) 
     396           ENDIF 
    395397        ENDIF 
    396398        ! 
Note: See TracChangeset for help on using the changeset viewer.