Changeset 5288


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

various bug fixes and updates of PISCES quota

Location:
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z
Files:
16 edited

Legend:

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

    r5266 r5288  
    1111   !!             2.0  !  2007-12  (C. Ethe, G. Madec)  F90 
    1212   !!                  !  2011-02  (J. Simeon, J.Orr ) update O2 solubility constants 
     13   !!             3.6  !  2015-05  (O. Aumont) PISCES quota 
    1314   !!---------------------------------------------------------------------- 
    1415#if defined key_pisces || defined key_pisces_quota 
    1516   !!---------------------------------------------------------------------- 
    16    !!   'key_pisces'                                       PISCES bio-model 
     17   !!   'key_pisces*'                                       PISCES bio-model 
    1718   !!---------------------------------------------------------------------- 
    1819   !!   p4z_che      :  Sea water chemistry computed following OCMIP protocol 
  • branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zfechem.F90

    r5266 r5288  
    55   !!====================================================================== 
    66   !! History :   3.5  !  2012-07 (O. Aumont, A. Tagliabue, C. Ethe) Original code 
     7   !!             3.6  !  2015-05  (O. Aumont) PISCES quota 
    78   !!---------------------------------------------------------------------- 
    89#if defined key_pisces || defined key_pisces_quota 
    910   !!---------------------------------------------------------------------- 
    1011   !!   'key_top'       and                                      TOP models 
    11    !!   'key_pisces'                                       PISCES bio-model 
     12   !!   'key_pisces*'                                       PISCES bio-model 
    1213   !!---------------------------------------------------------------------- 
    1314   !!   p4z_fechem       :  Compute remineralization/scavenging of iron 
  • branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zflx.F90

    r5266 r5288  
    1010   !!             2.0  !  2007-12  (C. Ethe, G. Madec)  F90 
    1111   !!                  !  2011-02  (J. Simeon, J. Orr) Include total atm P correction  
     12   !!             3.6  !  2015-05  (O. Aumont) PISCES quota 
    1213   !!---------------------------------------------------------------------- 
    1314#if defined key_pisces || defined key_pisces_quota 
    1415   !!---------------------------------------------------------------------- 
    15    !!   'key_pisces'                                       PISCES bio-model 
     16   !!   'key_pisces*'                                      PISCES bio-model 
    1617   !!---------------------------------------------------------------------- 
    1718   !!   p4z_flx       :   CALCULATES GAS EXCHANGE AND CHEMISTRY AT SEA SURFACE 
  • branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zint.F90

    r5266 r5288  
    66   !! History :   1.0  !  2004-03 (O. Aumont) Original code 
    77   !!             2.0  !  2007-12  (C. Ethe, G. Madec)  F90 
     8   !!             3.6  !  2015-05  (O. Aumont) PISCES quota 
    89   !!---------------------------------------------------------------------- 
    910#if defined key_pisces || defined key_pisces_quota 
    1011   !!---------------------------------------------------------------------- 
    11    !!   'key_pisces'                                       PISCES bio-model 
     12   !!   'key_pisces*'                                       PISCES bio-model 
    1213   !!---------------------------------------------------------------------- 
    1314   !!   p4z_int        :  interpolation and computation of various accessory fields 
  • branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zlys.F90

    r5266 r5288  
    1111   !!                  !  2011-02  (J. Simeon, J. Orr)  Calcon salinity dependence 
    1212   !!             3.4  !  2011-06  (O. Aumont, C. Ethe) Improvment of calcite dissolution 
     13   !!             3.6  !  2015-05  (O. Aumont) PISCES quota 
    1314   !!---------------------------------------------------------------------- 
    1415#if defined key_pisces || defined key_pisces_quota 
    1516   !!---------------------------------------------------------------------- 
    16    !!   'key_pisces'                                       PISCES bio-model 
     17   !!   'key_pisces*'                                       PISCES bio-model 
    1718   !!---------------------------------------------------------------------- 
    1819   !!   p4z_lys        :   Compute the CaCO3 dissolution  
  • branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zopt.F90

    r5266 r5288  
    88   !!             3.2  !  2009-04  (C. Ethe, G. Madec)  optimisation 
    99   !!             3.4  !  2011-06  (O. Aumont, C. Ethe) Improve light availability of nano & diat 
     10   !!             3.6  !  2015-05  (O. Aumont) PISCES quota 
    1011   !!---------------------------------------------------------------------- 
    1112#if defined  key_pisces || defined key_pisces_quota 
     
    218219      neln(:,:) = 1                            !  ------------------------ 
    219220      heup(:,:) = 300. 
     221      heup_01(:,:) = 300. 
    220222 
    221223      DO jk = 2, nksrp 
    222224         DO jj = 1, jpj 
    223225           DO ji = 1, jpi 
    224               IF( etot(ji,jj,jk) * tmask(ji,jj,jk) >= 0.0043 * qsr(ji,jj) )  THEN 
     226              IF( etot(ji,jj,jk) * tmask(ji,jj,jk) >= 0.01 * parlux * qsr(ji,jj) )  THEN 
    225227                 neln(ji,jj) = jk+1                    ! Euphotic level : 1rst T-level strictly below Euphotic layer 
    226228                 !                                     ! nb: ensure the compatibility with nmld_trc definition in trd_mld_trc_zint 
    227229                 heup(ji,jj) = fsdepw(ji,jj,jk+1)      ! Euphotic layer depth 
    228230              ENDIF 
     231              IF( etot(ji,jj,jk) * tmask(ji,jj,jk) >= 0.1 )  THEN 
     232                 heup_01(ji,jj) = fsdepw(ji,jj,jk+1)      ! Absolute euphotic layer depth 
     233              ENDIF 
    229234           END DO 
    230235        END DO 
    231236      END DO 
    232237  
    233       heup(:,:) = MIN( 300., heup(:,:) ) 
     238      heup(:,:)    = MIN( 300., heup(:,:) ) 
     239      heup_01(:,:) = MIN( 300., heup_01(:,:) ) 
    234240 
    235241      !                                        !* mean light over the mixed layer 
     
    284290        IF( lk_iomput ) THEN 
    285291           IF( jnt == nrdttrc ) THEN 
    286               CALL iom_put( "Heup", heup(:,:  ) * tmask(:,:,1) )  ! euphotic layer deptht 
     292              CALL iom_put( "Heup", heup_01(:,:  ) * tmask(:,:,1) )  ! euphotic layer deptht 
    287293              CALL iom_put( "PAR" , emoy(:,:,:) * tmask(:,:,:) )  ! Photosynthetically Available Radiation 
    288294           ENDIF 
  • branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p5zbio.F90

    r5285 r5288  
    66   !! History :   1.0  !  2004     (O. Aumont) Original code 
    77   !!             2.0  !  2007-12  (C. Ethe, G. Madec)  F90 
    8    !!             3.0  !  2015-05  (O. Aumont) PISCES QUOTA 
     8   !!             3.6  !  2015-05  (O. Aumont) PISCES quota 
    99   !!---------------------------------------------------------------------- 
    1010#if defined key_pisces_quota 
     
    8282      CALL p4z_opt  ( kt, jnt )     ! Optic: PAR in the water column 
    8383      CALL p5z_sink ( kt, jnt )     ! vertical flux of particulate organic matter 
    84       DO jk = 1, jpk 
    85         DO jj = 1, jpj 
    86           DO ji = 1, jpi 
    87             IF (mig(ji) == 72 .and. mjg(jj) == 74 .and. jk == 5) THEN 
    88             DO jn = 1, jptra 
    89             write(0,*) 'plante ',trn(ji,jj,jk,jn)*1E6 
    90             END DO 
    91             ENDIF 
    92           END DO 
    93         END DO 
    94       END DO 
    9584      CALL p4z_fechem(kt, jnt )     ! Iron chemistry/scavenging 
    9685      CALL p5z_lim  ( kt, jnt )     ! co-limitations by the various nutrients 
  • branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p5zlim.F90

    r5266 r5288  
    77   !!             2.0  !  2007-12  (C. Ethe, G. Madec)  F90 
    88   !!             3.4  !  2011-04  (O. Aumont, C. Ethe) Limitation for iron modelled in quota  
    9    !!             3.6  !  2015-04  (O. Aumont) variable stoichiometry 
     9   !!             3.6  !  2015-05  (O. Aumont) PISCES quota 
    1010   !!---------------------------------------------------------------------- 
    1111#if defined key_pisces_quota 
     
    476476      zpsino3 = 2.3 * rno3 
    477477      zpsinh4 = 1.8 * rno3 
    478 !      zpsino3 = 1.1 * rno3 
    479 !      zpsinh4 = 0.6 * rno3 
    480478      zpsiuptk = 2.3 * rno3 
    481479 
  • 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 
  • 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 
  • branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p5zmort.F90

    r5266 r5288  
    66   !! History :   1.0  !  2002     (O. Aumont)  Original code 
    77   !!             2.0  !  2007-12  (C. Ethe, G. Madec)  F90 
     8   !!             3.6  !  2015-05  (O. Aumont) PISCES quota 
    89   !!---------------------------------------------------------------------- 
    910#if defined key_pisces_quota 
     
    338339         WRITE(numout,*) '    quadratic mortality of phytoplankton      wchl      =', wchl 
    339340         WRITE(numout,*) '    quadratic mortality of picophyto.         wchlp     =', wchlp 
    340          WRITE(numout,*) '    maximum quadratic mortality of diatoms    wchld     =', wchld 
    341          WRITE(numout,*) '    maximum quadratic mortality of diatoms    wchldm    =', wchldm 
    342          WRITE(numout,*) '    phytoplankton mortality rate              mprat     =', mprat 
     341         WRITE(numout,*) '    quadratic mortality of diatoms            wchld     =', wchld 
     342         WRITE(numout,*) '    Additional quadratic mortality of diatoms wchldm    =', wchldm 
     343         WRITE(numout,*) '    nanophyto. mortality rate                 mprat     =', mprat 
    343344         WRITE(numout,*) '    picophyto. mortality rate                 mpratp    =', mpratp 
    344345         WRITE(numout,*) '    Diatoms mortality rate                    mprat2    =', mprat2 
  • branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p5zprod.F90

    r5266 r5288  
    77   !!             2.0  !  2007-12  (C. Ethe, G. Madec)  F90 
    88   !!             3.4  !  2011-05  (O. Aumont, C. Ethe) New parameterization of light limitation 
     9   !!             3.6  !  2015-05  (O. Aumont) PISCES quota 
    910   !!---------------------------------------------------------------------- 
    1011#if defined key_pisces_quota 
     
    4041   REAL(wp), PUBLIC ::  excret2         !: 
    4142   REAL(wp), PUBLIC ::  bresp           !: 
    42    REAL(wp), PUBLIC ::  chlcpm          !: 
    43    REAL(wp), PUBLIC ::  chlcnm          !: 
    44    REAL(wp), PUBLIC ::  chlcdm          !: 
     43   REAL(wp), PUBLIC ::  thetanpm        !: 
     44   REAL(wp), PUBLIC ::  thetannm        !: 
     45   REAL(wp), PUBLIC ::  thetandm        !: 
    4546   REAL(wp), PUBLIC ::  chlcmin         !: 
    4647   REAL(wp), PUBLIC ::  grosip          !: 
     48   REAL(wp), PUBLIC ::  zlimmxln        !: 
     49   REAL(wp), PUBLIC ::  zlimmxlp        !: 
     50   REAL(wp), PUBLIC ::  zlimmxld        !: 
    4751 
    4852   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   prmaxn   !: optimal production = f(temperature) 
     
    8488      REAL(wp) ::   zlim, zsilfac2, zsiborn, zprod, zprontot, zproptot, zprodtot 
    8589      REAL(wp) ::   zmxltst, zmxlday, zprnutmax 
    86       REAL(wp) ::   zpislopen, zpislopep, zpislope2n, zpsichl 
    87       REAL(wp) ::   zrum, zcodel, zargu, zval, thetannm, thetanpm, thetandm 
     90      REAL(wp) ::   zpislopen, zpislopep, zpislope2n 
     91      REAL(wp) ::   zrum, zcodel, zargu, zval 
    8892      REAL(wp) ::   zrfact2 
    8993      CHARACTER (len=25) :: charout 
     
    142146 
    143147      ! Computation of the optimal production 
    144       zpsichl = 0. 
    145       thetannm = 0.25 
    146       thetanpm = 0.25 
    147       thetandm = 0.35 
    148  
    149       prmaxn(:,:,:) = ( 0.8_wp * (1. + zpsino3 * qnpmax + zpsichl ) ) * r1_rday * tgfunc(:,:,:) 
     148      prmaxn(:,:,:) = ( 0.8_wp * (1. + zpsino3 * qnpmax ) ) * r1_rday * tgfunc(:,:,:) 
    150149      prmaxp(:,:,:) = 0.6 / 0.8 * prmaxn(:,:,:)  
    151       prmaxd(:,:,:) = 0.8 / 0.8 * prmaxn(:,:,:)  
     150      prmaxd(:,:,:) = prmaxn(:,:,:)  
    152151      zprnut(:,:,:) = 0.8_wp * r1_rday * tgfunc(:,:,:) 
    153152 
     
    258257      DO jj = 1, jpj 
    259258         DO ji = 1, jpi 
    260             zmxltst = MAX( 0.e0, hmld(ji,jj) - heup(ji,jj) ) 
     259            zmxltst = MAX( 0.e0, hmld(ji,jj) - heup_01(ji,jj) ) 
    261260            zmxlday = zmxltst * zmxltst * r1_rday 
    262             zmixnano(ji,jj) = 1. - zmxlday / ( 2. + zmxlday ) 
    263             zmixpico(ji,jj) = 1. - zmxlday / ( 2. + zmxlday ) 
    264             zmixdiat(ji,jj) = 1. - zmxlday / ( 4. + zmxlday ) 
     261            zmixnano(ji,jj) = 1. - zmxlday / ( zlimmxln + zmxlday ) 
     262            zmixpico(ji,jj) = 1. - zmxlday / ( zlimmxlp + zmxlday ) 
     263            zmixdiat(ji,jj) = 1. - zmxlday / ( zlimmxld + zmxlday ) 
    265264         END DO 
    266265      END DO 
     
    290289                  zprorcan(ji,jj,jk) = zprbio(ji,jj,jk)  * xlimphy(ji,jj,jk) * trn(ji,jj,jk,jpphy) * rfact2 
    291290                  ! 
    292                   zrespn(ji,jj,jk) = zprorcan(ji,jj,jk) * zpsichl 
    293291                  zration = trn(ji,jj,jk,jpnph) / ( trn(ji,jj,jk,jpphy) + rtrn ) 
    294292                  zratiop = trn(ji,jj,jk,jppph) / ( trn(ji,jj,jk,jpphy) + rtrn ) 
     
    312310                  zmax = MAX(0., MIN(1., (1. - zrat)/ (1.05 - zrat) * 1.05)) 
    313311                  zprofmax = zprnutmax * qfnmax * zmax 
    314                   zprofen(ji,jj,jk) = zprofmax * xnanofer(ji,jj,jk) * ( 4. - 4.5 * xlimnfe(ji,jj,jk)    & 
     312                  zprofen(ji,jj,jk) = zprofmax * xnanofer(ji,jj,jk) * ( 4. - 3.6 * xlimnfe(ji,jj,jk)    & 
    315313                  &          / ( xlimnfe(ji,jj,jk) + 0.2 ) ) * (1. + 0.8 * xnanono3(ji,jj,jk) / ( rtrn  & 
    316314                  &          + xnanono3(ji,jj,jk) + xnanonh4(ji,jj,jk) ) * (1. - xnanofer(ji,jj,jk) ) ) 
     
    328326                  zprorcap(ji,jj,jk) = zprpic(ji,jj,jk)  * xlimpic(ji,jj,jk) * trn(ji,jj,jk,jppic) * rfact2 
    329327                  ! 
    330                   zrespp(ji,jj,jk) = zprorcap(ji,jj,jk) * zpsichl 
    331328                  zration = trn(ji,jj,jk,jpnpi) / ( trn(ji,jj,jk,jppic) + rtrn ) 
    332329                  zratiop = trn(ji,jj,jk,jpppi) / ( trn(ji,jj,jk,jppic) + rtrn ) 
     
    350347                  zmax = MAX(0., MIN(1., (1. - zrat)/ (1.05 - zrat) * 1.05)) 
    351348                  zprofmax = zprnutmax * qfpmax * zmax 
    352                   zprofep(ji,jj,jk) = zprofmax * xpicofer(ji,jj,jk) * ( 4. - 4.5 * xlimpfe(ji,jj,jk)   & 
     349                  zprofep(ji,jj,jk) = zprofmax * xpicofer(ji,jj,jk) * ( 4. - 3.6 * xlimpfe(ji,jj,jk)   & 
    353350                  &          / ( xlimpfe(ji,jj,jk) + 0.2 ) ) * (1. + 0.8 * xpicono3(ji,jj,jk) / ( rtrn   & 
    354351                  &          + xpicono3(ji,jj,jk) + xpiconh4(ji,jj,jk) ) * (1. - xpicofer(ji,jj,jk) ) ) 
     
    367364                  ! Computation of the respiration term according to pahlow  
    368365                  ! & oschlies (2013) 
    369                   zrespd(ji,jj,jk) = zprorcad(ji,jj,jk) * zpsichl 
    370366                  ! 
    371367                  zration = trn(ji,jj,jk,jpndi) / ( trn(ji,jj,jk,jpdia) + rtrn ) 
     
    390386                  zmax = MAX(0., MIN(1., (1. - zrat)/ (1.05 - zrat) * 1.05)) 
    391387                  zprofmax = zprnutmax * qfdmax * zmax 
    392                   zprofed(ji,jj,jk) = zprofmax * xdiatfer(ji,jj,jk) * ( 4. - 4.5 * xlimdfe(ji,jj,jk)     & 
     388                  zprofed(ji,jj,jk) = zprofmax * xdiatfer(ji,jj,jk) * ( 4. - 3.6 * xlimdfe(ji,jj,jk)     & 
    393389                  &          / ( xlimdfe(ji,jj,jk) + 0.2 ) ) * (1. + 0.8 * xdiatno3(ji,jj,jk) / ( rtrn   & 
    394390                  &          + xdiatno3(ji,jj,jk) + xdiatnh4(ji,jj,jk) ) * (1. - xdiatfer(ji,jj,jk) ) ) 
     
    562558      ! 
    563559      NAMELIST/nampisprod/ pislope, pislopep, pislope2, xadap, bresp, excret, excretp, excret2,  & 
    564          &                 chlcnm, chlcpm, chlcdm, chlcmin, grosip 
     560         &                 thetannm, thetanpm, thetandm, chlcmin, grosip, zlimmxln,           & 
     561         &                 zlimmxlp, zlimmxld 
    565562 
    566563      INTEGER :: ios                 ! Local integer output status for namelist read 
     
    590587         WRITE(numout,*) '    P-I slope  for diatoms                    pislope2     =', pislope2 
    591588         WRITE(numout,*) '    P-I slope  for picophytoplankton          pislopep     =', pislopep 
    592          WRITE(numout,*) '    Minimum Chl/C in nanophytoplankton        chlcnm       =', chlcnm 
    593          WRITE(numout,*) '    Minimum Chl/C in picophytoplankton        chlcpm       =', chlcpm 
    594          WRITE(numout,*) '    Minimum Chl/C in diatoms                  chlcdm       =', chlcdm 
     589         WRITE(numout,*) '    Minimum Chl/N in nanophytoplankton        thetannm     =', thetannm 
     590         WRITE(numout,*) '    Minimum Chl/N in picophytoplankton        thetanpm     =', thetanpm 
     591         WRITE(numout,*) '    Minimum Chl/N in diatoms                  thetandm     =', thetandm 
     592         WRITE(numout,*) '    Critical time scale for mixing (nano)     zlimmxln     =', zlimmxln 
     593         WRITE(numout,*) '    Critical time scale for mixing (pico)     zlimmxlp     =', zlimmxlp 
     594         WRITE(numout,*) '    Critical time scale for mixing (diatoms)  zlimmxld     =', zlimmxld 
    595595      ENDIF 
    596596      ! 
  • branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p5zrem.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 
     
    4849   REAL(wp), PUBLIC ::  xsiremlab  !: fast remineralisation rate of POC  
    4950   REAL(wp), PUBLIC ::  xsilab     !: fraction of labile biogenic silica  
    50    REAL(wp), PUBLIC ::  oxymin     !: halk saturation constant for anoxia  
     51   REAL(wp), PUBLIC ::  oxymin     !: half saturation constant for anoxia  
     52   REAL(wp), PUBLIC ::  oxymin2    !: Minimum O2 concentration for oxic remin. 
    5153 
    5254 
     
    105107         DO jj = 1, jpj 
    106108            DO ji = 1, jpi 
    107                zdep = MAX( hmld(ji,jj), heup(ji,jj) ) 
     109               zdep = MAX( hmld(ji,jj), heup_01(ji,jj) ) 
    108110               IF( fsdept(ji,jj,jk) < zdep ) THEN 
    109111                  zdepbac(ji,jj,jk) = MIN( 0.7 * ( trn(ji,jj,jk,jpzoo) + 2.* trn(ji,jj,jk,jpmes) ), 4.e-6 ) 
     
    123125               ! denitrification factor computed from O2 levels 
    124126               ! ---------------------------------------------- 
    125                nitrfac(ji,jj,jk) = MAX(  0.e0, 0.4 * ( 6.e-6 - trn(ji,jj,jk,jpoxy) )    & 
     127               nitrfac(ji,jj,jk) = MAX(  0.e0, 0.4 * ( oxymin2 - trn(ji,jj,jk,jpoxy) )    & 
    126128                  &                                / ( oxymin + trn(ji,jj,jk,jpoxy) )  ) 
    127129               nitrfac(ji,jj,jk) = MIN( 1., nitrfac(ji,jj,jk) ) 
     
    324326               ! constant and specified in the namelist. 
    325327               ! ---------------------------------------------------------- 
    326                zdep     = MAX( hmld(ji,jj), heup(ji,jj) )  
     328               zdep     = MAX( hmld(ji,jj), heup_01(ji,jj) )  
    327329               zdep     = MAX( 0., fsdept(ji,jj,jk) - zdep ) 
    328330               ztem     = MAX( tsn(ji,jj,1,jp_tem), 0. ) 
     
    377379      !!---------------------------------------------------------------------- 
    378380      NAMELIST/nampisrem/ xremikc, xremikn, xremikp, xremipc, xremipn, xremipp,   & 
    379       &                   nitrif, xsirem, xsiremlab, xsilab, oxymin 
     381      &                   nitrif, xsirem, xsiremlab, xsilab, oxymin, oxymin2 
    380382      INTEGER :: ios                 ! Local integer output status for namelist read 
    381383 
     
    403405         WRITE(numout,*) '    fraction of labile biogenic silica        xsilab    =', xsilab 
    404406         WRITE(numout,*) '    NH4 nitrification rate                    nitrif    =', nitrif 
    405          WRITE(numout,*) '    halk saturation constant for anoxia       oxymin    =', oxymin 
     407         WRITE(numout,*) '    half saturation constant for anoxia       oxymin    =', oxymin 
     408         WRITE(numout,*) '    Minimum O2 concentration for oxic remin.  oxymin2   =', oxymin2 
    406409      ENDIF 
    407410      ! 
  • branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p5zsed.F90

    r5266 r5288  
    88   !!             3.4  !  2011-06 (C. Ethe) USE of fldread 
    99   !!             3.5  !  2012-07 (O. Aumont) improvment of river input of nutrients  
     10   !!             3.6  !  2015-05  (O. Aumont) PISCES quota 
    1011   !!---------------------------------------------------------------------- 
    1112#if defined key_pisces_quota 
  • branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p5zsink.F90

    r5266 r5288  
    88   !!             3.4  !  2011-06  (O. Aumont, C. Ethe) Change aggregation formula 
    99   !!             3.5  !  2012-07  (O. Aumont) Introduce potential time-splitting 
     10   !!             3.6  !  2015-05  (O. Aumont) PISCES quota 
    1011   !!---------------------------------------------------------------------- 
    1112#if defined key_pisces_quota 
     
    111112         DO jj = 1, jpj 
    112113            DO ji = 1,jpi 
    113                zmax  = MAX( heup(ji,jj), hmld(ji,jj) ) 
     114               zmax  = MAX( heup_01(ji,jj), hmld(ji,jj) ) 
    114115               zfact = MAX( 0., fsdepw(ji,jj,jk+1) - zmax ) / 5000._wp 
    115                wsbio4(ji,jj,jk) = wsbio2 + ( 200.- wsbio2 ) * zfact 
     116               wsbio4(ji,jj,jk) = wsbio2  
    116117            END DO 
    117118         END DO 
  • branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p5zsms.F90

    r5266 r5288  
    66   !! History :   1.0  !  2004-03 (O. Aumont) Original code 
    77   !!             2.0  !  2007-12  (C. Ethe, G. Madec)  F90 
     8   !!             3.6  !  2015-05  (O. Aumont) PISCES quota 
    89   !!---------------------------------------------------------------------- 
    910#if defined key_pisces_quota 
Note: See TracChangeset for help on using the changeset viewer.