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 14276 for NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p5zlim.F90 – NEMO

Ignore:
Timestamp:
2021-01-07T23:09:56+01:00 (3 years ago)
Author:
aumont
Message:

numerous updates to PISCES, PISCES-QUOTA and the sediment module

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p5zlim.F90

    r13233 r14276  
    8888   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   fvpuptk    !: Maximum potential uptake rate of picophyto 
    8989   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   fvduptk    !: Maximum potential uptake rate of diatoms 
     90   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xqfuncfecp !:  
     91   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xlimnpn, xlimnpp, xlimnpd 
    9092 
    9193   ! Coefficient for iron limitation following Flynn and Hipkin (1999) 
     
    127129      REAL(wp) ::   zconc0p, zconc0pnh4, zconc0ppo4, zconcpfe, zconcnfe, zconcdfe 
    128130      REAL(wp) ::   fanano, fananop, fananof, fadiat, fadiatp, fadiatf 
    129       REAL(wp) ::   fapico, fapicop, fapicof 
     131      REAL(wp) ::   fapico, fapicop, fapicof, zlimpo4, zlimdop 
    130132      REAL(wp) ::   zrpho, zrass, zcoef, zfuptk, zratchl 
    131133      REAL(wp) ::   zfvn, zfvp, zfvf, zsizen, zsizep, zsized, znanochl, zpicochl, zdiatchl 
    132       REAL(wp) ::   zqfemn, zqfemp, zqfemd, zbactno3, zbactnh4 
    133       REAL(wp) ::   zlim1f, zsizetmp 
    134       REAL(wp), DIMENSION(jpi,jpj,jpk) :: xlimnpn, xlimnpp, xlimnpd 
     134      REAL(wp) ::   zqfemn, zqfemp, zqfemd, zbactno3, zbactnh4, zbiron 
     135      REAL(wp) ::   znutlimtot, zlimno3, zlimnh4, zlim1f, zsizetmp 
     136      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zrassn, zrassp, zrassd 
    135137      !!--------------------------------------------------------------------- 
    136138      ! 
     
    143145         DO jj = 1, jpj 
    144146            DO ji = 1, jpi 
    145                !  
    146                ! Tuning of the iron concentration to a minimum level that 
    147                ! is set to the detection limit 
    148                ! -------------------------------------------------------- 
    149                zno3    = trb(ji,jj,jk,jpno3) / 40.e-6 
    150                zferlim = MAX( 3e-11 * zno3 * zno3, 5e-12 ) 
    151                zferlim = MIN( zferlim, 7e-11 ) 
    152                trb(ji,jj,jk,jpfer) = MAX( trb(ji,jj,jk,jpfer), zferlim ) 
    153  
    154147               ! Computation of the Chl/C ratio of each phytoplankton group 
    155148               ! ---------------------------------------------------------- 
     
    190183               ! From Talmy et al. (2014) and Maranon et al. (2013) 
    191184               ! ------------------------------------------------------- 
    192                xqnnmin(ji,jj,jk) = qnnmin * sizen(ji,jj,jk)**(-0.3) 
     185               xqnnmin(ji,jj,jk) = qnnmin * sizen(ji,jj,jk)**(-0.36) 
    193186               xqnnmax(ji,jj,jk) = qnnmax 
    194                xqndmin(ji,jj,jk) = qndmin * sized(ji,jj,jk)**(-0.3) 
     187               xqndmin(ji,jj,jk) = qndmin * sized(ji,jj,jk)**(-0.36) 
    195188               xqndmax(ji,jj,jk) = qndmax 
    196                xqnpmin(ji,jj,jk) = qnpmin * sizep(ji,jj,jk)**(-0.48) 
    197                xqnpmax(ji,jj,jk) = qnpmax * sizep(ji,jj,jk)**(-0.21) 
     189               xqnpmin(ji,jj,jk) = qnpmin * sizep(ji,jj,jk)**(-0.36) 
     190               xqnpmax(ji,jj,jk) = qnpmax 
    198191 
    199192               ! Computation of the optimal allocation parameters 
     
    201194               ! Smith et al. 
    202195               ! --------------------------------------------------- 
    203  
     196               zbiron = ( 75.0 * ( 1.0 - plig(ji,jj,jk) ) + plig(ji,jj,jk) ) * biron(ji,jj,jk) 
    204197               ! Nanophytoplankton 
    205198               znutlim = MAX( trb(ji,jj,jk,jpnh4) / zconc0nnh4,    & 
     
    208201               znutlim = trb(ji,jj,jk,jppo4) / zconc0npo4 
    209202               fananop = MAX(0.01, MIN(0.99, 1. / ( SQRT(znutlim) + 1.) ) ) 
    210                znutlim = biron(ji,jj,jk) / zconcnfe 
     203               znutlim = zbiron / zconcnfe 
    211204               fananof = MAX(0.01, MIN(0.99, 1. / ( SQRT(znutlim) + 1.) ) ) 
    212205 
     
    217210               znutlim = trb(ji,jj,jk,jppo4) / zconc0ppo4 
    218211               fapicop = MAX(0.01, MIN(0.99, 1. / ( SQRT(znutlim) + 1.) ) ) 
    219                znutlim = biron(ji,jj,jk) / zconcpfe 
     212               znutlim = zbiron / zconcpfe 
    220213               fapicof = MAX(0.01, MIN(0.99, 1. / ( SQRT(znutlim) + 1.) ) ) 
    221214 
     
    226219               znutlim = trb(ji,jj,jk,jppo4) / zconc0dpo4 
    227220               fadiatp = MAX(0.01, MIN(0.99, 1. / ( SQRT(znutlim) + 1.) ) ) 
    228                znutlim = biron(ji,jj,jk) / zconcdfe 
     221               znutlim = zbiron / zconcdfe 
    229222               fadiatf = MAX(0.01, MIN(0.99, 1. / ( SQRT(znutlim) + 1.) ) ) 
    230223 
     
    232225               ! heterotrophic bacteria 
    233226               ! ------------------------------------------------- 
    234                zbactnh4 = trb(ji,jj,jk,jpnh4) / ( concbnh4 + trb(ji,jj,jk,jpnh4) ) 
    235                zbactno3 = trb(ji,jj,jk,jpno3) / ( concbno3 + trb(ji,jj,jk,jpno3) ) * (1. - zbactnh4) 
     227               zlimnh4 = trb(ji,jj,jk,jpnh4) / ( concbno3 + trb(ji,jj,jk,jpnh4) ) 
     228               zlimno3 = trb(ji,jj,jk,jpno3) / ( concbno3 + trb(ji,jj,jk,jpno3) ) 
     229               znutlimtot = ( trb(ji,jj,jk,jpnh4) + trb(ji,jj,jk,jpno3) ) / ( concbno3 + trb(ji,jj,jk,jpnh4) + trb(ji,jj,jk,jpno3) ) 
     230               zbactnh4 = znutlimtot * 5.0 * zlimnh4 / ( zlimno3 + 5.0 * zlimnh4 + rtrn ) 
     231               zbactno3 = znutlimtot * zlimno3 / ( zlimno3 + 5.0 * zlimnh4 + rtrn ) 
    236232               ! 
    237233               zlim1    = zbactno3 + zbactnh4 
     
    250246               ! Limitation of N based nutrients uptake (NO3 and NH4) 
    251247               zfalim = (1.-fanano) / fanano 
    252                xnanonh4(ji,jj,jk) = (1. - fanano) * trb(ji,jj,jk,jpnh4) / ( zfalim * zconc0nnh4 + trb(ji,jj,jk,jpnh4) ) 
    253                xnanono3(ji,jj,jk) = (1. - fanano) * trb(ji,jj,jk,jpno3) / ( zfalim * zconc0n + trb(ji,jj,jk,jpno3) )  & 
    254                &                    * (1. - xnanonh4(ji,jj,jk)) 
     248               zlimnh4 = trb(ji,jj,jk,jpnh4) / ( zconc0n + trb(ji,jj,jk,jpnh4) ) 
     249               zlimno3 = trb(ji,jj,jk,jpno3) / ( zconc0n + trb(ji,jj,jk,jpno3) ) 
     250               znutlimtot = (1. - fanano) * ( trb(ji,jj,jk,jpnh4) + trb(ji,jj,jk,jpno3) ) / ( zfalim * zconc0n + trb(ji,jj,jk,jpnh4) + trb(ji,jj,jk,jpno3) ) 
     251               xnanonh4(ji,jj,jk) = znutlimtot * 5.0 * zlimnh4 / ( zlimno3 + 5.0 * zlimnh4 + rtrn ) 
     252               xnanono3(ji,jj,jk) = znutlimtot * zlimno3 / ( zlimno3 + 5.0 * zlimnh4 + rtrn ) 
    255253               ! 
    256254               ! Limitation of P based nutrients (PO4 and DOP) 
    257255               zfalim = (1.-fananop) / fananop 
    258                xnanopo4(ji,jj,jk) = (1. - fananop) * trb(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + zfalim * zconc0npo4 ) 
    259                xnanodop(ji,jj,jk) = trb(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdop) + xkdoc )   & 
    260                &                    * ( 1.0 - xnanopo4(ji,jj,jk) ) 
    261                xnanodop(ji,jj,jk) = 0. 
     256               zlimpo4 = trb(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + zconc0npo4 ) 
     257               zlimdop = trb(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdop) + zconc0npo4 ) 
     258               znutlimtot = (1. - fananop) * ( trb(ji,jj,jk,jppo4) + trb(ji,jj,jk,jpdop) ) / ( zfalim * zconc0npo4 + trb(ji,jj,jk,jppo4) + trb(ji,jj,jk,jpdop) ) 
     259               xnanopo4(ji,jj,jk) = znutlimtot * 100.0 * zlimpo4 / ( zlimdop + 100.0 * zlimpo4 + rtrn ) 
     260               xnanodop(ji,jj,jk) = znutlimtot * zlimdop / ( zlimdop + 100.0 * zlimpo4 + rtrn ) 
    262261               ! 
    263262               ! Limitation of Fe uptake 
    264263               zfalim = (1.-fananof) / fananof 
    265                xnanofer(ji,jj,jk) = (1. - fananof) * biron(ji,jj,jk) / ( biron(ji,jj,jk) + zfalim * zconcnfe ) 
     264               xnanofer(ji,jj,jk) = (1. - fananof) * zbiron / ( zbiron + zfalim * zconcnfe ) 
    266265               ! 
    267266               ! The minimum iron quota depends on the size of PSU, respiration 
     
    270269               zratiof   = trb(ji,jj,jk,jpnfe) * z1_trnphy 
    271270               zqfemn = xcoef1 * znanochl + xcoef2 + xcoef3 * xnanono3(ji,jj,jk) 
     271               xqfuncfecn(ji,jj,jk) = zqfemn + qfnopt 
    272272               ! 
    273273               zration = trb(ji,jj,jk,jpnph) * z1_trnphy 
    274274               zration = MIN(xqnnmax(ji,jj,jk), MAX( xqnnmin(ji,jj,jk), zration )) 
    275                zzpsiuptk = xqnnmin(ji,jj,jk) * rno3 / zpsiuptk**2 
    276                fvnuptk(ji,jj,jk) = 1. / zzpsiuptk * xqnnmin(ji,jj,jk) / (zration + rtrn)  & 
     275               fvnuptk(ji,jj,jk) = 2.5 * zpsiuptk * xqnnmin(ji,jj,jk) / (zration + rtrn)  & 
    277276               &                   * MAX(0., (1. - zratchl * znanochl / 12. ) ) 
    278277               ! 
     
    282281               ! The value of the optimal quota in the formulation below 
    283282               ! has been found by solving a non linear equation 
    284                zlim1f = max(0., ( 1.086 - xqnnmin(ji,jj,jk) )  & 
     283               zlim1f = max(0., ( 1.13 - xqnnmin(ji,jj,jk) )  & 
    285284               &          / (xqnnmax(ji,jj,jk) - xqnnmin(ji,jj,jk) ) ) * xqnnmax(ji,jj,jk) 
    286285               zlim3  = MAX( 0.,( zratiof - zqfemn ) / qfnopt ) 
     
    297296               ! Limitation of N based nutrients uptake (NO3 and NH4)  
    298297               zfalim = (1.-fapico) / fapico  
    299                xpiconh4(ji,jj,jk) = (1. - fapico) * trb(ji,jj,jk,jpnh4) / ( zfalim * zconc0pnh4 + trb(ji,jj,jk,jpnh4) ) 
    300                xpicono3(ji,jj,jk) = (1. - fapico) * trb(ji,jj,jk,jpno3) / ( zfalim * zconc0p + trb(ji,jj,jk,jpno3) )  & 
    301                &                    * (1. - xpiconh4(ji,jj,jk)) 
     298               zlimnh4 = trb(ji,jj,jk,jpnh4) / ( zconc0p + trb(ji,jj,jk,jpnh4) ) 
     299               zlimno3 = trb(ji,jj,jk,jpno3) / ( zconc0p + trb(ji,jj,jk,jpno3) ) 
     300               znutlimtot = (1. - fapico) * ( trb(ji,jj,jk,jpnh4) + trb(ji,jj,jk,jpno3) )   & 
     301               &            / ( zfalim * zconc0p + trb(ji,jj,jk,jpnh4) + trb(ji,jj,jk,jpno3) ) 
     302               xpiconh4(ji,jj,jk) = znutlimtot * 5.0 * zlimnh4 / ( zlimno3 + 5.0 * zlimnh4 + rtrn ) 
     303               xpicono3(ji,jj,jk) = znutlimtot * zlimno3 / ( zlimno3 + 5.0 * zlimnh4 + rtrn ) 
    302304               ! 
    303305               ! Limitation of P based nutrients uptake (PO4 and DOP) 
    304306               zfalim = (1.-fapicop) / fapicop  
    305                xpicopo4(ji,jj,jk) = (1. - fapicop) * trb(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + zfalim * zconc0ppo4 ) 
    306                xpicodop(ji,jj,jk) = trb(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdop) + xkdoc )   & 
    307                &                    * ( 1.0 - xpicopo4(ji,jj,jk) ) 
    308                xpicodop(ji,jj,jk) = 0. 
     307               zlimpo4 = trb(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + zconc0ppo4 ) 
     308               zlimdop = trb(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdop) + zconc0ppo4 ) 
     309               znutlimtot = (1. - fapicop) * ( trb(ji,jj,jk,jppo4) + trb(ji,jj,jk,jpdop) ) / ( zfalim * zconc0ppo4 + trb(ji,jj,jk,jppo4) + trb(ji,jj,jk,jpdop) ) 
     310               xpicopo4(ji,jj,jk) = znutlimtot * 100.0 * zlimpo4 / ( zlimdop + 100.0 * zlimpo4 + rtrn ) 
     311               xpicodop(ji,jj,jk) = znutlimtot * zlimdop / ( zlimdop + 100.0 * zlimpo4 + rtrn ) 
    309312               ! 
    310313               zfalim = (1.-fapicof) / fapicof 
    311                xpicofer(ji,jj,jk) = (1. - fapicof) * biron(ji,jj,jk) / ( biron(ji,jj,jk) + zfalim * zconcpfe ) 
     314               xpicofer(ji,jj,jk) = (1. - fapicof) * zbiron / ( zbiron + zfalim * zconcpfe ) 
    312315               ! 
    313316               ! The minimum iron quota depends on the size of PSU, respiration 
    314317               ! and the reduction of nitrate following the parameterization  
    315318               ! proposed by Flynn and Hipkin (1999) 
    316                zratiof   = trb(ji,jj,jk,jppfe) * z1_trnpic 
     319               zratiof = trb(ji,jj,jk,jppfe) * z1_trnpic 
    317320               zqfemp = xcoef1 * zpicochl + xcoef2 + xcoef3 * xpicono3(ji,jj,jk) 
     321               xqfuncfecp(ji,jj,jk) = zqfemp + qfpopt 
    318322               ! 
    319323               zration   = trb(ji,jj,jk,jpnpi) * z1_trnpic 
    320324               zration = MIN(xqnpmax(ji,jj,jk), MAX( xqnpmin(ji,jj,jk), zration )) 
    321                zzpsiuptk = xqnpmin(ji,jj,jk) * rno3 / zpsiuptk**2 
    322                fvpuptk(ji,jj,jk) = 1. / zzpsiuptk * xqnpmin(ji,jj,jk) / (zration + rtrn)  & 
     325               fvpuptk(ji,jj,jk) = 2.5 * zpsiuptk * xqnpmin(ji,jj,jk) / (zration + rtrn)  & 
    323326               &                   * MAX(0., (1. - zratchl * zpicochl / 12. ) )  
    324327               ! 
     
    328331               ! The value of the optimal quota in the formulation below 
    329332               ! has been found by solving a non linear equation 
    330                zlim1f   = max(0., (1.367 - xqnpmin(ji,jj,jk) )  & 
     333               zlim1f   = max(0., (1.29 - xqnpmin(ji,jj,jk) )  & 
    331334               &          / (xqnpmax(ji,jj,jk) - xqnpmin(ji,jj,jk) ) ) * xqnpmax(ji,jj,jk) 
    332335               zlim3    = MAX( 0.,( zratiof - zqfemp ) / qfpopt ) 
     
    344347               ! Limitation of N based nutrients uptake (NO3 and NH4) 
    345348               zfalim = (1.-fadiat) / fadiat  
    346                xdiatnh4(ji,jj,jk) = (1. - fadiat) * trb(ji,jj,jk,jpnh4) / ( zfalim * zconc1dnh4 + trb(ji,jj,jk,jpnh4) ) 
    347                xdiatno3(ji,jj,jk) = (1. - fadiat) * trb(ji,jj,jk,jpno3) / ( zfalim * zconc1d + trb(ji,jj,jk,jpno3) )  & 
    348                &                    * (1. - xdiatnh4(ji,jj,jk)) 
     349               zlimnh4 = trb(ji,jj,jk,jpnh4) / ( zconc1d + trb(ji,jj,jk,jpnh4) ) 
     350               zlimno3 = trb(ji,jj,jk,jpno3) / ( zconc1d + trb(ji,jj,jk,jpno3) ) 
     351               znutlimtot = (1.0 - fadiat) * ( trb(ji,jj,jk,jpnh4) + trb(ji,jj,jk,jpno3) )    & 
     352               &            / ( zfalim * zconc1d + trb(ji,jj,jk,jpnh4) + trb(ji,jj,jk,jpno3) ) 
     353               xdiatnh4(ji,jj,jk) = znutlimtot * 5.0 * zlimnh4 / ( zlimno3 + 5.0 * zlimnh4 + rtrn ) 
     354               xdiatno3(ji,jj,jk) = znutlimtot * zlimno3 / ( zlimno3 + 5.0 * zlimnh4 + rtrn ) 
    349355               ! 
    350356               ! Limitation of P based nutrients uptake (PO4 and DOP) 
    351357               zfalim = (1.-fadiatp) / fadiatp 
    352                xdiatpo4(ji,jj,jk) = (1. - fadiatp) * trb(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + zfalim * zconc0dpo4 ) 
    353                xdiatdop(ji,jj,jk) = trb(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdop) + xkdoc )  & 
    354                &                    * ( 1.0 - xdiatpo4(ji,jj,jk) ) 
    355                xdiatdop(ji,jj,jk) = 0. 
     358               zlimpo4 = trb(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + zconc0dpo4 ) 
     359               zlimdop = trb(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdop) + zconc0dpo4 ) 
     360               znutlimtot = (1. - fadiatp) * ( trb(ji,jj,jk,jppo4) + trb(ji,jj,jk,jpdop) ) / ( zfalim * zconc0dpo4 + trb(ji,jj,jk,jppo4) + trb(ji,jj,jk,jpdop) ) 
     361               xdiatpo4(ji,jj,jk) = znutlimtot * 100.0 * zlimpo4 / ( zlimdop + 100.0 * zlimpo4 + rtrn ) 
     362               xdiatdop(ji,jj,jk) = znutlimtot * zlimdop / ( zlimdop + 100.0 * zlimpo4 + rtrn ) 
    356363               ! 
    357364               ! Limitation of Fe uptake 
    358365               zfalim = (1.-fadiatf) / fadiatf 
    359                xdiatfer(ji,jj,jk) = (1. - fadiatf) * biron(ji,jj,jk) / ( biron(ji,jj,jk) + zfalim * zconcdfe ) 
     366               xdiatfer(ji,jj,jk) = (1. - fadiatf) * zbiron / ( zbiron + zfalim * zconcdfe ) 
    360367               ! 
    361368               ! The minimum iron quota depends on the size of PSU, respiration 
     
    364371               zratiof   = trb(ji,jj,jk,jpdfe) * z1_trndia 
    365372               zqfemd = xcoef1 * zdiatchl + xcoef2 + xcoef3 * xdiatno3(ji,jj,jk) 
     373               xqfuncfecd(ji,jj,jk) = zqfemd + qfdopt 
    366374               ! 
    367375               zration   = trb(ji,jj,jk,jpndi) * z1_trndia 
    368376               zration   = MIN(xqndmax(ji,jj,jk), MAX( xqndmin(ji,jj,jk), zration )) 
    369                zzpsiuptk = xqndmin(ji,jj,jk) * rno3 / zpsiuptk**2 
    370                fvduptk(ji,jj,jk) = 1. / zzpsiuptk * xqndmin(ji,jj,jk) / (zration + rtrn)   & 
     377               fvduptk(ji,jj,jk) = 2.5 * zpsiuptk * xqndmin(ji,jj,jk) / (zration + rtrn)   & 
    371378               &                   * MAX(0., (1. - zratchl * zdiatchl / 12. ) )  
    372379               ! 
     
    376383               ! The value of the optimal quota in the formulation below 
    377384               ! has been found by solving a non linear equation 
    378                zlim1f   = max(0., (1.077 - xqndmin(ji,jj,jk) )    & 
     38565             zlim1f   = max(0., (1.13 - xqndmin(ji,jj,jk) )    & 
    379386               &          / (xqndmax(ji,jj,jk) - xqndmin(ji,jj,jk) ) )   & 
    380387               &          * xqndmax(ji,jj,jk) 
     
    408415               ! ------------------------------ 
    409416               zfuptk = 0.2 + 0.12 / ( 3.0 * sizen(ji,jj,jk) + rtrn ) 
    410                zrpho  = 1.54 * trb(ji,jj,jk,jpnch) / ( trb(ji,jj,jk,jpnph) * rno3 * 14. + rtrn ) 
     417               ! Computed from Inomura et al. (2020) using Pavlova Lutheri 
     418               zrpho  = 11.55 * trb(ji,jj,jk,jpnch) / ( trb(ji,jj,jk,jpphy) * 12. + rtrn ) 
    411419               zrass = MAX(0.62/4., ( 1. - zrpho - zfuptk ) * xlimnpn(ji,jj,jk) ) 
    412                xqpnmin(ji,jj,jk) = ( 0.0 + 0.0078 + 0.62/4. * 0.0783 * xqnnmin(ji,jj,jk) ) * 16. 
    413                xqpnmax(ji,jj,jk) = ( zrpho * 0.0128 + zrass * 0.0783 ) * 16. 
    414                xqpnmax(ji,jj,jk) = xqpnmax(ji,jj,jk) * trb(ji,jj,jk,jpnph) / ( trb(ji,jj,jk,jpphy) + rtrn )  & 
    415                &      + (0.033 + 0.0078 ) * 16. 
     420               zrassn(ji,jj,jk) = zrass 
     421               xqpnmin(ji,jj,jk) = ( 0.0 + 0.0078 + 0.62/4. * 0.0783 ) * 16. 
     422               xqpnmax(ji,jj,jk) = ( zrpho * 0.0089 + zrass * 0.0783 ) * 16. 
     423               xqpnmax(ji,jj,jk) = xqpnmax(ji,jj,jk) + (0.033 + 0.0078 ) * 16. 
    416424               xqpnmax(ji,jj,jk) = MIN( qpnmax, xqpnmax(ji,jj,jk) ) 
    417  
    418425 
    419426               ! Size estimation of picophytoplankton based on total biomass 
     
    425432               ! N/P ratio of picophytoplankton 
    426433               ! ------------------------------ 
    427                zfuptk = 0.2 + 0.12 / ( 0.5 * sizep(ji,jj,jk) + rtrn ) 
    428                zrpho = 1.54 * trb(ji,jj,jk,jppch) / ( trb(ji,jj,jk,jpnpi) * rno3 * 14. + rtrn ) 
     434               zfuptk = 0.2 + 0.12 / ( 0.8 * sizep(ji,jj,jk) + rtrn ) 
     435               ! Computed from Inomura et al. (2020) using a synechococcus 
     436               zrpho = 13.4 * trb(ji,jj,jk,jppch) / ( trb(ji,jj,jk,jppic) * 12. + rtrn ) 
    429437               zrass = MAX(0.4/4., ( 1. - zrpho - zfuptk ) * xlimnpp(ji,jj,jk) ) 
    430                xqppmin(ji,jj,jk) = ( (0.0 + 0.0078 ) + 0.4/4. * 0.0517 * xqnpmin(ji,jj,jk) ) * 16. 
    431                xqppmax(ji,jj,jk) = ( zrpho * 0.0128 + zrass * 0.0517 ) * 16. 
    432                xqppmax(ji,jj,jk) = xqppmax(ji,jj,jk) * trb(ji,jj,jk,jpnpi) / ( trb(ji,jj,jk,jppic) + rtrn ) & 
    433                &      +  (0.033 + 0.0078 ) * 16 
     438               zrassp(ji,jj,jk) = zrass 
     439               xqppmin(ji,jj,jk) = ( (0.0 + 0.0078 ) + 0.4/4. * 0.0517 ) * 16. 
     440               xqppmax(ji,jj,jk) = ( zrpho * 0.0076 + zrass * 0.0517 ) * 16. 
     441               xqppmax(ji,jj,jk) = xqppmax(ji,jj,jk) +  (0.033 + 0.0078 ) * 16 
    434442               xqppmax(ji,jj,jk) = MIN( qppmax, xqppmax(ji,jj,jk) ) 
    435443 
     
    443451               ! -------------------- 
    444452               zfuptk = 0.2 + 0.12 / ( 5.0 * sized(ji,jj,jk) + rtrn ) 
    445                zrpho = 1.54 * trb(ji,jj,jk,jpdch) / ( trb(ji,jj,jk,jpndi) * rno3 * 14. + rtrn ) 
     453               ! Computed from Inomura et al. (2020) using a synechococcus 
     454               zrpho = 8.08 * trb(ji,jj,jk,jpdch) / ( trb(ji,jj,jk,jpndi) * 12. + rtrn ) 
    446455               zrass = MAX(0.66/4., ( 1. - zrpho - zfuptk ) * xlimnpd(ji,jj,jk) ) 
    447  
    448                xqpdmin(ji,jj,jk) = ( ( 0.0 + 0.0078 ) + 0.66/4. * 0.0783 *  xqndmin(ji,jj,jk) ) * 16. 
    449                xqpdmax(ji,jj,jk) = ( zrpho * 0.0128 + zrass * 0.0783 ) * 16. 
    450                xqpdmax(ji,jj,jk) = xqpdmax(ji,jj,jk) * trb(ji,jj,jk,jpndi) / ( trb(ji,jj,jk,jpdia) + rtrn ) & 
    451                &      + ( 0.0078 + 0.033 ) * 16. 
     456               zrassd(ji,jj,jk)=zrass 
     457               xqpdmin(ji,jj,jk) = ( ( 0.0 + 0.0078 ) + 0.66/4. * 0.0783 ) * 16. 
     458               xqpdmax(ji,jj,jk) = ( zrpho * 0.0135 + zrass * 0.0783 ) * 16. 
     459               xqpdmax(ji,jj,jk) = xqpdmax(ji,jj,jk) + ( 0.0078 + 0.033 ) * 16. 
    452460               xqpdmax(ji,jj,jk) = MIN(qpdmax, xqpdmax(ji,jj,jk) ) 
    453461 
     
    467475               &        / ( trb(ji,jj,jk,jpnh4) + concnnh4 ) ) 
    468476               zlim2  = trb(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + concnpo4 ) 
    469                zlim3  = trb(ji,jj,jk,jpfer) / ( trb(ji,jj,jk,jpfer) +  5.E-11 )  
    470                ztem1  = MAX( 0., tsn(ji,jj,jk,jp_tem) ) 
     477               zlim3  = trb(ji,jj,jk,jpfer) / ( trb(ji,jj,jk,jpfer) +  6.E-11 )  
     478               ztem1  = MAX( 0., tsn(ji,jj,jk,jp_tem) + 1.8 ) 
    471479               ztem2  = tsn(ji,jj,jk,jp_tem) - 10. 
    472                zetot1 = MAX( 0., etot(ji,jj,jk) - 1.) / ( 4. + etot(ji,jj,jk) ) * 20. / ( 20. + etot(ji,jj,jk) )  
    473  
    474                xfracal(ji,jj,jk) = caco3r * MIN( zlim1, zlim2, zlim3 )    & 
    475                &                   * ztem1 / ( 1. + ztem1 ) * MAX( 1., trb(ji,jj,jk,jpphy)*1E6 )   & 
     480               zetot1 = MAX( 0., etot_ndcy(ji,jj,jk) - 1.) / ( 4. + etot_ndcy(ji,jj,jk) ) * 30. / ( 30. + etot_ndcy(ji,jj,jk) )  
     481 
     482               xfracal(ji,jj,jk) = caco3r * xlimphy(ji,jj,jk)     & 
     483               &                   * ztem1 / ( 0.1 + ztem1 ) * MAX( 1., trb(ji,jj,jk,jpphy)*1E6 )   & 
    476484                  &                * ( 1. + EXP(-ztem2 * ztem2 / 25. ) )         & 
    477485                  &                * zetot1 * MIN( 1., 50. / ( hmld(ji,jj) + rtrn ) ) 
     
    508516        IF( iom_use( "SIZEP"   ) ) CALL iom_put( "SIZEP"  , sizep(:,:,:) * tmask(:,:,:) )  ! Iron limitation term 
    509517        IF( iom_use( "SIZED"   ) ) CALL iom_put( "SIZED"  , sized(:,:,:) * tmask(:,:,:) )  ! Iron limitation term 
     518        IF( iom_use( "RASSN"   ) ) CALL iom_put( "RASSN"  , zrassn(:,:,:) * tmask(:,:,:) )  ! Iron limitation term 
     519        IF( iom_use( "RASSP"   ) ) CALL iom_put( "RASSP"  , zrassp(:,:,:) * tmask(:,:,:) )  ! Iron limitation term 
     520        IF( iom_use( "RASSD"   ) ) CALL iom_put( "RASSD"  , zrassd(:,:,:) * tmask(:,:,:) )  ! Iron limitation term 
    510521      ENDIF 
    511522      ! 
     
    640651         &      fvnuptk (jpi,jpj,jpk), fvduptk (jpi,jpj,jpk),       & 
    641652         &      xlimphys(jpi,jpj,jpk), xlimdias(jpi,jpj,jpk),       & 
    642          &      xlimpics(jpi,jpj,jpk),                              & 
     653         &      xlimnpp (jpi,jpj,jpk), xlimnpn (jpi,jpj,jpk),       & 
     654         &      xlimnpd (jpi,jpj,jpk),                              & 
     655         &      xlimpics(jpi,jpj,jpk), xqfuncfecp(jpi,jpj,jpk),     & 
    643656         &      fvpuptk (jpi,jpj,jpk), xlimpic (jpi,jpj,jpk),    STAT=ierr(1) ) 
    644657         ! 
Note: See TracChangeset for help on using the changeset viewer.