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 9450 for branches/CNRS/dev_r8832_PISCO/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zlim.F90 – NEMO

Ignore:
Timestamp:
2018-03-30T18:08:29+02:00 (6 years ago)
Author:
aumont
Message:

debug PISCES code

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/CNRS/dev_r8832_PISCO/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zlim.F90

    r8533 r9450  
    2020 
    2121   PUBLIC p4z_lim     
     22   PUBLIC p5z_lim 
    2223   PUBLIC p4z_lim_init     
     24   PUBLIC p5z_lim_init 
    2325   PUBLIC p4z_lim_alloc 
    2426 
    2527   !! * Shared module variables 
    2628   REAL(wp), PUBLIC ::  concnno3    !:  NO3, PO4 half saturation    
     29   REAL(wp), PUBLIC ::  concpno3    !:  NO3, PO4 half saturation    
    2730   REAL(wp), PUBLIC ::  concdno3    !:  Phosphate half saturation for diatoms   
    2831   REAL(wp), PUBLIC ::  concnnh4    !:  NH4 half saturation for phyto   
     32   REAL(wp), PUBLIC ::  concpnh4    !:  NH4 half saturation for phyto   
    2933   REAL(wp), PUBLIC ::  concdnh4    !:  NH4 half saturation for diatoms 
     34   REAL(wp), PUBLIC ::  concnpo4    !:  NH4 half saturation for diatoms 
     35   REAL(wp), PUBLIC ::  concppo4    !:  NH4 half saturation for diatoms 
     36   REAL(wp), PUBLIC ::  concdpo4    !:  NH4 half saturation for diatoms 
    3037   REAL(wp), PUBLIC ::  concnfer    !:  Iron half saturation for nanophyto  
     38   REAL(wp), PUBLIC ::  concpfer    !:  Iron half saturation for nanophyto  
    3139   REAL(wp), PUBLIC ::  concdfer    !:  Iron half saturation for diatoms   
    3240   REAL(wp), PUBLIC ::  concbno3    !:  NO3 half saturation  for bacteria  
    3341   REAL(wp), PUBLIC ::  concbnh4    !:  NH4 half saturation for bacteria 
     42   REAL(wp), PUBLIC ::  concbpo4    !:  PO4 half saturation for bacteria 
    3443   REAL(wp), PUBLIC ::  xsizedia    !:  Minimum size criteria for diatoms 
     44   REAL(wp), PUBLIC ::  xsizepic    !:  Minimum size criteria for diatoms 
    3545   REAL(wp), PUBLIC ::  xsizephy    !:  Minimum size criteria for nanophyto 
    3646   REAL(wp), PUBLIC ::  xsizern     !:  Size ratio for nanophytoplankton 
     47   REAL(wp), PUBLIC ::  xsizerp     !:  Size ratio for nanophytoplankton 
    3748   REAL(wp), PUBLIC ::  xsizerd     !:  Size ratio for diatoms 
    3849   REAL(wp), PUBLIC ::  xksi1       !:  half saturation constant for Si uptake  
     
    4152   REAL(wp), PUBLIC ::  concbfe     !:  Fe half saturation for bacteria  
    4253   REAL(wp), PUBLIC ::  oxymin      !:  half saturation constant for anoxia 
     54   REAL(wp), PUBLIC ::  qfnopt      !:  optimal Fe quota for nanophyto 
     55   REAL(wp), PUBLIC ::  qfpopt      !:  optimal Fe quota for nanophyto 
     56   REAL(wp), PUBLIC ::  qfdopt      !:  optimal Fe quota for diatoms 
     57   REAL(wp), PUBLIC ::  qnnmin      !:  optimal Fe quota for diatoms 
     58   REAL(wp), PUBLIC ::  qnnmax      !:  optimal Fe quota for diatoms 
     59   REAL(wp), PUBLIC ::  qpnmin      !:  optimal Fe quota for diatoms 
     60   REAL(wp), PUBLIC ::  qpnmax      !:  optimal Fe quota for diatoms 
     61   REAL(wp), PUBLIC ::  qnpmin      !:  optimal Fe quota for diatoms 
     62   REAL(wp), PUBLIC ::  qnpmax      !:  optimal Fe quota for diatoms 
     63   REAL(wp), PUBLIC ::  qppmin      !:  optimal Fe quota for diatoms 
     64   REAL(wp), PUBLIC ::  qppmax      !:  optimal Fe quota for diatoms 
     65   REAL(wp), PUBLIC ::  qndmin      !:  optimal Fe quota for diatoms 
     66   REAL(wp), PUBLIC ::  qndmax      !:  optimal Fe quota for diatoms 
     67   REAL(wp), PUBLIC ::  qpdmin      !:  optimal Fe quota for diatoms 
     68   REAL(wp), PUBLIC ::  qpdmax      !:  optimal Fe quota for diatoms 
     69   REAL(wp), PUBLIC ::  qfnmax      !:  optimal Fe quota for diatoms 
     70   REAL(wp), PUBLIC ::  qfpmax      !:  optimal Fe quota for diatoms 
     71   REAL(wp), PUBLIC ::  qfdmax      !:  optimal Fe quota for diatoms 
    4372   REAL(wp), PUBLIC ::  qnfelim     !:  optimal Fe quota for nanophyto 
    4473   REAL(wp), PUBLIC ::  qdfelim     !:  optimal Fe quota for diatoms 
    4574   REAL(wp), PUBLIC ::  caco3r      !:  mean rainratio  
     75   REAL(wp), PUBLIC ::  zpsinh4 
     76   REAL(wp), PUBLIC ::  zpsino3 
     77   REAL(wp), PUBLIC ::  zpsiuptk 
    4678 
    4779   !!* Phytoplankton limitation terms 
    4880   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xnanono3   !: ??? 
     81   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xpicono3   !: ??? 
    4982   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xdiatno3   !: ??? 
    5083   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xnanonh4   !: ??? 
     84   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xpiconh4   !: ??? 
    5185   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xdiatnh4   !: ??? 
    5286   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xnanopo4   !: ??? 
     87   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xpicopo4   !: ??? 
    5388   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xdiatpo4   !: ??? 
     89   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xnanodop   !: ??? 
     90   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xpicodop   !: ??? 
     91   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xdiatdop   !: ??? 
     92   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xnanofer   !: ??? 
     93   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xpicofer   !: ??? 
     94   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xdiatfer   !: ??? 
    5495   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xlimphy    !: ??? 
     96   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xlimpic    !: ??? 
    5597   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xlimdia    !: ??? 
    5698   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xlimnfe    !: ??? 
     99   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xlimpfe    !: ??? 
    57100   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xlimdfe    !: ??? 
    58101   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xlimsi     !: ??? 
     102   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xlimsi2    !: ??? 
    59103   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xlimbac    !: ?? 
    60104   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xlimbacl   !: ?? 
    61105   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   concdfe    !: ??? 
    62106   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   concnfe    !: ??? 
     107   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   fvnuptk 
     108   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   fvpuptk 
     109   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   fvduptk 
     110 
     111   !!*  Allometric variations of the quotas 
     112   REAL(wp), PUBLIC, ALLOCATABLE, SAVE,   DIMENSION(:,:,:)  ::   xqnnmin    !: ??? 
     113   REAL(wp), PUBLIC, ALLOCATABLE, SAVE,   DIMENSION(:,:,:)  ::   xqnnmax    !: ??? 
     114   REAL(wp), PUBLIC, ALLOCATABLE, SAVE,   DIMENSION(:,:,:)  ::   xqpnmin    !: ??? 
     115   REAL(wp), PUBLIC, ALLOCATABLE, SAVE,   DIMENSION(:,:,:)  ::   xqpnmax    !: ??? 
     116   REAL(wp), PUBLIC, ALLOCATABLE, SAVE,   DIMENSION(:,:,:)  ::   xqnpmin    !: ??? 
     117   REAL(wp), PUBLIC, ALLOCATABLE, SAVE,   DIMENSION(:,:,:)  ::   xqnpmax    !: ??? 
     118   REAL(wp), PUBLIC, ALLOCATABLE, SAVE,   DIMENSION(:,:,:)  ::   xqppmin    !: ??? 
     119   REAL(wp), PUBLIC, ALLOCATABLE, SAVE,   DIMENSION(:,:,:)  ::   xqppmax    !: ??? 
     120   REAL(wp), PUBLIC, ALLOCATABLE, SAVE,   DIMENSION(:,:,:)  ::   xqndmin    !: ??? 
     121   REAL(wp), PUBLIC, ALLOCATABLE, SAVE,   DIMENSION(:,:,:)  ::   xqndmax    !: ??? 
     122   REAL(wp), PUBLIC, ALLOCATABLE, SAVE,   DIMENSION(:,:,:)  ::   xqpdmin    !: ??? 
     123   REAL(wp), PUBLIC, ALLOCATABLE, SAVE,   DIMENSION(:,:,:)  ::   xqpdmax    !: ? 
    63124 
    64125   ! Coefficient for iron limitation 
    65    REAL(wp) ::  xcoef1   = 0.0016  / 55.85   
     126   REAL(wp) ::  xcoef1   = 0.00167  / 55.85   
    66127   REAL(wp) ::  xcoef2   = 1.21E-5 * 14. / 55.85 / 7.625 * 0.5 * 1.5 
    67128   REAL(wp) ::  xcoef3   = 1.15E-4 * 14. / 55.85 / 7.625 * 0.5  
     
    227288      ! 
    228289   END SUBROUTINE p4z_lim 
     290 
     291 
     292   SUBROUTINE p5z_lim( kt, knt ) 
     293      !!--------------------------------------------------------------------- 
     294      !!                     ***  ROUTINE p5z_lim  *** 
     295      !! 
     296      !! ** Purpose :   Compute the co-limitations by the various nutrients 
     297      !!              for the various phytoplankton species 
     298      !! 
     299      !! ** Method  : - ??? 
     300      !!--------------------------------------------------------------------- 
     301      ! 
     302      INTEGER, INTENT(in)  :: kt, knt 
     303      ! 
     304      INTEGER  ::   ji, jj, jk 
     305      REAL(wp) ::   zlim1, zlim2, zlim3, zlim4, zno3, zferlim 
     306      REAL(wp) ::   z1_trndia, z1_trnpic, z1_trnphy, ztem1, ztem2, zetot1 
     307      REAL(wp) ::   zratio, zration, zratiof, znutlim, zfalim 
     308      REAL(wp) ::   zconc1d, zconc1dnh4, zconc0n, zconc0nnh4, zconc0npo4, zconc0dpo4 
     309      REAL(wp) ::   zconc0p, zconc0pnh4, zconc0ppo4, zconcpfe, zconcnfe, zconcdfe 
     310      REAL(wp) ::   fanano, fananop, fananof, fadiat, fadiatp, fadiatf 
     311      REAL(wp) ::   fapico, fapicop, fapicof 
     312      REAL(wp) ::   zrpho, zrass, zcoef, zfuptk, zratchl 
     313      REAL(wp) ::   zfvn, zfvp, zfvf, zsizen, zsizep, zsized, znanochl, zpicochl, zdiatchl 
     314      REAL(wp) ::   zqfemn, zqfemp, zqfemd, zbactno3, zbactnh4 
     315      !!--------------------------------------------------------------------- 
     316      ! 
     317      !!--------------------------------------------------------------------- 
     318      ! 
     319      IF( nn_timing == 1 )  CALL timing_start('p5z_lim') 
     320      ! 
     321      zratchl = 6.0 
     322      ! 
     323      DO jk = 1, jpkm1 
     324         DO jj = 1, jpj 
     325            DO ji = 1, jpi 
     326               !  
     327               ! Tuning of the iron concentration to a minimum level that is set to the detection limit 
     328               !------------------------------------- 
     329               zno3    = trb(ji,jj,jk,jpno3) / 40.e-6 
     330               zferlim = MAX( 3e-11 * zno3 * zno3, 5e-12 ) 
     331               zferlim = MIN( zferlim, 7e-11 ) 
     332               trb(ji,jj,jk,jpfer) = MAX( trb(ji,jj,jk,jpfer), zferlim ) 
     333 
     334               ! Computation of the mean relative size of each community 
     335               ! ------------------------------------------------------- 
     336               z1_trnphy   = 1. / ( trb(ji,jj,jk,jpphy) + rtrn ) 
     337               z1_trnpic   = 1. / ( trb(ji,jj,jk,jppic) + rtrn ) 
     338               z1_trndia   = 1. / ( trb(ji,jj,jk,jpdia) + rtrn ) 
     339               znanochl = trb(ji,jj,jk,jpnch) * z1_trnphy 
     340               zpicochl = trb(ji,jj,jk,jppch) * z1_trnpic 
     341               zdiatchl = trb(ji,jj,jk,jpdch) * z1_trndia 
     342 
     343               ! Computation of a variable Ks for iron on diatoms taking into account 
     344               ! that increasing biomass is made of generally bigger cells 
     345               !------------------------------------------------ 
     346               zsized            = sized(ji,jj,jk)**0.81 
     347               zconcdfe          = concdfer * zsized 
     348               zconc1d           = concdno3 * zsized 
     349               zconc1dnh4        = concdnh4 * zsized 
     350               zconc0dpo4        = concdpo4 * zsized 
     351 
     352               zsizep            = 1. 
     353               zconcpfe          = concpfer * zsizep 
     354               zconc0p           = concpno3 * zsizep 
     355               zconc0pnh4        = concpnh4 * zsizep 
     356               zconc0ppo4        = concppo4 * zsizep 
     357 
     358               zsizen            = 1. 
     359               zconcnfe          = concnfer * zsizen 
     360               zconc0n           = concnno3 * zsizen 
     361               zconc0nnh4        = concnnh4 * zsizen 
     362               zconc0npo4        = concnpo4 * zsizen 
     363 
     364               ! Allometric variations of the minimum and maximum quotas 
     365               ! From Talmy et al. (2014) and Maranon et al. (2013) 
     366               ! ------------------------------------------------------- 
     367               xqnnmin(ji,jj,jk) = qnnmin 
     368               xqnnmax(ji,jj,jk) = qnnmax 
     369               xqndmin(ji,jj,jk) = qndmin * sized(ji,jj,jk)**(-0.27) 
     370               xqndmax(ji,jj,jk) = qndmax 
     371               xqnpmin(ji,jj,jk) = qnpmin 
     372               xqnpmax(ji,jj,jk) = qnpmax 
     373 
     374               ! Computation of the optimal allocation parameters 
     375               ! Based on the different papers by Pahlow et al., and Smith et al. 
     376               ! ----------------------------------------------------------------- 
     377               znutlim = MAX( trb(ji,jj,jk,jpnh4) / zconc0nnh4,    & 
     378                 &         trb(ji,jj,jk,jpno3) / zconc0n) 
     379               fanano = MAX(0.01, MIN(0.99, 1. / ( SQRT(znutlim) + 1.) ) ) 
     380               znutlim = trb(ji,jj,jk,jppo4) / zconc0npo4 
     381               fananop = MAX(0.01, MIN(0.99, 1. / ( SQRT(znutlim) + 1.) ) ) 
     382               znutlim = biron(ji,jj,jk) / zconcnfe 
     383               fananof = MAX(0.01, MIN(0.99, 1. / ( SQRT(znutlim) + 1.) ) ) 
     384               znutlim = MAX( trb(ji,jj,jk,jpnh4) / zconc0pnh4,    & 
     385                 &         trb(ji,jj,jk,jpno3) / zconc0p) 
     386               fapico = MAX(0.01, MIN(0.99, 1. / ( SQRT(znutlim) + 1.) ) ) 
     387               znutlim = trb(ji,jj,jk,jppo4) / zconc0ppo4 
     388               fapicop = MAX(0.01, MIN(0.99, 1. / ( SQRT(znutlim) + 1.) ) ) 
     389               znutlim = biron(ji,jj,jk) / zconcpfe 
     390               fapicof = MAX(0.01, MIN(0.99, 1. / ( SQRT(znutlim) + 1.) ) ) 
     391               znutlim = MAX( trb(ji,jj,jk,jpnh4) / zconc1dnh4,    & 
     392                 &         trb(ji,jj,jk,jpno3) / zconc1d ) 
     393               fadiat = MAX(0.01, MIN(0.99, 1. / ( SQRT(znutlim) + 1.) ) ) 
     394               znutlim = trb(ji,jj,jk,jppo4) / zconc0dpo4 
     395               fadiatp = MAX(0.01, MIN(0.99, 1. / ( SQRT(znutlim) + 1.) ) ) 
     396               znutlim = biron(ji,jj,jk) / zconcdfe 
     397               fadiatf = MAX(0.01, MIN(0.99, 1. / ( SQRT(znutlim) + 1.) ) ) 
     398               ! 
     399               ! Michaelis-Menten Limitation term for nutrients Small bacteria 
     400               ! ------------------------------------------------------------- 
     401               zbactnh4 = trb(ji,jj,jk,jpnh4) / ( concbnh4 + trb(ji,jj,jk,jpnh4) ) 
     402               zbactno3 = trb(ji,jj,jk,jpno3) / ( concbno3 + trb(ji,jj,jk,jpno3) ) * (1. - zbactnh4) 
     403               ! 
     404               zlim1    = zbactno3 + zbactnh4 
     405               zlim2    = trb(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + concbpo4) 
     406               zlim3    = biron(ji,jj,jk) / ( concbfe + biron(ji,jj,jk) ) 
     407               zlim4    = trb(ji,jj,jk,jpdoc) / ( xkdoc   + trb(ji,jj,jk,jpdoc) ) 
     408               xlimbacl(ji,jj,jk) = MIN( zlim1, zlim2, zlim3 ) 
     409               xlimbac (ji,jj,jk) = xlimbacl(ji,jj,jk) * zlim4 
     410               ! 
     411               ! Michaelis-Menten Limitation term for nutrients Small flagellates 
     412               ! ----------------------------------------------- 
     413               zfalim = (1.-fanano) / fanano 
     414               xnanonh4(ji,jj,jk) = (1. - fanano) * trb(ji,jj,jk,jpnh4) / ( zfalim * zconc0nnh4 + trb(ji,jj,jk,jpnh4) ) 
     415               xnanono3(ji,jj,jk) = (1. - fanano) * trb(ji,jj,jk,jpno3) / ( zfalim * zconc0n + trb(ji,jj,jk,jpno3) )  & 
     416               &                    * (1. - xnanonh4(ji,jj,jk)) 
     417               ! 
     418               zfalim = (1.-fananop) / fananop 
     419               xnanopo4(ji,jj,jk) = (1. - fananop) * trb(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + zfalim * zconc0npo4 ) 
     420               xnanodop(ji,jj,jk) = trb(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdop) + xkdoc )   & 
     421               &                    * ( 1.0 - xnanopo4(ji,jj,jk) ) 
     422               xnanodop(ji,jj,jk) = 0. 
     423               ! 
     424               zfalim = (1.-fananof) / fananof 
     425               xnanofer(ji,jj,jk) = (1. - fananof) * biron(ji,jj,jk) / ( biron(ji,jj,jk) + zfalim * zconcnfe ) 
     426               ! 
     427               zratiof   = trb(ji,jj,jk,jpnfe) * z1_trnphy 
     428               zqfemn = xcoef1 * znanochl + xcoef2 + xcoef3 * xnanono3(ji,jj,jk) 
     429               ! 
     430               zration = trb(ji,jj,jk,jpnph) * z1_trnphy 
     431               zration = MIN(xqnnmax(ji,jj,jk), MAX( 2. * xqnnmin(ji,jj,jk), zration )) 
     432               fvnuptk(ji,jj,jk) = 1. / zpsiuptk * rno3 * 2. * xqnnmin(ji,jj,jk) / (zration + rtrn)  & 
     433               &                   * MAX(0., (1. - zratchl * znanochl / 12. ) ) 
     434               ! 
     435               zlim1    = max(0., (zration - 2. * xqnnmin(ji,jj,jk) )  & 
     436               &          / (xqnnmax(ji,jj,jk) - 2. * xqnnmin(ji,jj,jk) ) ) * xqnnmax(ji,jj,jk)  & 
     437               &          / (zration + rtrn) 
     438               zlim3    = MAX( 0.,( zratiof - zqfemn ) / qfnopt ) 
     439               xlimnfe(ji,jj,jk) = MIN( 1., zlim3 ) 
     440               xlimphy(ji,jj,jk) = MIN( 1., zlim1, zlim3 ) 
     441               ! 
     442               ! Michaelis-Menten Limitation term for nutrients picophytoplankton 
     443               ! ---------------------------------------------------------------- 
     444               zfalim = (1.-fapico) / fapico 
     445               xpiconh4(ji,jj,jk) = (1. - fapico) * trb(ji,jj,jk,jpnh4) / ( zfalim * zconc0pnh4 + trb(ji,jj,jk,jpnh4) ) 
     446               xpicono3(ji,jj,jk) = (1. - fapico) * trb(ji,jj,jk,jpno3) / ( zfalim * zconc0p + trb(ji,jj,jk,jpno3) )  & 
     447               &                    * (1. - xpiconh4(ji,jj,jk)) 
     448               ! 
     449               zfalim = (1.-fapicop) / fapicop 
     450               xpicopo4(ji,jj,jk) = (1. - fapicop) * trb(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + zfalim * zconc0ppo4 ) 
     451               xpicodop(ji,jj,jk) = trb(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdop) + xkdoc )   & 
     452               &                    * ( 1.0 - xpicopo4(ji,jj,jk) ) 
     453               xpicodop(ji,jj,jk) = 0. 
     454               ! 
     455               zfalim = (1.-fapicof) / fapicof 
     456               xpicofer(ji,jj,jk) = (1. - fapicof) * biron(ji,jj,jk) / ( biron(ji,jj,jk) + zfalim * zconcpfe ) 
     457               ! 
     458               zratiof   = trb(ji,jj,jk,jppfe) * z1_trnpic 
     459               zqfemp = xcoef1 * zpicochl + xcoef2 + xcoef3 * xpicono3(ji,jj,jk) 
     460               ! 
     461               zration   = trb(ji,jj,jk,jpnpi) * z1_trnpic 
     462               zration = MIN(xqnpmax(ji,jj,jk), MAX( 2. * xqnpmin(ji,jj,jk), zration )) 
     463               fvpuptk(ji,jj,jk) = 1. / zpsiuptk * rno3 * 2. * xqnpmin(ji,jj,jk) / (zration + rtrn)  & 
     464               &                   * MAX(0., (1. - zratchl * zpicochl / 12. ) ) 
     465               ! 
     466               zlim1    = max(0., (zration - 2. * xqnpmin(ji,jj,jk) )  & 
     467               &          / (xqnpmax(ji,jj,jk) - 2. * xqnpmin(ji,jj,jk) ) ) * xqnpmax(ji,jj,jk)  & 
     468               &          / (zration + rtrn) 
     469               zlim3    = MAX( 0.,( zratiof - zqfemp ) / qfpopt ) 
     470               xlimpfe(ji,jj,jk) = MIN( 1., zlim3 ) 
     471               xlimpic(ji,jj,jk) = MIN( 1., zlim1, zlim3 ) 
     472               ! 
     473               !   Michaelis-Menten Limitation term for nutrients Diatoms 
     474               !   ------------------------------------------------------ 
     475               zfalim = (1.-fadiat) / fadiat 
     476               xdiatnh4(ji,jj,jk) = (1. - fadiat) * trb(ji,jj,jk,jpnh4) / ( zfalim * zconc1dnh4 + trb(ji,jj,jk,jpnh4) ) 
     477               xdiatno3(ji,jj,jk) = (1. - fadiat) * trb(ji,jj,jk,jpno3) / ( zfalim * zconc1d + trb(ji,jj,jk,jpno3) )  & 
     478               &                    * (1. - xdiatnh4(ji,jj,jk)) 
     479               ! 
     480               zfalim = (1.-fadiatp) / fadiatp 
     481               xdiatpo4(ji,jj,jk) = (1. - fadiatp) * trb(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + zfalim * zconc0dpo4 ) 
     482               xdiatdop(ji,jj,jk) = trb(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdop) + xkdoc )  & 
     483               &                    * ( 1.0 - xdiatpo4(ji,jj,jk) ) 
     484               xdiatdop(ji,jj,jk) = 0. 
     485               ! 
     486               zfalim = (1.-fadiatf) / fadiatf 
     487               xdiatfer(ji,jj,jk) = (1. - fadiatf) * biron(ji,jj,jk) / ( biron(ji,jj,jk) + zfalim * zconcdfe ) 
     488               ! 
     489               zratiof   = trb(ji,jj,jk,jpdfe) * z1_trndia 
     490               zqfemd = xcoef1 * zdiatchl + xcoef2 + xcoef3 * xdiatno3(ji,jj,jk) 
     491               ! 
     492               zration   = trb(ji,jj,jk,jpndi) * z1_trndia 
     493               zration = MIN(xqndmax(ji,jj,jk), MAX( 2. * xqndmin(ji,jj,jk), zration )) 
     494               fvduptk(ji,jj,jk) = 1. / zpsiuptk * rno3 * 2. * xqndmin(ji,jj,jk) / (zration + rtrn)   & 
     495               &                   * MAX(0., (1. - zratchl * zdiatchl / 12. ) ) 
     496               ! 
     497               zlim1    = max(0., (zration - 2. * xqndmin(ji,jj,jk) )    & 
     498               &          / (xqndmax(ji,jj,jk) - 2. * xqndmin(ji,jj,jk) ) )   & 
     499               &          * xqndmax(ji,jj,jk) / (zration + rtrn) 
     500               zlim3    = trb(ji,jj,jk,jpsil) / ( trb(ji,jj,jk,jpsil) + xksi(ji,jj) ) 
     501               zlim4    = MAX( 0., ( zratiof - zqfemd ) / qfdopt ) 
     502               xlimdfe(ji,jj,jk) = MIN( 1., zlim4 ) 
     503               xlimdia(ji,jj,jk) = MIN( 1., zlim1, zlim3, zlim4 ) 
     504               xlimsi(ji,jj,jk)  = MIN( 1., zlim3, zlim4 ) 
     505               xlimsi2(ji,jj,jk)  = MIN( 1., zlim1, zlim4 ) 
     506            END DO 
     507         END DO 
     508      END DO 
     509      ! 
     510      ! Compute the phosphorus quota values. It is based on Litchmann et al., 2004 and Daines et al, 2013. 
     511      ! The relative contribution of three fonctional pools are computed: light harvesting apparatus,  
     512      ! nutrient uptake pool and assembly machinery. DNA is assumed to represent 1% of the dry mass of  
     513      ! phytoplankton (see Daines et al., 2013).  
     514      ! -------------------------------------------------------------------------------------------------- 
     515      DO jk = 1, jpkm1 
     516         DO jj = 1, jpj 
     517            DO ji = 1, jpi 
     518               ! Size estimation of nanophytoplankton 
     519               ! ------------------------------------ 
     520               zfvn = zpsiuptk / rno3 * fvnuptk(ji,jj,jk) 
     521               sizen(ji,jj,jk) = MAX(1., MIN(xsizern, 1.0 / ( MAX(rtrn, zfvn) ) ) ) 
     522 
     523               ! N/P ratio of nanophytoplankton 
     524               ! ------------------------------ 
     525               zfuptk = 0.23 * zfvn 
     526               zrpho = 2.24 * trb(ji,jj,jk,jpnch) / ( trb(ji,jj,jk,jpnph) * rno3 * 15. + rtrn ) 
     527               zrass = 1. - 0.2 - zrpho - zfuptk 
     528               xqpnmax(ji,jj,jk) = ( zfuptk + zrpho ) * 0.0128 * 16. + zrass * 1./ 7.2 * 16. + 0.13 
     529               xqpnmax(ji,jj,jk) = xqpnmax(ji,jj,jk) * trb(ji,jj,jk,jpnph) / ( trb(ji,jj,jk,jpphy) + rtrn )  
     530               xqpnmin(ji,jj,jk) = qpnmin 
     531 
     532               ! Size estimation of picophytoplankton 
     533               ! ------------------------------------ 
     534               zfvn = zpsiuptk / rno3  * fvpuptk(ji,jj,jk) 
     535               sizep(ji,jj,jk) = MAX(1., MIN(xsizerp, 1.0 / ( MAX(rtrn, zfvn) ) ) ) 
     536 
     537               ! N/P ratio of picophytoplankton 
     538               ! ------------------------------ 
     539               zfuptk = 0.35 * zfvn 
     540               zrpho = 2.24 * trb(ji,jj,jk,jppch) / ( trb(ji,jj,jk,jpnpi) * rno3 * 15. + rtrn ) 
     541               zrass = 1. - 0.4 - zrpho - zfuptk 
     542               xqppmax(ji,jj,jk) =  (zrpho + zfuptk) * 0.0128 * 16. + zrass * 1./ 10.9 * 16. + 0.13 
     543               xqppmax(ji,jj,jk) = xqppmax(ji,jj,jk) * trb(ji,jj,jk,jpnpi) / ( trb(ji,jj,jk,jppic) + rtrn )  
     544               xqppmin(ji,jj,jk) = qppmin 
     545 
     546               ! Size estimation of diatoms 
     547               ! -------------------------- 
     548               zfvn = zpsiuptk / rno3 * fvduptk(ji,jj,jk) 
     549               sized(ji,jj,jk) = MAX(1., MIN(xsizerd, 1.0 / ( MAX(rtrn, zfvn) ) ) ) 
     550!               zcoef = trb(ji,jj,jk,jpdia) - MIN(xsizedia, trb(ji,jj,jk,jpdia) ) 
     551!               sized(ji,jj,jk) = 1. + xsizerd * zcoef *1E6 / ( 1. + zcoef * 1E6 ) 
     552 
     553               ! N/P ratio of diatoms 
     554               ! -------------------- 
     555               zfuptk = 0.2 * zfvn 
     556               zrpho = 2.24 * trb(ji,jj,jk,jpdch) / ( trb(ji,jj,jk,jpndi) * rno3 * 15. + rtrn ) 
     557               zrass = 1. - 0.2 - zrpho - zfuptk 
     558               xqpdmax(ji,jj,jk) = ( zfuptk + zrpho ) * 0.0128 * 16. + zrass * 1./ 7.2 * 16. + 0.13 
     559               xqpdmax(ji,jj,jk) = xqpdmax(ji,jj,jk) * trb(ji,jj,jk,jpndi) / ( trb(ji,jj,jk,jpdia) + rtrn ) 
     560               xqpdmin(ji,jj,jk) = qpdmin * sized(ji,jj,jk)**(-0.27) 
     561 
     562            END DO 
     563         END DO 
     564      END DO 
     565 
     566      ! Compute the fraction of nanophytoplankton that is made of calcifiers 
     567      ! -------------------------------------------------------------------- 
     568      DO jk = 1, jpkm1 
     569         DO jj = 1, jpj 
     570            DO ji = 1, jpi 
     571               zlim1 =  trb(ji,jj,jk,jpnh4) / ( trb(ji,jj,jk,jpnh4) + concnnh4 ) + trb(ji,jj,jk,jpno3)    & 
     572               &        / ( trb(ji,jj,jk,jpno3) + concnno3 ) * ( 1.0 - trb(ji,jj,jk,jpnh4)   & 
     573               &        / ( trb(ji,jj,jk,jpnh4) + concnnh4 ) ) 
     574               zlim2  = trb(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + concnpo4 ) 
     575               zlim3  = trb(ji,jj,jk,jpfer) / ( trb(ji,jj,jk,jpfer) +  1.E-10 ) 
     576               ztem1  = MAX( 0., tsn(ji,jj,jk,jp_tem) ) 
     577               ztem2  = tsn(ji,jj,jk,jp_tem) - 10. 
     578               zetot1 = MAX( 0., etot(ji,jj,jk) - 1.) / ( 4. + etot(ji,jj,jk) ) * 20. / ( 20. + etot(ji,jj,jk) ) 
     579 
     580!               xfracal(ji,jj,jk) = caco3r * MIN( zlim1, zlim2, zlim3 )                  & 
     581               xfracal(ji,jj,jk) = caco3r * xlimphy(ji,jj,jk)                & 
     582               &                   * ztem1 / ( 1. + ztem1 ) * MAX( 1., trb(ji,jj,jk,jpphy)*1E6 )   & 
     583                  &                * ( 1. + EXP(-ztem2 * ztem2 / 25. ) )         & 
     584                  &                * zetot1 * MIN( 1., 50. / ( hmld(ji,jj) + rtrn ) ) 
     585               xfracal(ji,jj,jk) = MAX( 0.02, MIN( 0.8 , xfracal(ji,jj,jk) ) ) 
     586            END DO 
     587         END DO 
     588      END DO 
     589      ! 
     590      DO jk = 1, jpkm1 
     591         DO jj = 1, jpj 
     592            DO ji = 1, jpi 
     593               ! denitrification factor computed from O2 levels 
     594               nitrfac(ji,jj,jk) = MAX(  0.e0, 0.4 * ( 6.e-6  - trb(ji,jj,jk,jpoxy) )    & 
     595                  &                                / ( oxymin + trb(ji,jj,jk,jpoxy) )  ) 
     596               nitrfac(ji,jj,jk) = MIN( 1., nitrfac(ji,jj,jk) ) 
     597            END DO 
     598         END DO 
     599      END DO 
     600      ! 
     601      IF( lk_iomput .AND. knt == nrdttrc ) THEN        ! save output diagnostics 
     602        IF( iom_use( "xfracal" ) ) CALL iom_put( "xfracal", xfracal(:,:,:) * tmask(:,:,:) )  ! euphotic layer deptht 
     603        IF( iom_use( "LNnut"   ) ) CALL iom_put( "LNnut"  , xlimphy(:,:,:) * tmask(:,:,:) )  ! Nutrient limitation term 
     604        IF( iom_use( "LPnut"   ) ) CALL iom_put( "LPnut"  , xlimpic(:,:,:) * tmask(:,:,:) )  ! Nutrient limitation term 
     605        IF( iom_use( "LDnut"   ) ) CALL iom_put( "LDnut"  , xlimdia(:,:,:) * tmask(:,:,:) )  ! Nutrient limitation term 
     606        IF( iom_use( "LNFe"    ) ) CALL iom_put( "LNFe"   , xlimnfe(:,:,:) * tmask(:,:,:) )  ! Iron limitation term 
     607        IF( iom_use( "LPFe"    ) ) CALL iom_put( "LPFe"   , xlimpfe(:,:,:) * tmask(:,:,:) )  ! Iron limitation term 
     608        IF( iom_use( "LDFe"    ) ) CALL iom_put( "LDFe"   , xlimdfe(:,:,:) * tmask(:,:,:) )  ! Iron limitation term 
     609        IF( iom_use( "SIZEN"   ) ) CALL iom_put( "SIZEN"  , sizen(:,:,:) * tmask(:,:,:) )  ! Iron limitation term 
     610        IF( iom_use( "SIZEP"   ) ) CALL iom_put( "SIZEP"  , sizep(:,:,:) * tmask(:,:,:) )  ! Iron limitation term 
     611        IF( iom_use( "SIZED"   ) ) CALL iom_put( "SIZED"  , sized(:,:,:) * tmask(:,:,:) )  ! Iron limitation term 
     612      ENDIF 
     613      ! 
     614      IF( nn_timing == 1 )  CALL timing_stop('p5z_lim') 
     615      ! 
     616   END SUBROUTINE p5z_lim 
    229617 
    230618   SUBROUTINE p4z_lim_init 
     
    286674   END SUBROUTINE p4z_lim_init 
    287675 
     676   SUBROUTINE p5z_lim_init 
     677 
     678      !!---------------------------------------------------------------------- 
     679      !!                  ***  ROUTINE p5z_lim_init  *** 
     680      !! 
     681      !! ** Purpose :   Initialization of nutrient limitation parameters 
     682      !! 
     683      !! ** Method  :   Read the nampislim and nampisquota namelists and check 
     684      !!      the parameters called at the first timestep (nittrc000) 
     685      !! 
     686      !! ** input   :   Namelist nampislim 
     687      !! 
     688      !!---------------------------------------------------------------------- 
     689 
     690      NAMELIST/namp5zlim/ concnno3, concpno3, concdno3, concnnh4, concpnh4, concdnh4,  & 
     691         &                concnfer, concpfer, concdfer, concbfe, concnpo4, concppo4,   & 
     692         &                concdpo4, concbno3, concbnh4, concbpo4, xsizedia, xsizepic,  & 
     693         &                xsizephy, xsizern, xsizerp, xsizerd, xksi1, xksi2, xkdoc,    & 
     694         &                caco3r, oxymin 
     695 
     696      NAMELIST/namp5zquota/ qnnmin, qnnmax, qpnmin, qpnmax, qnpmin, qnpmax, qppmin,      & 
     697         &                  qppmax, qndmin, qndmax, qpdmin, qpdmax, qfnmax, qfpmax, qfdmax,  & 
     698         &                  qfnopt, qfpopt, qfdopt 
     699 
     700 
     701      INTEGER :: ios                 ! Local integer output status for namelist read 
     702 
     703      REWIND( numnatp_ref )              ! Namelist nampislim in reference namelist : Pisces nutrient limitation parameters 
     704      READ  ( numnatp_ref, namp5zlim, IOSTAT = ios, ERR = 901) 
     705901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampislim in reference namelist', lwp ) 
     706 
     707      REWIND( numnatp_cfg )              ! Namelist nampislim in configuration namelist : Pisces nutrient limitation parameters  
     708      READ  ( numnatp_cfg, namp5zlim, IOSTAT = ios, ERR = 902 ) 
     709902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampislim in configuration namelist', lwp ) 
     710      IF(lwm) WRITE ( numonp, namp5zlim ) 
     711 
     712      IF(lwp) THEN                         ! control print 
     713         WRITE(numout,*) ' ' 
     714         WRITE(numout,*) ' Namelist parameters for nutrient limitations, namp5zlim' 
     715         WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 
     716         WRITE(numout,*) '    mean rainratio                           caco3r    = ', caco3r 
     717         WRITE(numout,*) '    NO3 half saturation of nanophyto         concnno3  = ', concnno3 
     718         WRITE(numout,*) '    NO3 half saturation of picophyto         concpno3  = ', concpno3 
     719         WRITE(numout,*) '    NO3 half saturation of diatoms           concdno3  = ', concdno3 
     720         WRITE(numout,*) '    NH4 half saturation for phyto            concnnh4  = ', concnnh4 
     721         WRITE(numout,*) '    NH4 half saturation for pico             concpnh4  = ', concpnh4 
     722         WRITE(numout,*) '    NH4 half saturation for diatoms          concdnh4  = ', concdnh4 
     723         WRITE(numout,*) '    PO4 half saturation for phyto            concnpo4  = ', concnpo4 
     724         WRITE(numout,*) '    PO4 half saturation for pico             concppo4  = ', concppo4 
     725         WRITE(numout,*) '    PO4 half saturation for diatoms          concdpo4  = ', concdpo4 
     726         WRITE(numout,*) '    half saturation constant for Si uptake   xksi1     = ', xksi1 
     727         WRITE(numout,*) '    half saturation constant for Si/C        xksi2     = ', xksi2 
     728         WRITE(numout,*) '    half-sat. of DOC remineralization        xkdoc     = ', xkdoc 
     729         WRITE(numout,*) '    Iron half saturation for nanophyto       concnfer  = ', concnfer 
     730         WRITE(numout,*) '    Iron half saturation for picophyto       concpfer  = ', concpfer 
     731         WRITE(numout,*) '    Iron half saturation for diatoms         concdfer  = ', concdfer 
     732         WRITE(numout,*) '    size ratio for nanophytoplankton         xsizern   = ', xsizern 
     733         WRITE(numout,*) '    size ratio for picophytoplankton         xsizerp   = ', xsizerp 
     734         WRITE(numout,*) '    size ratio for diatoms                   xsizerd   = ', xsizerd 
     735         WRITE(numout,*) '    NO3 half saturation of bacteria          concbno3  = ', concbno3 
     736         WRITE(numout,*) '    NH4 half saturation for bacteria         concbnh4  = ', concbnh4 
     737         WRITE(numout,*) '    Minimum size criteria for diatoms        xsizedia  = ', xsizedia 
     738         WRITE(numout,*) '    Minimum size criteria for picophyto      xsizepic  = ', xsizepic 
     739         WRITE(numout,*) '    Minimum size criteria for nanophyto      xsizephy  = ', xsizephy 
     740         WRITE(numout,*) '    Fe half saturation for bacteria          concbfe   = ', concbfe 
     741         WRITE(numout,*) '    halk saturation constant for anoxia       oxymin   =' , oxymin 
     742      ENDIF 
     743 
     744      REWIND( numnatp_ref )              ! Namelist nampislim in reference namelist : Pisces nutrient limitation parameters 
     745      READ  ( numnatp_ref, namp5zquota, IOSTAT = ios, ERR = 903) 
     746903   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisquota in reference namelist', lwp ) 
     747 
     748      REWIND( numnatp_cfg )              ! Namelist nampislim in configuration namelist : Pisces nutrient limitation parameters  
     749      READ  ( numnatp_cfg, namp5zquota, IOSTAT = ios, ERR = 904 ) 
     750904   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisquota in configuration namelist', lwp ) 
     751      IF(lwm) WRITE ( numonp, namp5zquota ) 
     752 
     753      IF(lwp) THEN                         ! control print 
     754         WRITE(numout,*) ' ' 
     755         WRITE(numout,*) ' Namelist parameters for nutrient limitations, namp5zquota' 
     756         WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 
     757         WRITE(numout,*) '    optimal Fe quota for nano.               qfnopt    = ', qfnopt 
     758         WRITE(numout,*) '    optimal Fe quota for pico.               qfpopt    = ', qfpopt 
     759         WRITE(numout,*) '    Optimal Fe quota for diatoms             qfdopt    = ', qfdopt 
     760         WRITE(numout,*) '    Minimal N quota for nano                 qnnmin    = ', qnnmin 
     761         WRITE(numout,*) '    Maximal N quota for nano                 qnnmax    = ', qnnmax 
     762         WRITE(numout,*) '    Minimal P quota for nano                 qpnmin    = ', qpnmin 
     763         WRITE(numout,*) '    Maximal P quota for nano                 qpnmax    = ', qpnmax 
     764         WRITE(numout,*) '    Minimal N quota for pico                 qnpmin    = ', qnpmin 
     765         WRITE(numout,*) '    Maximal N quota for pico                 qnpmax    = ', qnpmax 
     766         WRITE(numout,*) '    Minimal P quota for pico                 qppmin    = ', qppmin 
     767         WRITE(numout,*) '    Maximal P quota for pico                 qppmax    = ', qppmax 
     768         WRITE(numout,*) '    Minimal N quota for diatoms              qndmin    = ', qndmin 
     769         WRITE(numout,*) '    Maximal N quota for diatoms              qndmax    = ', qndmax 
     770         WRITE(numout,*) '    Minimal P quota for diatoms              qpdmin    = ', qpdmin 
     771         WRITE(numout,*) '    Maximal P quota for diatoms              qpdmax    = ', qpdmax 
     772         WRITE(numout,*) '    Maximal Fe quota for nanophyto.          qfnmax    = ', qfnmax 
     773         WRITE(numout,*) '    Maximal Fe quota for picophyto.          qfpmax    = ', qfpmax 
     774         WRITE(numout,*) '    Maximal Fe quota for diatoms             qfdmax    = ', qfdmax 
     775      ENDIF 
     776 
     777      zpsino3 = 2.3 * rno3 
     778      zpsinh4 = 1.8 * rno3 
     779      zpsiuptk = 2.3 * rno3 
     780      ! 
     781      nitrfac (:,:,:) = 0._wp 
     782      ! 
     783   END SUBROUTINE p5z_lim_init 
     784 
    288785   INTEGER FUNCTION p4z_lim_alloc() 
    289786      !!---------------------------------------------------------------------- 
     
    291788      !!---------------------------------------------------------------------- 
    292789      USE lib_mpp , ONLY: ctl_warn 
     790      INTEGER ::   ierr(3)        ! Local variables 
    293791      !!---------------------------------------------------------------------- 
     792      ierr(:) = 0 
    294793 
    295794      !*  Biological arrays for phytoplankton growth 
     
    301800         &      xlimbac (jpi,jpj,jpk), xlimbacl(jpi,jpj,jpk),       & 
    302801         &      concnfe (jpi,jpj,jpk), concdfe (jpi,jpj,jpk),       & 
    303          &      xlimsi  (jpi,jpj,jpk), STAT=p4z_lim_alloc ) 
     802         &      xlimsi  (jpi,jpj,jpk), STAT=ierr(1) ) 
     803 
     804      IF (ln_p5z) THEN 
     805      !*  Biological arrays for phytoplankton growth 
     806         ALLOCATE( xpicono3(jpi,jpj,jpk), xpiconh4(jpi,jpj,jpk),       & 
     807         &      xpicopo4(jpi,jpj,jpk), xpicodop(jpi,jpj,jpk),       & 
     808         &      xnanodop(jpi,jpj,jpk), xdiatdop(jpi,jpj,jpk),       & 
     809         &      xnanofer(jpi,jpj,jpk), xdiatfer(jpi,jpj,jpk),       & 
     810         &      xpicofer(jpi,jpj,jpk), xlimpfe (jpi,jpj,jpk),       & 
     811         &      fvnuptk (jpi,jpj,jpk), fvduptk (jpi,jpj,jpk),       & 
     812         &      fvpuptk (jpi,jpj,jpk), xlimpic (jpi,jpj,jpk),       & 
     813         &      xlimsi2 (jpi,jpj,jpk), STAT=ierr(2) ) 
     814 
     815      !*  Minimum/maximum quotas of phytoplankton 
     816         ALLOCATE( xqnnmin (jpi,jpj,jpk), xqnnmax(jpi,jpj,jpk),       & 
     817         &      xqpnmin (jpi,jpj,jpk), xqpnmax(jpi,jpj,jpk),       & 
     818         &      xqnpmin (jpi,jpj,jpk), xqnpmax(jpi,jpj,jpk),       & 
     819         &      xqppmin (jpi,jpj,jpk), xqppmax(jpi,jpj,jpk),       & 
     820         &      xqndmin (jpi,jpj,jpk), xqndmax(jpi,jpj,jpk),       & 
     821         &      xqpdmin (jpi,jpj,jpk), xqpdmax(jpi,jpj,jpk),     STAT=ierr(3) ) 
     822      ENDIF 
     823      ! 
     824 
     825      p4z_lim_alloc = MAXVAL( ierr )  
    304826      ! 
    305827      IF( p4z_lim_alloc /= 0 ) CALL ctl_warn('p4z_lim_alloc : failed to allocate arrays.') 
Note: See TracChangeset for help on using the changeset viewer.