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/p5zmicro.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/p5zmicro.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 ::  mzrat       !: microzooplankton mortality rate  
    4849   REAL(wp), PUBLIC ::  grazrat     !: maximal microzoo grazing rate 
    49    REAL(wp), PUBLIC ::  xkgraz      !: non assimilated fraction of P by microzoo  
     50   REAL(wp), PUBLIC ::  xkgraz      !: non assimilated fraction of P by microzoo 
    5051   REAL(wp), PUBLIC ::  unassc      !: Efficicency of microzoo growth  
    5152   REAL(wp), PUBLIC ::  unassn      !: Efficicency of microzoo growth  
    5253   REAL(wp), PUBLIC ::  unassp      !: Efficicency of microzoo growth  
    5354   REAL(wp), PUBLIC ::  epsher      !: half sturation constant for grazing 1  
     55   REAL(wp), PUBLIC ::  srespir     !: half sturation constant for grazing 1  
     56   REAL(wp), PUBLIC ::  ssigma      !: Fraction excreted as semi-labile DOM 
    5457 
    5558 
     
    8184      REAL(wp) :: zepsherf, zepshert, zepsherv, zrespirc, zrespirn, zrespirp, zbasresb, zbasresi 
    8285      REAL(wp) :: zgraztotc, zgraztotn, zgraztotp, zgraztotf 
    83       REAL(wp) :: zexcess, zgradoc, zgradon, zgradop, zgrafer 
     86      REAL(wp) :: zgradoc, zgradon, zgradop, zgrafer, zgradoct, zgradont, zgradopt, zgrafert 
     87      REAL(wp) :: zexcess, zgraren, zgrarep, zgrarem 
    8488      REAL(wp) :: zgrapoc, zgrapon, zgrapop, zgrapof, zprcaca, zmortz 
    8589      REAL(wp) :: zrespz, ztortz, zgrasratf, zgrasratn, zgrasratp 
     
    200204               zbasresb = MAX(0., zrespz - zexcess) 
    201205               zbasresi = zexcess + MIN(0., zrespz - zexcess)   
    202                zrespirc = 0.2 * zepsherv * zgraztotc + zbasresb 
     206               zrespirc = srespir * zepsherv * zgraztotc + zbasresb 
    203207 
    204208               !   Voiding of the excessive elements as DOM 
    205209               !   ---------------------------------------- 
    206                zgradoc   = (1. - unassc - zepsherv) * zgraztotc - zbasresi   
    207                zgradon   = (1. - unassn) * zgraztotn - zepsherv * no3rat3 * zgraztotc 
    208                zgradop   = (1. - unassp) * zgraztotp - zepsherv * po4rat3 * zgraztotc 
    209                zgrafer   = (1. - unassc) * zgraztotf - zepsherv * ferat3 * zgraztotc 
     210               zgradoct   = (1. - unassc - zepsherv) * zgraztotc - zbasresi   
     211               zgradont   = (1. - unassn) * zgraztotn - zepsherv * no3rat3 * zgraztotc 
     212               zgradopt   = (1. - unassp) * zgraztotp - zepsherv * po4rat3 * zgraztotc 
     213               zgrafert   = (1. - unassc) * zgraztotf - zepsherv * ferat3 * zgraztotc 
     214               zgradoc =  zgradoct * ssigma 
     215               zgradon =  zgradont * ssigma 
     216               zgradop =  zgradopt * ssigma 
     217               zgrarem = (1.0 - ssigma) * zgradoct 
     218               zgraren = (1.0 - ssigma) * zgradont 
     219               zgrarep = (1.0 - ssigma) * zgradopt 
     220               zgrafer = zgrafert 
    210221 
    211222               !   Defecation as a result of non assimilated products 
     
    218229               !   Update of the TRA arrays 
    219230               !   ------------------------ 
    220                zrespirn  = zrespirc * no3rat3 
     231               zrespirn  = zrespirc * no3rat3  
    221232               zrespirp  = zrespirc * po4rat3 
    222233               zgrafer   = zgrafer + zrespirc * ferat3 
    223234 
    224                tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) + zrespirp 
    225                tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + zrespirn 
     235               tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) + zrespirp + zgrarep 
     236               tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + zrespirn + zgraren 
    226237               tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + zgradoc 
    227238               tra(ji,jj,jk,jpdon) = tra(ji,jj,jk,jpdon) + zgradon 
    228239               tra(ji,jj,jk,jpdop) = tra(ji,jj,jk,jpdop) + zgradop 
    229                tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2ut * zrespirc 
     240               tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2ut * ( zrespirc + zgrarem ) 
    230241               tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + zgrafer 
    231242               tra(ji,jj,jk,jpzoo) = tra(ji,jj,jk,jpzoo) + zepsherv * zgraztotc - zrespirc   & 
     
    261272               ! 
    262273               zprcaca = part * zprcaca 
    263                tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zrespirc - zprcaca 
     274               tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zrespirc + zgrarem - zprcaca 
    264275               tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2. * zprcaca 
    265                tra(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal) + rno3 * zrespirn + zprcaca 
     276               tra(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal) + rno3 * ( zrespirn + zgraren ) + zprcaca 
    266277#if defined key_kriest 
    267278               tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) + ztortz * xkr_dmicro & 
     
    307318         &                xprefp, xprefd, xprefz, xthreshdia, xthreshphy, & 
    308319         &                xthreshpic, xthreshpoc, xthreshzoo, xthresh, xkgraz, & 
    309          &                epsher, unassc, unassn, unassp 
     320         &                epsher, ssigma, srespir, unassc, unassn, unassp 
    310321 
    311322      INTEGER :: ios                 ! Local integer output status for namelist read 
     
    343354         WRITE(numout,*) '    P egested fraction of fodd by microzoo          unassp      =', unassp 
    344355         WRITE(numout,*) '    Efficicency of microzoo growth                  epsher      =', epsher 
     356         WRITE(numout,*) '    Fraction excreted as semi-labile DOM            ssigma      =', ssigma 
     357         WRITE(numout,*) '    Active respiration                              srespir     =', srespir 
    345358         WRITE(numout,*) '    half sturation constant for grazing 1           xkgraz      =', xkgraz 
    346359      ENDIF 
Note: See TracChangeset for help on using the changeset viewer.