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 5288 for branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p5zmeso.F90 – NEMO

Ignore:
Timestamp:
2015-05-22T18:22:18+02:00 (9 years ago)
Author:
aumont
Message:

various bug fixes and updates of PISCES quota

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p5zmeso.F90

    r5266 r5288  
    77   !!             2.0  !  2007-12  (C. Ethe, G. Madec)  F90 
    88   !!             3.4  !  2011-06  (O. Aumont, C. Ethe) Quota model for iron 
     9   !!             3.6  !  2015-05  (O. Aumont) PISCES quota 
    910   !!---------------------------------------------------------------------- 
    1011#if defined key_pisces_quota 
     
    4748   REAL(wp), PUBLIC ::  mzrat2       !: microzooplankton mortality rate  
    4849   REAL(wp), PUBLIC ::  grazrat2     !: maximal mesozoo grazing rate 
    49    REAL(wp), PUBLIC ::  xkgraz2      !: non assimilated fraction of P by mesozoo  
    50    REAL(wp), PUBLIC ::  unass2c       !: Efficicency of mesozoo growth  
    51    REAL(wp), PUBLIC ::  unass2n       !: Efficicency of mesozoo growth  
    52    REAL(wp), PUBLIC ::  unass2p       !: Efficicency of mesozoo growth  
     50   REAL(wp), PUBLIC ::  xkgraz2      !: non assimilated fraction of P by mesozoo 
     51   REAL(wp), PUBLIC ::  unass2c      !: Efficicency of mesozoo growth  
     52   REAL(wp), PUBLIC ::  unass2n      !: Efficicency of mesozoo growth  
     53   REAL(wp), PUBLIC ::  unass2p      !: Efficicency of mesozoo growth  
    5354   REAL(wp), PUBLIC ::  epsher2      !: half sturation constant for grazing 2 
     55   REAL(wp), PUBLIC ::  ssigma2      !: Fraction excreted as semi-labile DOM 
     56   REAL(wp), PUBLIC ::  srespir2     !: Active respiration 
    5457   REAL(wp), PUBLIC ::  grazflux     !: mesozoo flux feeding rate 
    5558 
     
    7982      REAL(wp) :: zepsherf, zepshert, zepsherv, zrespirc, zrespirn, zrespirp, zbasresb, zbasresi 
    8083      REAL(wp) :: zgraztotc, zgraztotn, zgraztotp, zgraztotf 
    81       REAL(wp) :: zexcess, zgradoc, zgradon, zgradop 
     84      REAL(wp) :: zgradoc, zgradon, zgradop, zgratmp, zgradoct, zgradont, zgrafert, zgradopt 
    8285      REAL(wp) :: zgrapoc, zgrapon, zgrapop, zgrapof, zprcaca, zmortz 
    83       REAL(wp) :: zgrarem, zgraren, zgrarep, zgrafer 
     86      REAL(wp) :: zexcess, zgrarem, zgraren, zgrarep, zgrafer 
    8487      REAL(wp) :: zbeta, zrespz, ztortz, zgrasratp, zgrasratn, zgrasratf 
    8588      REAL(wp) :: ztmp1, ztmp2, ztmp3, ztmp4, ztmp5, ztmptot 
     
    265268               zbasresb = MAX(0., zrespz - zexcess) 
    266269               zbasresi = zexcess + MIN(0., zrespz - zexcess) 
    267                zrespirc = 0.2 * zepsherv * zgraztotc + zbasresb 
     270               zrespirc = srespir2 * zepsherv * zgraztotc + zbasresb 
    268271 
    269272               !   Voiding of the excessive elements as organic matter 
    270273               !   -------------------------------------------------------- 
    271                zgradoc = (1. - unass2c - zepsherv) * zgraztotc - zbasresi 
    272                zgradon = (1. - unass2n) * zgraztotn - zepsherv * no3rat3 * zgraztotc 
    273                zgradop = (1. - unass2p) * zgraztotp - zepsherv * po4rat3 * zgraztotc 
    274                zgrafer = (1. - unass2c) * zgraztotf - zepsherv * ferat3 * zgraztotc 
     274               zgradoct = (1. - unass2c - zepsherv) * zgraztotc - zbasresi 
     275               zgradont = (1. - unass2n) * zgraztotn - zepsherv * no3rat3 * zgraztotc 
     276               zgradopt = (1. - unass2p) * zgraztotp - zepsherv * po4rat3 * zgraztotc 
     277               zgrafert = (1. - unass2c) * zgraztotf - zepsherv * ferat3 * zgraztotc 
    275278               ztmp1   = ( 1. - epsher2 - unass2c ) /( 1. - 0.8 * epsher2 ) * ztortz 
    276                zgradoc = zgradoc + ztmp1 
    277                zgradon = zgradon + no3rat3 * ztmp1 
    278                zgradop = zgradop + po4rat3 * ztmp1 
    279                zgrafer = zgrafer + ferat3  * ztmp1 
    280                zgrarem = 0.2 * epsher2 /( 1. - 0.8 * epsher2 ) * ztortz 
    281                zgraren = no3rat3 * zgrarem 
    282                zgrarep = po4rat3 * zgrarem 
    283                zgrafer = zgrafer + ferat3 * zgrarem 
     279               zgradoc = (zgradoct + ztmp1) * ssigma2 
     280               zgradon = (zgradont + no3rat3 * ztmp1) * ssigma2 
     281               zgradop = (zgradopt + po4rat3 * ztmp1) * ssigma2 
     282               zgratmp = 0.2 * epsher2 /( 1. - 0.8 * epsher2 ) * ztortz 
     283               zgrarem = zgratmp + ( zgradoct + ztmp1 ) * (1.0 - ssigma2) 
     284               zgraren = no3rat3 * zgratmp + ( zgradont + no3rat3 * ztmp1 ) * (1.0 - ssigma2) 
     285               zgrarep = po4rat3 * zgratmp + ( zgradopt + po4rat3 * ztmp1 ) * (1.0 - ssigma2) 
     286               zgrafer = zgrafert + ferat3 * ( ztmp1 + zgratmp ) 
    284287 
    285288               !   Defecation as a result of non assimilated products 
     
    302305               tra(ji,jj,jk,jpdon) = tra(ji,jj,jk,jpdon) + zgradon 
    303306               tra(ji,jj,jk,jpdop) = tra(ji,jj,jk,jpdop) + zgradop 
    304                tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2ut * (zgraren + zrespirn) 
     307               tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2ut * (zgrarem + zrespirc) 
    305308               tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + zgrafer 
    306                tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zrespirc 
     309               tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zrespirc + zgrarem 
    307310               tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * (zgraren + zrespirn) 
    308311               tra(ji,jj,jk,jpmes) = tra(ji,jj,jk,jpmes) + zepsherv * zgraztotc - zrespirc   & 
     
    349352               zprcaca = part2 * zprcaca 
    350353               tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zgrazcal - zprcaca 
    351                tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + 2. * ( zgrazcal + zprcaca ) 
     354               tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + 2. * ( zgrazcal - zprcaca ) 
    352355               tra(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal) - zgrazcal + zprcaca 
    353356            END DO 
     
    389392      NAMELIST/nampismes/ part2, grazrat2, resrat2, mzrat2, xpref2c, xpref2p, xpref2z, xpref2m,   & 
    390393         &                xpref2d, xthresh2dia, xthresh2phy, xthresh2zoo, xthresh2poc, & 
    391          &                xthresh2mes, xthresh2, xkgraz2, epsher2, unass2c, & 
    392       &                   unass2n, unass2p, grazflux 
     394         &                xthresh2mes, xthresh2, xkgraz2, epsher2, ssigma2, unass2c, & 
     395      &                   unass2n, unass2p, srespir2, grazflux 
    393396 
    394397      INTEGER :: ios                 ! Local integer output status for namelist read 
     
    428431         WRITE(numout,*) '    C egested fraction of food by mesozoo          unass2p       =', unass2p 
    429432         WRITE(numout,*) '    Efficicency of Mesozoo growth                  epsher2      =', epsher2 
    430          WRITE(numout,*) '    half sturation constant for grazing 2          xkgraz2      =', xkgraz2 
     433         WRITE(numout,*) '    Fraction excreted as semi-labile DOM           ssigma2       =', ssigma2 
     434         WRITE(numout,*) '    Active respiration                             srespir2      =', srespir2 
     435         WRITE(numout,*) '    half sturation constant for grazing 2          xkgraz2       =', xkgraz2 
    431436      ENDIF 
    432437 
Note: See TracChangeset for help on using the changeset viewer.