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 12349 – NEMO

Changeset 12349


Ignore:
Timestamp:
2020-01-28T17:17:13+01:00 (4 years ago)
Author:
aumont
Message:

update of the quota version of PISCES + some corrections of the GGE of zooplankton

Location:
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES
Files:
9 edited

Legend:

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

    r10227 r12349  
    105105      IF( ln_ligand )  & 
    106106      & CALL p4z_ligand( kt, knt ) 
     107      ! Update of the size of the organisms 
     108      IF (ln_p5z) THEN 
     109         sized(:,:,:) = sizeda(:,:,:) 
     110         sizen(:,:,:) = sizena(:,:,:) 
     111         sizep(:,:,:) = sizepa(:,:,:) 
     112      ENDIF 
    107113      !                                                             ! 
    108114      IF(ln_ctl)   THEN  ! print mean trends (used for debugging) 
  • NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zint.F90

    r10068 r12349  
    4545      tgfunc (:,:,:) = EXP( 0.063913 * tsn(:,:,:,jp_tem) ) 
    4646      tgfunc2(:,:,:) = EXP( 0.07608  * tsn(:,:,:,jp_tem) ) 
     47      tgfunc3(:,:,:) = EXP( 0.0825   * tsn(:,:,:,jp_tem) ) 
    4748 
    4849      ! Computation of the silicon dependant half saturation  constant for silica uptake 
  • NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zmeso.F90

    r11536 r12349  
    6666      REAL(wp) :: zfact   , zfood, zfoodlim, zproport, zbeta 
    6767      REAL(wp) :: zmortzgoc, zfrac, zfracfe, zratio, zratio2, zfracal, zgrazcal 
    68       REAL(wp) :: zepsherf, zepshert, zepsherv, zgrarsig, zgraztotc, zgraztotn, zgraztotf 
     68      REAL(wp) :: zepsherf, zepshert, zepsherq, zepsherv, zgrarsig, zgraztotc, zgraztotn, zgraztotf 
    6969      REAL(wp) :: zgrarem2, zgrafer2, zgrapoc2, zprcaca, zmortz, zgrasrat, zgrasratn 
    7070      REAL(wp) :: zrespz, ztortz, zgrazd, zgrazz, zgrazpof 
     
    171171               zbeta     = MAX(0., (epsher2 - epsher2min) ) 
    172172               zepsherf  = epsher2min + zbeta / ( 1.0 + 0.04E6 * 12. * zfood * zbeta )  
    173                zepsherv  = zepsherf * zepshert  
    174  
     173               zepsherq  = 0.5 + (1.0 - 0.5) * zepshert * ( 1.0 + 1.0 ) / ( zepshert + 1.0 ) 
    175174               zgrarem2  = zgraztotc * ( 1. - zepsherv - unass2 ) & 
    176175               &         + ( 1. - epsher2 - unass2 ) / ( 1. - epsher2 ) * ztortz 
  • NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zmicro.F90

    r11536 r12349  
    6464      REAL(wp) :: zgraze  , zdenom, zdenom2 
    6565      REAL(wp) :: zfact   , zfood, zfoodlim, zbeta 
    66       REAL(wp) :: zepsherf, zepshert, zepsherv, zgrarsig, zgraztotc, zgraztotn, zgraztotf 
     66      REAL(wp) :: zepsherf, zepshert, zepsherq, zepsherv, zgrarsig, zgraztotc, zgraztotn, zgraztotf 
    6767      REAL(wp) :: zgrarem, zgrafer, zgrapoc, zprcaca, zmortz 
    6868      REAL(wp) :: zrespz, ztortz, zgrasrat, zgrasratn 
     
    131131               zbeta     = MAX(0., (epsher - epshermin) ) 
    132132               zepsherf  = epshermin + zbeta / ( 1.0 + 0.04E6 * 12. * zfood * zbeta ) 
    133                zepsherv  = zepsherf * zepshert  
    134  
     133               zepsherq  = 0.5 + (1.0 - 0.5) * zepshert * ( 1.0 + 1.0 ) / ( zepshert + 1.0 ) 
     134               zepsherv  = zepsherf * zepshert * zepsherq 
    135135               zgrafer   = zgraztotc * MAX( 0. , ( 1. - unass ) * zgrasrat - ferat3 * zepsherv )  
    136136               zgrarem   = zgraztotc * ( 1. - zepsherv - unass ) 
  • NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p5zlim.F90

    r11536 r12349  
    2626 
    2727   !! * Shared module variables 
    28    REAL(wp), PUBLIC ::  concpno3    !:  NO3, PO4 half saturation    
    29    REAL(wp), PUBLIC ::  concpnh4    !:  NH4 half saturation for phyto   
    30    REAL(wp), PUBLIC ::  concnpo4    !:  NH4 half saturation for diatoms 
    31    REAL(wp), PUBLIC ::  concppo4    !:  NH4 half saturation for diatoms 
    32    REAL(wp), PUBLIC ::  concdpo4    !:  NH4 half saturation for diatoms 
    33    REAL(wp), PUBLIC ::  concpfer    !:  Iron half saturation for nanophyto  
     28   REAL(wp), PUBLIC ::  concpno3    !:  NO3 half saturation for picophyto   
     29   REAL(wp), PUBLIC ::  concpnh4    !:  NH4 half saturation for picophyto 
     30   REAL(wp), PUBLIC ::  concnpo4    !:  PO4 half saturation for nanophyto 
     31   REAL(wp), PUBLIC ::  concppo4    !:  PO4 half saturation for picophyto 
     32   REAL(wp), PUBLIC ::  concdpo4    !:  PO4 half saturation for diatoms 
     33   REAL(wp), PUBLIC ::  concpfer    !:  Iron half saturation for picophyto 
    3434   REAL(wp), PUBLIC ::  concbpo4    !:  PO4 half saturation for bacteria 
    35    REAL(wp), PUBLIC ::  xsizepic    !:  Minimum size criteria for diatoms 
    36    REAL(wp), PUBLIC ::  xsizerp     !:  Size ratio for nanophytoplankton 
     35   REAL(wp), PUBLIC ::  xsizepic    !:  Minimum size criteria for picophyto 
     36   REAL(wp), PUBLIC ::  xsizerp     !:  Size ratio for picophytoplankton 
    3737   REAL(wp), PUBLIC ::  qfnopt      !:  optimal Fe quota for nanophyto 
    38    REAL(wp), PUBLIC ::  qfpopt      !:  optimal Fe quota for nanophyto 
     38   REAL(wp), PUBLIC ::  qfpopt      !:  optimal Fe quota for picophyto 
    3939   REAL(wp), PUBLIC ::  qfdopt      !:  optimal Fe quota for diatoms 
    40    REAL(wp), PUBLIC ::  qnnmin      !:  optimal Fe quota for diatoms 
    41    REAL(wp), PUBLIC ::  qnnmax      !:  optimal Fe quota for diatoms 
    42    REAL(wp), PUBLIC ::  qpnmin      !:  optimal Fe quota for diatoms 
    43    REAL(wp), PUBLIC ::  qpnmax      !:  optimal Fe quota for diatoms 
    44    REAL(wp), PUBLIC ::  qnpmin      !:  optimal Fe quota for diatoms 
    45    REAL(wp), PUBLIC ::  qnpmax      !:  optimal Fe quota for diatoms 
    46    REAL(wp), PUBLIC ::  qppmin      !:  optimal Fe quota for diatoms 
    47    REAL(wp), PUBLIC ::  qppmax      !:  optimal Fe quota for diatoms 
    48    REAL(wp), PUBLIC ::  qndmin      !:  optimal Fe quota for diatoms 
    49    REAL(wp), PUBLIC ::  qndmax      !:  optimal Fe quota for diatoms 
    50    REAL(wp), PUBLIC ::  qpdmin      !:  optimal Fe quota for diatoms 
    51    REAL(wp), PUBLIC ::  qpdmax      !:  optimal Fe quota for diatoms 
    52    REAL(wp), PUBLIC ::  qfnmax      !:  optimal Fe quota for diatoms 
    53    REAL(wp), PUBLIC ::  qfpmax      !:  optimal Fe quota for diatoms 
    54    REAL(wp), PUBLIC ::  qfdmax      !:  optimal Fe quota for diatoms 
    55    REAL(wp), PUBLIC ::  zpsinh4 
    56    REAL(wp), PUBLIC ::  zpsino3 
    57    REAL(wp), PUBLIC ::  zpsiuptk 
     40   REAL(wp), PUBLIC ::  qnnmin      !:  minimum N  quota for nanophyto 
     41   REAL(wp), PUBLIC ::  qnnmax      !:  maximum N quota for nanophyto 
     42   REAL(wp), PUBLIC ::  qpnmin      !:  minimum P quota for nanophyto 
     43   REAL(wp), PUBLIC ::  qpnmax      !:  maximum P quota for nanophyto 
     44   REAL(wp), PUBLIC ::  qnpmin      !:  minimum N quota for nanophyto 
     45   REAL(wp), PUBLIC ::  qnpmax      !:  maximum N quota for nanophyto 
     46   REAL(wp), PUBLIC ::  qppmin      !:  minimum P quota for nanophyto 
     47   REAL(wp), PUBLIC ::  qppmax      !:  maximum P quota for nanophyto 
     48   REAL(wp), PUBLIC ::  qndmin      !:  minimum N quota for diatoms 
     49   REAL(wp), PUBLIC ::  qndmax      !:  maximum N quota for diatoms 
     50   REAL(wp), PUBLIC ::  qpdmin      !:  minimum P quota for diatoms 
     51   REAL(wp), PUBLIC ::  qpdmax      !:  maximum P quota for diatoms 
     52   REAL(wp), PUBLIC ::  qfnmax      !:  maximum Fe quota for nanophyto 
     53   REAL(wp), PUBLIC ::  qfpmax      !:  maximum Fe quota for picophyto 
     54   REAL(wp), PUBLIC ::  qfdmax      !:  maximum Fe quota for diatoms 
     55   REAL(wp), PUBLIC ::  zpsinh4     !:  respiration cost of NH4 assimilation 
     56   REAL(wp), PUBLIC ::  zpsino3     !:  respiration cost of NO3 assimilation 
     57   REAL(wp), PUBLIC ::  zpsiuptk    !:  Mean respiration cost 
    5858 
    5959   !!*  Allometric variations of the quotas 
     
    7171   REAL(wp), PUBLIC, ALLOCATABLE, SAVE,   DIMENSION(:,:,:)  ::   xqpdmax    !: ??? 
    7272 
    73    !!* Phytoplankton limitation terms 
     73   !!* Phytoplankton nutrient limitation terms 
    7474   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xpicono3   !: ??? 
    7575   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xpiconh4   !: ??? 
     
    8282   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xdiatfer   !: ??? 
    8383   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xlimpic    !: ??? 
     84   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xlimpics   !: ??? 
     85   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xlimphys   !: ??? 
     86   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xlimdias   !: ??? 
    8487   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xlimpfe    !: ??? 
    8588   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   fvnuptk 
     
    104107      !! 
    105108      !! ** Purpose :   Compute the co-limitations by the various nutrients 
    106       !!              for the various phytoplankton species 
     109      !!                for the various phytoplankton species. Quota based 
     110      !!                approach. The quota model is derived from theoretical 
     111      !!                models proposed by Pahlow and Oschlies (2009) and  
     112      !!                Flynn (2001). Various adaptations from several publications 
     113      !!                by these authors have been also adopted.  
    107114      !! 
    108       !! ** Method  : - ??? 
     115      !! ** Method  : Quota based approach. The quota model is derived from  
     116      !!              theoretical models by Pahlow and Oschlies (2009) and  
     117      !!              Flynn (2001). Various adaptations from several publications 
     118      !!              by these authors have been also adopted. 
    109119      !!--------------------------------------------------------------------- 
    110120      ! 
     
    114124      REAL(wp) ::   zlim1, zlim2, zlim3, zlim4, zno3, zferlim 
    115125      REAL(wp) ::   z1_trndia, z1_trnpic, z1_trnphy, ztem1, ztem2, zetot1 
    116       REAL(wp) ::   zratio, zration, zratiof, znutlim, zfalim 
     126      REAL(wp) ::   zratio, zration, zratiof, znutlim, zfalim, zzpsiuptk 
    117127      REAL(wp) ::   zconc1d, zconc1dnh4, zconc0n, zconc0nnh4, zconc0npo4, zconc0dpo4 
    118128      REAL(wp) ::   zconc0p, zconc0pnh4, zconc0ppo4, zconcpfe, zconcnfe, zconcdfe 
     
    122132      REAL(wp) ::   zfvn, zfvp, zfvf, zsizen, zsizep, zsized, znanochl, zpicochl, zdiatchl 
    123133      REAL(wp) ::   zqfemn, zqfemp, zqfemd, zbactno3, zbactnh4 
     134      REAL(wp) ::   zlim1f, zsizetmp 
     135      REAL(wp), DIMENSION(jpi,jpj,jpk) :: xlimnpn, xlimnpp, xlimnpd 
    124136      !!--------------------------------------------------------------------- 
    125137      ! 
     
    127139      ! 
    128140      zratchl = 6.0 
     141      sizena(:,:,:) = 0.0  ;  sizepa(:,:,:) = 0.0  ;  sizeda(:,:,:) = 0.0 
    129142      ! 
    130143      DO jk = 1, jpkm1 
     
    157170               zconc0dpo4        = concdpo4 * zsized 
    158171 
    159                zsizep            = 1. 
     172               zsizep            = sizep(ji,jj,jk)**0.81 
    160173               zconcpfe          = concpfer * zsizep 
    161174               zconc0p           = concpno3 * zsizep 
     
    163176               zconc0ppo4        = concppo4 * zsizep 
    164177 
    165                zsizen            = 1. 
     178               zsizen            = sizen(ji,jj,jk)**0.81 
    166179               zconcnfe          = concnfer * zsizen 
    167180               zconc0n           = concnno3 * zsizen 
     
    172185               ! From Talmy et al. (2014) and Maranon et al. (2013) 
    173186               ! ------------------------------------------------------- 
    174                xqnnmin(ji,jj,jk) = qnnmin 
     187               xqnnmin(ji,jj,jk) = qnnmin * sizen(ji,jj,jk)**(-0.3) 
    175188               xqnnmax(ji,jj,jk) = qnnmax 
    176                xqndmin(ji,jj,jk) = qndmin * sized(ji,jj,jk)**(-0.27)  
     189               xqndmin(ji,jj,jk) = qndmin * sized(ji,jj,jk)**(-0.3) 
    177190               xqndmax(ji,jj,jk) = qndmax 
    178                xqnpmin(ji,jj,jk) = qnpmin 
    179                xqnpmax(ji,jj,jk) = qnpmax 
     191               xqnpmin(ji,jj,jk) = qnpmin * sizep(ji,jj,jk)**(-0.48) 
     192               xqnpmax(ji,jj,jk) = qnpmax * sizep(ji,jj,jk)**(-0.21) 
    180193 
    181194               ! Computation of the optimal allocation parameters 
     
    236249               ! 
    237250               zration = trb(ji,jj,jk,jpnph) * z1_trnphy 
    238                zration = MIN(xqnnmax(ji,jj,jk), MAX( 2. * xqnnmin(ji,jj,jk), zration )) 
    239                fvnuptk(ji,jj,jk) = 1. / zpsiuptk * rno3 * 2. * xqnnmin(ji,jj,jk) / (zration + rtrn)  & 
     251               zration = MIN(xqnnmax(ji,jj,jk), MAX( xqnnmin(ji,jj,jk), zration )) 
     252               zzpsiuptk = xqnnmin(ji,jj,jk) * rno3 / zpsiuptk**2 
     253               fvnuptk(ji,jj,jk) = 1. / zzpsiuptk * xqnnmin(ji,jj,jk) / (zration + rtrn)  & 
    240254               &                   * MAX(0., (1. - zratchl * znanochl / 12. ) ) 
    241255               ! 
    242                zlim1    = max(0., (zration - 2. * xqnnmin(ji,jj,jk) )  & 
    243                &          / (xqnnmax(ji,jj,jk) - 2. * xqnnmin(ji,jj,jk) ) ) * xqnnmax(ji,jj,jk)  & 
     256               zlim1  = max(0., (zration - xqnnmin(ji,jj,jk) )  & 
     257               &          / (xqnnmax(ji,jj,jk) - xqnnmin(ji,jj,jk) ) ) * xqnnmax(ji,jj,jk)  & 
    244258               &          / (zration + rtrn) 
    245                zlim3    = MAX( 0.,( zratiof - zqfemn ) / qfnopt )  
    246                xlimnfe(ji,jj,jk) = MIN( 1., zlim3 ) 
    247                xlimphy(ji,jj,jk) = MIN( 1., zlim1, zlim3 ) 
     259               !  The value of the optimal quota in the formulation below 
     260               !  has been found by solving a non linear equation 
     261               zlim1f = max(0., ( 1.086 - xqnnmin(ji,jj,jk) )  & 
     262               &          / (xqnnmax(ji,jj,jk) - xqnnmin(ji,jj,jk) ) ) * xqnnmax(ji,jj,jk) 
     263               zlim3  = MAX( 0.,( zratiof - zqfemn ) / qfnopt ) 
     264               xlimnfe (ji,jj,jk) = MIN( 1., zlim3 ) 
     265               xlimphy (ji,jj,jk) = MIN( 1., zlim1, zlim3 ) 
     266               xlimphys(ji,jj,jk) = MIN( 1., zlim1/( zlim1f + rtrn ), zlim3 ) 
     267               xlimnpn (ji,jj,jk) = MIN( 1., zlim1) 
    248268               ! 
    249269               ! Michaelis-Menten Limitation term for nutrients picophytoplankton 
     
    267287               ! 
    268288               zration   = trb(ji,jj,jk,jpnpi) * z1_trnpic 
    269                zration = MIN(xqnpmax(ji,jj,jk), MAX( 2. * xqnpmin(ji,jj,jk), zration )) 
    270                fvpuptk(ji,jj,jk) = 1. / zpsiuptk * rno3 * 2. * xqnpmin(ji,jj,jk) / (zration + rtrn)  & 
     289               zration = MIN(xqnpmax(ji,jj,jk), MAX( xqnpmin(ji,jj,jk), zration )) 
     290               zzpsiuptk = xqnpmin(ji,jj,jk) * rno3 / zpsiuptk**2 
     291               fvpuptk(ji,jj,jk) = 1. / zzpsiuptk * xqnpmin(ji,jj,jk) / (zration + rtrn)  & 
    271292               &                   * MAX(0., (1. - zratchl * zpicochl / 12. ) )  
    272293               ! 
    273                zlim1    = max(0., (zration - 2. * xqnpmin(ji,jj,jk) )  & 
    274                &          / (xqnpmax(ji,jj,jk) - 2. * xqnpmin(ji,jj,jk) ) ) * xqnpmax(ji,jj,jk)  & 
     294               zlim1    = max(0., (zration - xqnpmin(ji,jj,jk) )  & 
     295               &          / (xqnpmax(ji,jj,jk) - xqnpmin(ji,jj,jk) ) ) * xqnpmax(ji,jj,jk)  & 
    275296               &          / (zration + rtrn) 
     297               !  The value of the optimal quota in the formulation below 
     298               !  has been found by solving a non linear equation 
     299               zlim1f   = max(0., (1.367 - xqnpmin(ji,jj,jk) )  & 
     300               &          / (xqnpmax(ji,jj,jk) - xqnpmin(ji,jj,jk) ) ) * xqnpmax(ji,jj,jk) 
    276301               zlim3    = MAX( 0.,( zratiof - zqfemp ) / qfpopt ) 
    277                xlimpfe(ji,jj,jk) = MIN( 1., zlim3 ) 
    278                xlimpic(ji,jj,jk) = MIN( 1., zlim1, zlim3 ) 
     302               xlimpfe (ji,jj,jk) = MIN( 1., zlim3 ) 
     303               xlimpic (ji,jj,jk) = MIN( 1., zlim1, zlim3 ) 
     304               xlimnpp (ji,jj,jk) = MIN( 1., zlim1 ) 
     305               xlimpics(ji,jj,jk) = MIN( 1., zlim1/( zlim1f + rtrn ), zlim3 ) 
    279306               ! 
    280307               !   Michaelis-Menten Limitation term for nutrients Diatoms 
     
    298325               ! 
    299326               zration   = trb(ji,jj,jk,jpndi) * z1_trndia 
    300                zration = MIN(xqndmax(ji,jj,jk), MAX( 2. * xqndmin(ji,jj,jk), zration )) 
    301                fvduptk(ji,jj,jk) = 1. / zpsiuptk * rno3 * 2. * xqndmin(ji,jj,jk) / (zration + rtrn)   & 
     327               zration   = MIN(xqndmax(ji,jj,jk), MAX( xqndmin(ji,jj,jk), zration )) 
     328               zzpsiuptk = xqndmin(ji,jj,jk) * rno3 / zpsiuptk**2 
     329               fvduptk(ji,jj,jk) = 1. / zzpsiuptk * xqndmin(ji,jj,jk) / (zration + rtrn)   & 
    302330               &                   * MAX(0., (1. - zratchl * zdiatchl / 12. ) )  
    303331               ! 
    304                zlim1    = max(0., (zration - 2. * xqndmin(ji,jj,jk) )    & 
    305                &          / (xqndmax(ji,jj,jk) - 2. * xqndmin(ji,jj,jk) ) )   & 
     332               zlim1    = max(0., (zration - xqndmin(ji,jj,jk) )    & 
     333               &          / (xqndmax(ji,jj,jk) - xqndmin(ji,jj,jk) ) )   & 
    306334               &          * xqndmax(ji,jj,jk) / (zration + rtrn) 
     335               !  The value of the optimal quota in the formulation below 
     336               !  has been found by solving a non linear equation 
     337               zlim1f   = max(0., (1.077 - xqndmin(ji,jj,jk) )    & 
     338               &          / (xqndmax(ji,jj,jk) - xqndmin(ji,jj,jk) ) )   & 
     339               &          * xqndmax(ji,jj,jk) 
    307340               zlim3    = trb(ji,jj,jk,jpsil) / ( trb(ji,jj,jk,jpsil) + xksi(ji,jj) ) 
    308341               zlim4    = MAX( 0., ( zratiof - zqfemd ) / qfdopt ) 
    309342               xlimdfe(ji,jj,jk) = MIN( 1., zlim4 ) 
    310343               xlimdia(ji,jj,jk) = MIN( 1., zlim1, zlim3, zlim4 ) 
     344               xlimdias(ji,jj,jk) = MIN (1.0, zlim1 / (zlim1f + rtrn ), zlim3, zlim4 ) 
    311345               xlimsi(ji,jj,jk)  = MIN( zlim1, zlim4 ) 
     346               xlimnpd(ji,jj,jk) = MIN( 1., zlim1 ) 
    312347            END DO 
    313348         END DO 
     
    324359               ! Size estimation of nanophytoplankton 
    325360               ! ------------------------------------ 
    326                zfvn = 2. * fvnuptk(ji,jj,jk) 
    327                sizen(ji,jj,jk) = MAX(1., MIN(xsizern, 1.0 / ( MAX(rtrn, zfvn) ) ) ) 
    328  
     361               zcoef = trb(ji,jj,jk,jpphy) - MIN(xsizephy, trb(ji,jj,jk,jpphy) ) 
     362               sizena(ji,jj,jk) = 1. + ( xsizern -1.0 ) * zcoef / ( xsizephy + zcoef ) 
    329363               ! N/P ratio of nanophytoplankton 
    330364               ! ------------------------------ 
    331                zfuptk = 0.23 * zfvn 
    332                zrpho = 2.24 * trb(ji,jj,jk,jpnch) / ( trb(ji,jj,jk,jpnph) * rno3 * 15. + rtrn ) 
    333                zrass = 1. - 0.2 - zrpho - zfuptk 
    334                xqpnmax(ji,jj,jk) = ( zfuptk + zrpho ) * 0.0128 * 16. + zrass * 1./ 7.2 * 16. 
    335                xqpnmax(ji,jj,jk) = xqpnmax(ji,jj,jk) * trb(ji,jj,jk,jpnph) / ( trb(ji,jj,jk,jpphy) + rtrn ) + 0.13 
    336                xqpnmin(ji,jj,jk) = 0.13 + 0.23 * 0.0128 * 16. 
     365               zfuptk = 0.2 + 0.12 / ( 3.0 * sizen(ji,jj,jk) + rtrn ) 
     366               zrpho  = 1.54 * trb(ji,jj,jk,jpnch) / ( trb(ji,jj,jk,jpnph) * rno3 * 14. + rtrn ) 
     367               zrass = MAX(0.62/4., ( 1. - zrpho - zfuptk ) * xlimnpn(ji,jj,jk) ) 
     368               xqpnmin(ji,jj,jk) = ( 0.0 + 0.0078 + 0.62/4. * 0.0783 * xqnnmin(ji,jj,jk) ) * 16. 
     369               xqpnmax(ji,jj,jk) = ( zrpho * 0.0128 + zrass * 0.0783 ) * 16. 
     370               xqpnmax(ji,jj,jk) = xqpnmax(ji,jj,jk) * trb(ji,jj,jk,jpnph) / ( trb(ji,jj,jk,jpphy) + rtrn )  & 
     371               &      + (0.033 + 0.0078 ) * 16. 
     372               xqpnmax(ji,jj,jk) = MIN( qpnmax, xqpnmax(ji,jj,jk) ) 
     373 
    337374 
    338375               ! Size estimation of picophytoplankton 
    339376               ! ------------------------------------ 
    340                zfvn = 2. * fvpuptk(ji,jj,jk) 
    341                sizep(ji,jj,jk) = MAX(1., MIN(xsizerp, 1.0 / ( MAX(rtrn, zfvn) ) ) ) 
     377               zcoef = trb(ji,jj,jk,jppic) - MIN(xsizepic, trb(ji,jj,jk,jppic) ) 
     378               sizepa(ji,jj,jk) = 1. + ( xsizerp -1.0 ) * zcoef / ( xsizepic + zcoef ) 
    342379 
    343380               ! N/P ratio of picophytoplankton 
    344381               ! ------------------------------ 
    345                zfuptk = 0.35 * zfvn 
    346                zrpho = 2.24 * trb(ji,jj,jk,jppch) / ( trb(ji,jj,jk,jpnpi) * rno3 * 15. + rtrn ) 
    347                zrass = 1. - 0.4 - zrpho - zfuptk 
    348                xqppmax(ji,jj,jk) =  (zrpho + zfuptk) * 0.0128 * 16. + zrass * 1./ 9. * 16. 
    349                xqppmax(ji,jj,jk) = xqppmax(ji,jj,jk) * trb(ji,jj,jk,jpnpi) / ( trb(ji,jj,jk,jppic) + rtrn ) + 0.13 
    350                xqppmin(ji,jj,jk) = 0.13 
     382               zfuptk = 0.2 + 0.12 / ( 0.5 * sizep(ji,jj,jk) + rtrn ) 
     383               zrpho = 1.54 * trb(ji,jj,jk,jppch) / ( trb(ji,jj,jk,jpnpi) * rno3 * 14. + rtrn ) 
     384               zrass = MAX(0.4/4., ( 1. - zrpho - zfuptk ) * xlimnpp(ji,jj,jk) ) 
     385               xqppmin(ji,jj,jk) = ( (0.0 + 0.0078 ) + 0.4/4. * 0.0517 * xqnpmin(ji,jj,jk) ) * 16. 
     386               xqppmax(ji,jj,jk) = ( zrpho * 0.0128 + zrass * 0.0517 ) * 16. 
     387               xqppmax(ji,jj,jk) = xqppmax(ji,jj,jk) * trb(ji,jj,jk,jpnpi) / ( trb(ji,jj,jk,jppic) + rtrn ) & 
     388               &      +  (0.033 + 0.0078 ) * 16 
     389               xqppmax(ji,jj,jk) = MIN( qppmax, xqppmax(ji,jj,jk) ) 
    351390 
    352391               ! Size estimation of diatoms 
    353392               ! -------------------------- 
    354                zfvn = 2. * fvduptk(ji,jj,jk) 
    355                sized(ji,jj,jk) = MAX(1., MIN(xsizerd, 1.0 / ( MAX(rtrn, zfvn) ) ) ) 
    356393               zcoef = trb(ji,jj,jk,jpdia) - MIN(xsizedia, trb(ji,jj,jk,jpdia) ) 
    357                sized(ji,jj,jk) = 1. + xsizerd * zcoef *1E6 / ( 1. + zcoef * 1E6 ) 
     394               sized(ji,jj,jk) = 1. + ( xsizerd - 1.0 ) * zcoef / ( xsizedia + zcoef ) 
     395               sizeda(ji,jj,jk) = 1. + ( xsizerd - 1.0 ) * zcoef / ( xsizedia + zcoef ) 
    358396 
    359397               ! N/P ratio of diatoms 
    360398               ! -------------------- 
    361                zfuptk = 0.2 * zfvn 
    362                zrpho = 2.24 * trb(ji,jj,jk,jpdch) / ( trb(ji,jj,jk,jpndi) * rno3 * 15. + rtrn ) 
    363                zrass = 1. - 0.2 - zrpho - zfuptk 
    364                xqpdmax(ji,jj,jk) = ( zfuptk + zrpho ) * 0.0128 * 16. + zrass * 1./ 7.2 * 16. 
    365                xqpdmax(ji,jj,jk) = xqpdmax(ji,jj,jk) * trb(ji,jj,jk,jpndi) / ( trb(ji,jj,jk,jpdia) + rtrn ) + 0.13 
    366                xqpdmin(ji,jj,jk) = 0.13 + 0.2 * 0.0128 * 16. 
     399               zfuptk = 0.2 + 0.12 / ( 5.0 * sized(ji,jj,jk) + rtrn ) 
     400               zrpho = 1.54 * trb(ji,jj,jk,jpdch) / ( trb(ji,jj,jk,jpndi) * rno3 * 14. + rtrn ) 
     401               zrass = MAX(0.66/4., ( 1. - zrpho - zfuptk ) * xlimnpd(ji,jj,jk) ) 
     402 
     403               xqpdmin(ji,jj,jk) = ( ( 0.0 + 0.0078 ) + 0.66/4. * 0.0783 *  xqndmin(ji,jj,jk) ) * 16. 
     404               xqpdmax(ji,jj,jk) = ( zrpho * 0.0128 + zrass * 0.0783 ) * 16. 
     405               xqpdmax(ji,jj,jk) = xqpdmax(ji,jj,jk) * trb(ji,jj,jk,jpndi) / ( trb(ji,jj,jk,jpdia) + rtrn ) & 
     406               &      + ( 0.0078 + 0.033 ) * 16. 
     407               xqpdmax(ji,jj,jk) = MIN(qpdmax, xqpdmax(ji,jj,jk) ) 
    367408 
    368409            END DO 
     
    384425               zetot1 = MAX( 0., etot(ji,jj,jk) - 1.) / ( 4. + etot(ji,jj,jk) ) * 20. / ( 20. + etot(ji,jj,jk) )  
    385426 
    386 !               xfracal(ji,jj,jk) = caco3r * MIN( zlim1, zlim2, zlim3 )                  & 
    387                xfracal(ji,jj,jk) = caco3r                 & 
     427               xfracal(ji,jj,jk) = caco3r * MIN( zlim1, zlim2, zlim3 )    & 
    388428               &                   * ztem1 / ( 1. + ztem1 ) * MAX( 1., trb(ji,jj,jk,jpphy)*1E6 )   & 
    389429                  &                * ( 1. + EXP(-ztem2 * ztem2 / 25. ) )         & 
     
    522562      ENDIF 
    523563      ! 
    524       zpsino3 = 2.3 * rno3 
    525       zpsinh4 = 1.8 * rno3 
    526       zpsiuptk = 2.3 * rno3 
     564      zpsino3  = 2.3 * rno3 
     565      zpsinh4  = 1.8 * rno3 
     566      zpsiuptk = 1.0 / 6.625 
    527567      ! 
    528568      nitrfac (:,:,:) = 0._wp 
     
    547587         &      xpicofer(jpi,jpj,jpk), xlimpfe (jpi,jpj,jpk),       & 
    548588         &      fvnuptk (jpi,jpj,jpk), fvduptk (jpi,jpj,jpk),       & 
     589         &      xlimphys(jpi,jpj,jpk), xlimdias(jpi,jpj,jpk),       & 
     590         &      xlimpics(jpi,jpj,jpk),                              & 
    549591         &      fvpuptk (jpi,jpj,jpk), xlimpic (jpi,jpj,jpk),    STAT=ierr(1) ) 
    550592         ! 
  • NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p5zmeso.F90

    r11536 r12349  
    7272      REAL(wp) :: zgraze2, zdenom, zfact, zfood, zfoodlim, zproport 
    7373      REAL(wp) :: zmortzgoc, zfracc, zfracn, zfracp, zfracfe, zratio, zratio2 
    74       REAL(wp) :: zepsherf, zepshert, zepsherv, zrespirc, zrespirn, zrespirp, zbasresb, zbasresi 
     74      REAL(wp) :: zepsherf, zepshert, zepsherq, zepsherv, zrespirc, zrespirn, zrespirp, zbasresb, zbasresi 
    7575      REAL(wp) :: zgraztotc, zgraztotn, zgraztotp, zgraztotf, zbasresn, zbasresp, zbasresf 
    7676      REAL(wp) :: zgradoc, zgradon, zgradop, zgratmp, zgradoct, zgradont, zgrareft, zgradopt 
     
    8585      REAL(wp) :: zgrazffnp, zgrazffng, zgrazffpp, zgrazffpg 
    8686      CHARACTER (len=25) :: charout 
    87       REAL(wp) :: zrfact2, zmetexcess 
     87      REAL(wp) :: zrfact2, zmetexcess, zsigma, zdiffdn 
    8888      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zgrazing, zfezoo2 
    8989      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zw3d, zz2ligprod 
     
    140140               !   An active switching parameterization is used here. 
    141141               !   We don't use the KTW parameterization proposed by  
    142                !   Vallina et al. because it tends to produce to steady biomass 
     142               !   Vallina et al. because it tends to produce too steady biomass 
    143143               !   composition and the variance of Chl is too low as it grazes 
    144                !   too strongly on winning organisms. Thus, instead of a square 
    145                !   a 1.5 power value is used which decreases the pressure on the 
    146                !   most abundant species 
     144               !   too strongly on winning organisms. We use a generalized 
     145               !   switching parameterization proposed by Morozov and  
     146               !   Petrovskii (2013) 
    147147               !   ------------------------------------------------------------   
    148                ztmp1 = xpref2n * zcompaph**1.5 
    149                ztmp2 = xpref2m * zcompames**1.5 
    150                ztmp3 = xpref2c * zcompapoc**1.5 
    151                ztmp4 = xpref2d * zcompadi**1.5 
    152                ztmp5 = xpref2z * zcompaz**1.5 
     148               zsigma = 1.0 - zdenom**2/(0.05**2+zdenom**2) 
     149               zsigma = 0.5 + 1.0 * zsigma 
     150               zdiffdn = exp( -ABS(log(3.0 * sizen(ji,jj,jk) / (5.0 * sized(ji,jj,jk) + rtrn )) )**2 / zsigma**2 ) 
     151               ztmp1 = xpref2n * zcompaph * ( zcompaph + zdiffdn * zcompadi ) 
     152               ztmp2 = xpref2m * zcompames**2 
     153               ztmp3 = xpref2c * zcompapoc**2 
     154               ztmp4 = xpref2d * zcompadi * ( zdiffdn * zcompadi + zcompaph ) 
     155               ztmp5 = xpref2z * zcompaz**2 
    153156               ztmptot = ztmp1 + ztmp2 + ztmp3 + ztmp4 + ztmp5 + rtrn 
    154157               ztmp1 = ztmp1 / ztmptot 
     
    238241               zbeta     = MAX(0., (epsher2 - epsher2min) ) 
    239242               zepsherf  = epsher2min + zbeta / ( 1.0 + 0.04E6 * 12. * zfood * zbeta ) 
    240                zepsherv  = zepsherf * zepshert 
    241  
     243               zepsherq  = 0.5 + (1.0 - 0.5) * zepshert * ( 1.0 + 1.0 ) / ( zepshert + 1.0 ) 
     244               zepsherv  = zepsherf * zepshert * zepsherq 
    242245               !   Respiration of mesozooplankton 
    243246               !   Excess carbon in the food is used preferentially 
  • NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p5zmicro.F90

    r11536 r12349  
    7575      REAL(wp) :: zcompapi, zgraze  , zdenom, zfact, zfood, zfoodlim 
    7676      REAL(wp) :: ztmp1, ztmp2, ztmp3, ztmp4, ztmp5, ztmptot 
    77       REAL(wp) :: zepsherf, zepshert, zepsherv, zrespirc, zrespirn, zrespirp, zbasresb, zbasresi 
     77      REAL(wp) :: zepsherf, zepshert, zepsherq, zepsherv, zrespirc, zrespirn, zrespirp, zbasresb, zbasresi 
    7878      REAL(wp) :: zgraztotc, zgraztotn, zgraztotp, zgraztotf, zbasresn, zbasresp, zbasresf 
    7979      REAL(wp) :: zgradoc, zgradon, zgradop, zgraref, zgradoct, zgradont, zgradopt, zgrareft 
     
    8484      REAL(wp) :: zgrazdc, zgrazdn, zgrazdp, zgrazdf, zgraznf, zgrazz 
    8585      REAL(wp) :: zgrazpc, zgrazpn, zgrazpp, zgrazpf, zbeta, zrfact2, zmetexcess 
     86      REAL(wp) :: zsigma, zdiffdn, zdiffpn, zdiffdp, zproport, zproport2 
    8687      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zgrazing, zfezoo 
    8788      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zw3d, zzligprod 
     
    104105               zcompaz = MAX( ( trb(ji,jj,jk,jpzoo) - 1.e-9 ), 0.e0 ) 
    105106               zfact   = xstep * tgfunc2(ji,jj,jk) * zcompaz 
    106  
     107               ! Proportion of nano and diatoms that are within the size range 
     108               ! accessible to microzooplankton.  
     109               zproport  = min(1.0, exp(-1.1 * MAX(0., ( sized(ji,jj,jk) - 1.8 ))**0.8 )) 
     110               zproport2 = sizen(ji,jj,jk)**(-0.54) 
    107111               !   Michaelis-Menten mortality rates of microzooplankton 
    108112               !   ----------------------------------------------------- 
     
    118122               !   A threshold can be specified in the namelist 
    119123               !   -------------------------------------------- 
    120                zcompadi  = MIN( MAX( ( trb(ji,jj,jk,jpdia) - xthreshdia ), 0.e0 ), xsizedia ) 
    121                zcompaph  = MAX( ( trb(ji,jj,jk,jpphy) - xthreshphy ), 0.e0 ) 
     124               zcompadi  = zproport * MAX( ( trb(ji,jj,jk,jpdia) - xthreshdia ), 0.e0 ) 
     125               zcompaph  = zproport2 * MAX( ( trb(ji,jj,jk,jpphy) - xthreshphy ), 0.e0 ) 
    122126               zcompaz   = MAX( ( trb(ji,jj,jk,jpzoo) - xthreshzoo ), 0.e0 ) 
    123127               zcompapi  = MAX( ( trb(ji,jj,jk,jppic) - xthreshpic ), 0.e0 ) 
     
    140144               !   most abundant species 
    141145               !   ------------------------------------------------------------   
    142                ztmp1 = xprefn * zcompaph**1.5 
    143                ztmp2 = xprefp * zcompapi**1.5 
    144                ztmp3 = xprefc * zcompapoc**1.5 
    145                ztmp4 = xprefd * zcompadi**1.5 
    146                ztmp5 = xprefz * zcompaz**1.5 
     146               zsigma = 1.0 - zdenom**2/(0.05**2+zdenom**2) 
     147               zsigma = 0.5 + 1.0*zsigma 
     148               zdiffpn = exp( -ABS(log(0.5 * sizep(ji,jj,jk) / (3.0 * sizen(ji,jj,jk) + rtrn )) )**2 / zsigma**2 ) 
     149               zdiffdn = exp( -ABS(log(3.0 * sizen(ji,jj,jk) / (5.0 * sized(ji,jj,jk) + rtrn )) )**2 / zsigma**2) 
     150               zdiffdp = exp( -ABS(log(0.5 * sizep(ji,jj,jk) / (5.0 * sized(ji,jj,jk) + rtrn )) )**2 / zsigma**2) 
     151               ztmp1 = xprefn * zcompaph * ( zcompaph + zdiffdn * zcompadi + zdiffpn * zcompapi ) / ( 1.0 + zdiffdn + zdiffpn ) 
     152               ztmp2 = xprefp * zcompapi * ( zcompapi + zdiffpn * zcompaph + zdiffdp * zcompadi ) / ( 1.0 + zdiffpn + zdiffdp ) 
     153               ztmp3 = xprefc * zcompapoc**2 
     154               ztmp4 = xprefd * zcompadi * ( zdiffdp * zcompapi + zdiffdn * zcompaph + zcompadi ) / ( 1.0 + zdiffdn + zdiffdp ) 
     155               ztmp5 = xprefz * zcompaz**2 
    147156               ztmptot = ztmp1 + ztmp2 + ztmp3 + ztmp4 + ztmp5 + rtrn 
    148157               ztmp1 = ztmp1 / ztmptot 
     
    192201               zbeta     = MAX( 0., (epsher - epshermin) ) 
    193202               zepsherf  = epshermin + zbeta / ( 1.0 + 0.04E6 * 12. * zfood * zbeta ) 
    194                zepsherv  = zepsherf * zepshert 
     203               zepsherq  = 0.5 + (1.0 - 0.5) * zepshert * ( 1.0 + 1.0 ) / ( zepshert + 1.0 ) 
     204               zepsherv  = zepsherf * zepshert * zepsherq 
    195205 
    196206               !   Respiration of microzooplankton 
  • NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p5zprod.F90

    r11536 r12349  
    7171      INTEGER  ::   ji, jj, jk 
    7272      REAL(wp) ::   zsilfac, znanotot, zpicotot, zdiattot, zconctemp, zconctemp2 
    73       REAL(wp) ::   zration, zratiop, zratiof, zmax, zmax2, zsilim, ztn, zadap 
     73      REAL(wp) ::   zration, zratiop, zratiof, zmax, zsilim, ztn, zadap 
    7474      REAL(wp) ::   zpronmax, zpropmax, zprofmax, zrat 
    7575      REAL(wp) ::   zlim, zsilfac2, zsiborn, zprod, zprontot, zproptot, zprodtot 
    7676      REAL(wp) ::   zprnutmax, zdocprod, zprochln, zprochld, zprochlp 
    77       REAL(wp) ::   zpislopen, zpislopep, zpisloped, thetannm_n, thetandm_n, thetanpm_n 
     77      REAL(wp) ::   zpislopen, zpislopep, zpisloped 
    7878      REAL(wp) ::   zrum, zcodel, zargu, zval, zfeup 
    79       REAL(wp) ::   zfact, zrfact2 
     79      REAL(wp) ::   zfact, zrfact2, zmaxsi, zratiosi, zsizetmp, zlimfac 
    8080      CHARACTER (len=25) :: charout 
    8181      REAL(wp), DIMENSION(jpi,jpj    ) :: zmixnano, zmixpico, zmixdiat, zstrn 
    8282      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zpislopeadn, zpislopeadp, zpislopeadd 
    83       REAL(wp), DIMENSION(jpi,jpj,jpk) :: zprnut, zprmaxp, zprmaxn, zprmaxd 
     83      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zprnut, zprnutp, zprmaxp, zprmaxn, zprmaxd 
    8484      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zprbio, zprpic, zprdia, zysopt 
    8585      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zprchln, zprchlp, zprchld 
     
    111111 
    112112      ! Computation of the optimal production 
    113       zprnut (:,:,:) = 0.65_wp * r1_rday * tgfunc(:,:,:) 
    114       zprmaxn(:,:,:) = ( 0.65_wp * (1. + zpsino3 * qnpmax ) ) * r1_rday * tgfunc(:,:,:) 
    115       zprmaxp(:,:,:) = 0.5 / 0.65 * zprmaxn(:,:,:)  
    116       zprmaxd(:,:,:) = zprmaxn(:,:,:)  
     113      zprnut (:,:,:) = 0.6_wp * (1.0 + zpsino3 * qnnmax ) * r1_rday * tgfunc(:,:,:) 
     114      zprnutp(:,:,:) =  0.6_wp * (1. + zpsino3 * qnpmax ) * r1_rday * tgfunc3(:,:,:) 
     115      zprmaxn(:,:,:) = ( 0.6_wp * (1. + zpsino3 * qnnmax ) ) * r1_rday * tgfunc(:,:,:) 
     116      zprmaxd(:,:,:) = ( 0.6_wp * (1. + zpsino3 * qndmax ) ) * r1_rday * tgfunc(:,:,:) 
     117      zprmaxp(:,:,:) = ( 0.4_wp * (1. + zpsino3 * qnpmax ) ) * r1_rday * tgfunc3(:,:,:) 
    117118 
    118119      ! compute the day length depending on latitude and the day 
     
    140141                  ENDIF 
    141142                  zmxl_chl(ji,jj,jk) = zval / 24. 
    142                   zmxl_fac(ji,jj,jk) = 1.5 * zval / ( 12. + zval ) 
     143                  zmxl_fac(ji,jj,jk) = 1.0 - exp( -0.26 * zval ) 
    143144               ENDIF 
    144145            END DO 
     
    176177                  ! Computation of production function for Carbon 
    177178                  !  --------------------------------------------- 
    178                   zprbio(ji,jj,jk) = zprbio(ji,jj,jk) * ( 1.- EXP( -zpislopen * enano(ji,jj,jk) )  ) 
    179                   zprpic(ji,jj,jk) = zprpic(ji,jj,jk) * ( 1.- EXP( -zpislopep * epico(ji,jj,jk) )  ) 
    180                   zprdia(ji,jj,jk) = zprdia(ji,jj,jk) * ( 1.- EXP( -zpisloped * ediat(ji,jj,jk) )  ) 
     179                  zprbio(ji,jj,jk) = zprbio(ji,jj,jk) * ( 1.- EXP( -zpislopen * enano(ji,jj,jk) / zmxl_chl(ji,jj,jk) )  ) 
     180                  zprpic(ji,jj,jk) = zprpic(ji,jj,jk) * ( 1.- EXP( -zpislopep * epico(ji,jj,jk) / zmxl_chl(ji,jj,jk))  ) 
     181                  zprdia(ji,jj,jk) = zprdia(ji,jj,jk) * ( 1.- EXP( -zpisloped * ediat(ji,jj,jk) / zmxl_chl(ji,jj,jk))  ) 
    181182 
    182183                  ! Computation of production function for Chlorophyll 
     
    197198            DO ji = 1, jpi 
    198199 
    199                 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 
     200               IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 
    200201                  !    Si/C of diatoms 
    201202                  !    ------------------------ 
     
    205206                  zlim  = trb(ji,jj,jk,jpsil) / ( trb(ji,jj,jk,jpsil) + xksi1 ) 
    206207                  zsilim = MIN( zprdia(ji,jj,jk) / ( zprmaxd(ji,jj,jk) + rtrn ), xlimsi(ji,jj,jk) ) 
    207                   zsilfac = 3.4 * EXP( -4.23 * zsilim ) * MAX( 0.e0, MIN( 1., 2.2 * ( zlim - 0.5 ) )  ) + 1.e0 
    208208                  zsiborn = trb(ji,jj,jk,jpsil) * trb(ji,jj,jk,jpsil) * trb(ji,jj,jk,jpsil) 
    209209                  IF (gphit(ji,jj) < -30 ) THEN 
    210                     zsilfac2 = 1. + 2. * zsiborn / ( zsiborn + xksi2**3 ) 
     210                    zsilfac2 = 1. + 1. * zsiborn / ( zsiborn + xksi2**3 ) 
    211211                  ELSE 
    212                     zsilfac2 = 1. +      zsiborn / ( zsiborn + xksi2**3 ) 
     212                    zsilfac2 = 1. 
    213213                  ENDIF 
    214                   zysopt(ji,jj,jk) = grosip * zlim * zsilfac * zsilfac2 
    215               ENDIF 
     214                  zratiosi = 1.0 - trb(ji,jj,jk,jpdsi) / ( trb(ji,jj,jk,jpdia) + rtrn ) / ( zsilfac2 * grosip * 3.0 + rtrn ) 
     215                  zratiosi = MAX(0., MIN(1.0, zratiosi) ) 
     216                  zmaxsi  = (1.0 + 0.1**4) * zratiosi**4 / ( zratiosi**4 + 0.1**4 ) 
     217                  IF ( xlimsi(ji,jj,jk) /= xlimdia(ji,jj,jk) ) THEN 
     218                     zysopt(ji,jj,jk) = zlim * zsilfac2 * grosip * 1.0 * zmaxsi 
     219                  ELSE 
     220                     zysopt(ji,jj,jk) = zlim * zsilfac2 * grosip * 1.0 * zsilim**0.75 * zmaxsi 
     221                  ENDIF 
     222               ENDIF 
    216223            END DO 
    217224         END DO 
     
    226233               zprdia(ji,jj,jk)  = zprdia(ji,jj,jk) * ( 1. - fr_i(ji,jj) )  
    227234               zprnut(ji,jj,jk)  = zprnut(ji,jj,jk) * ( 1. - fr_i(ji,jj) ) 
     235               zprnutp(ji,jj,jk) = zprnutp(ji,jj,jk) * ( 1. - fr_i(ji,jj) ) 
    228236            END DO 
    229237         END DO 
     
    237245                  !  production terms for nanophyto. 
    238246                  zprorcan(ji,jj,jk) = zprbio(ji,jj,jk)  * xlimphy(ji,jj,jk) * trb(ji,jj,jk,jpphy) * rfact2 
    239                   ! 
     247                  ! size computation 
     248                  zlimfac = xlimphys(ji,jj,jk) * zprchln(ji,jj,jk) / ( zprmaxn(ji,jj,jk) + rtrn ) 
     249                  zsizetmp = 1.0 + 1.3 * ( xsizern - 1.0 ) * zlimfac**3/(0.3 + zlimfac**3) 
     250                  sizena(ji,jj,jk) = min(xsizern, max( sizena(ji,jj,jk), zsizetmp ) ) 
     251                  ! Nutrient uptake terms 
    240252                  zration = trb(ji,jj,jk,jpnph) / ( trb(ji,jj,jk,jpphy) + rtrn ) 
    241253                  zratiop = trb(ji,jj,jk,jppph) / ( trb(ji,jj,jk,jpphy) + rtrn ) 
     
    243255                  zprnutmax = zprnut(ji,jj,jk) * fvnuptk(ji,jj,jk) / rno3 * trb(ji,jj,jk,jpphy) * rfact2 
    244256                  ! Uptake of nitrogen 
    245                   zrat = MIN( 1., zration / (xqnnmax(ji,jj,jk) + rtrn) )  
    246                   zmax = MAX(0., MIN(1., (1. - zrat)/ (1.05 - zrat) * 1.05)) 
     257                  zrat = 1.0 - MIN( 1., zration / (xqnnmax(ji,jj,jk) + rtrn) ) 
     258                  zmax = MAX(0., MIN(1., zrat**2 / (0.05**2 + zrat**2) ) ) 
    247259                  zpronmax = zprnutmax * zmax * MAX(0., MIN(1., ( zratiop - xqpnmin(ji,jj,jk) )   & 
    248260                  &          / ( xqpnmax(ji,jj,jk) - xqpnmin(ji,jj,jk) + rtrn ), xlimnfe(ji,jj,jk) ) ) 
    249                   zpronewn(ji,jj,jk) = zpronmax * zdaylen(ji,jj) * xnanono3(ji,jj,jk) 
     261                  zpronewn(ji,jj,jk) = zpronmax * xnanono3(ji,jj,jk) 
    250262                  zproregn(ji,jj,jk) = zpronmax * xnanonh4(ji,jj,jk) 
    251263                  ! Uptake of phosphorus 
    252                   zrat = MIN( 1., zratiop / (xqpnmax(ji,jj,jk) + rtrn) ) 
    253                   zmax = MAX(0., MIN(1., (1. - zrat)/ (1.05 - zrat) * 1.05)) 
    254                   zpropmax = zprnutmax * zmax * xlimnfe(ji,jj,jk) 
     264                  zrat = 1.0 - MIN( 1., zratiop / (xqpnmax(ji,jj,jk) + rtrn) ) 
     265                  zmax = MAX(0., MIN(1., zrat**2 / (0.05**2 + zrat**2) ) ) 
     266                  zpropmax = zprnutmax * zmax * xlimnfe(ji,jj,jk) * 16. / 10. 
    255267                  zpropo4n(ji,jj,jk) = zpropmax * xnanopo4(ji,jj,jk) 
    256268                  zprodopn(ji,jj,jk) = zpropmax * xnanodop(ji,jj,jk) 
    257269                  ! Uptake of iron 
    258                   zrat = MIN( 1., zratiof / qfnmax ) 
    259                   zmax = MAX(0., MIN(1., (1. - zrat)/ (1.05 - zrat) * 1.05)) 
    260                   zprofmax = zprnutmax * qfnmax * zmax 
    261                   zprofen(ji,jj,jk) = zprofmax * xnanofer(ji,jj,jk) * ( 3. - 2.4 * xlimnfe(ji,jj,jk)    & 
    262                   &          / ( xlimnfe(ji,jj,jk) + 0.2 ) ) * (1. + 0.8 * xnanono3(ji,jj,jk) / ( rtrn  & 
     270                  zrat = 1.0 - MIN( 1., zratiof / qfnmax ) 
     271                  zmax = MAX(0., MIN(1., zrat**2/ (0.05**2 + zrat**2) ) ) 
     272                  zprofmax = zprnutmax * qfnmax * zmax  
     273                  zprofen(ji,jj,jk) = zprofmax * xnanofer(ji,jj,jk)    & 
     274                  &          * (1. + 0.8 * xnanono3(ji,jj,jk) / ( rtrn  & 
    263275                  &          + xnanono3(ji,jj,jk) + xnanonh4(ji,jj,jk) ) * (1. - xnanofer(ji,jj,jk) ) ) 
    264276               ENDIF 
     
    274286                  !  production terms for picophyto. 
    275287                  zprorcap(ji,jj,jk) = zprpic(ji,jj,jk)  * xlimpic(ji,jj,jk) * trb(ji,jj,jk,jppic) * rfact2 
    276                   ! 
     288                  ! Size computation 
     289                  zlimfac = zprchlp(ji,jj,jk)  * xlimpics(ji,jj,jk) / ( zprmaxp(ji,jj,jk) + rtrn ) 
     290                  zsizetmp = 1.0 + 1.3 * ( xsizerp - 1.0 ) * zlimfac**3/(0.3 + zlimfac**3) 
     291                  sizepa(ji,jj,jk) = min(xsizerp, max( sizepa(ji,jj,jk), zsizetmp ) ) 
     292                  ! Nutrient uptake 
    277293                  zration = trb(ji,jj,jk,jpnpi) / ( trb(ji,jj,jk,jppic) + rtrn ) 
    278294                  zratiop = trb(ji,jj,jk,jpppi) / ( trb(ji,jj,jk,jppic) + rtrn ) 
    279295                  zratiof = trb(ji,jj,jk,jppfe) / ( trb(ji,jj,jk,jppic) + rtrn ) 
    280                   zprnutmax = zprnut(ji,jj,jk) * fvpuptk(ji,jj,jk) / rno3 * trb(ji,jj,jk,jppic) * rfact2 
     296                  zprnutmax = zprnutp(ji,jj,jk) * fvpuptk(ji,jj,jk) / rno3 * trb(ji,jj,jk,jppic) * rfact2 
    281297                  ! Uptake of nitrogen 
    282                   zrat = MIN( 1., zration / (xqnpmax(ji,jj,jk) + rtrn) ) 
    283                   zmax = MAX(0., MIN(1., (1. - zrat)/ (1.05 - zrat) * 1.05)) 
     298                  zrat = 1.0 - MIN( 1., zration / (xqnpmax(ji,jj,jk) + rtrn) ) 
     299                  zmax = MAX(0., MIN(1., zrat**2/ (0.05**2 + zrat**2) ) ) 
    284300                  zpronmax = zprnutmax * zmax * MAX(0., MIN(1., ( zratiop - xqppmin(ji,jj,jk) )   & 
    285301                  &          / ( xqppmax(ji,jj,jk) - xqppmin(ji,jj,jk) + rtrn ), xlimpfe(ji,jj,jk) ) ) 
    286                   zpronewp(ji,jj,jk) = zpronmax * zdaylen(ji,jj) * xpicono3(ji,jj,jk)  
     302                  zpronewp(ji,jj,jk) = zpronmax * xpicono3(ji,jj,jk)  
    287303                  zproregp(ji,jj,jk) = zpronmax * xpiconh4(ji,jj,jk) 
    288304                  ! Uptake of phosphorus 
    289                   zrat = MIN( 1., zratiop / (xqppmax(ji,jj,jk) + rtrn) ) 
    290                   zmax = MAX(0., MIN(1., (1. - zrat)/ (1.05 - zrat) * 1.05)) 
    291                   zpropmax = zprnutmax * zmax * xlimpfe(ji,jj,jk) 
     305                  zrat = 1.0 - MIN( 1., zratiop / (xqppmax(ji,jj,jk) + rtrn) ) 
     306                  zmax = MAX(0., MIN(1., zrat**2 / (0.05**2 + zrat**2) ) ) 
     307                  zpropmax = zprnutmax * zmax * xlimpfe(ji,jj,jk) * 16./10. 
    292308                  zpropo4p(ji,jj,jk) = zpropmax * xpicopo4(ji,jj,jk) 
    293309                  zprodopp(ji,jj,jk) = zpropmax * xpicodop(ji,jj,jk) 
    294310                  ! Uptake of iron 
    295                   zrat = MIN( 1., zratiof / qfpmax ) 
    296                   zmax = MAX(0., MIN(1., (1. - zrat)/ (1.05 - zrat) * 1.05)) 
     311                  zrat = 1.0 - MIN( 1., zratiof / qfpmax ) 
     312                  zmax = MAX(0., MIN(1., zrat**2 / (0.05**2 + zrat**2) ) ) 
    297313                  zprofmax = zprnutmax * qfpmax * zmax 
    298                   zprofep(ji,jj,jk) = zprofmax * xpicofer(ji,jj,jk) * ( 3. - 2.4 * xlimpfe(ji,jj,jk)  & 
    299                   &          / ( xlimpfe(ji,jj,jk) + 0.2 ) ) * (1. + 0.8 * xpicono3(ji,jj,jk) / ( rtrn   & 
     314                  zprofep(ji,jj,jk) = zprofmax * xpicofer(ji,jj,jk) & 
     315                  &          * (1. + 0.8 * xpicono3(ji,jj,jk) / ( rtrn   & 
    300316                  &          + xpicono3(ji,jj,jk) + xpiconh4(ji,jj,jk) ) * (1. - xpicofer(ji,jj,jk) ) ) 
    301317               ENDIF 
     
    311327                  !  production terms for diatomees 
    312328                  zprorcad(ji,jj,jk) = zprdia(ji,jj,jk) * xlimdia(ji,jj,jk) * trb(ji,jj,jk,jpdia) * rfact2 
    313                   ! Computation of the respiration term according to pahlow  
    314                   ! & oschlies (2013) 
    315                   ! 
     329                  ! size computation 
     330                  zlimfac = zprchld(ji,jj,jk) * xlimdias(ji,jj,jk) / ( zprmaxd(ji,jj,jk) + rtrn ) 
     331                  zsizetmp = 1.0 + 1.3 * ( xsizerd - 1.0 ) * zlimfac**3/(0.3 + zlimfac**3) 
     332                  sizeda(ji,jj,jk) = min(xsizerd, max( sizeda(ji,jj,jk), zsizetmp ) ) 
     333                  ! Nutrient uptake 
    316334                  zration = trb(ji,jj,jk,jpndi) / ( trb(ji,jj,jk,jpdia) + rtrn ) 
    317335                  zratiop = trb(ji,jj,jk,jppdi) / ( trb(ji,jj,jk,jpdia) + rtrn ) 
     
    319337                  zprnutmax = zprnut(ji,jj,jk) * fvduptk(ji,jj,jk) / rno3 * trb(ji,jj,jk,jpdia) * rfact2 
    320338                  ! Uptake of nitrogen 
    321                   zrat = MIN( 1., zration / (xqndmax(ji,jj,jk) + rtrn) ) 
    322                   zmax = MAX(0., MIN(1., (1. - zrat)/ (1.05 - zrat) * 1.05))  
     339                  zrat = 1.0 - MIN( 1., zration / (xqndmax(ji,jj,jk) + rtrn) ) 
     340                  zmax = MAX(0., MIN(1., zrat**2 / (0.05**2 + zrat**2) ) ) 
    323341                  zpronmax = zprnutmax * zmax * MAX(0., MIN(1., ( zratiop - xqpdmin(ji,jj,jk) )   & 
    324342                  &          / ( xqpdmax(ji,jj,jk) - xqpdmin(ji,jj,jk) + rtrn ), xlimdfe(ji,jj,jk) ) ) 
    325                   zpronewd(ji,jj,jk) = zpronmax * zdaylen(ji,jj) * xdiatno3(ji,jj,jk) 
     343                  zpronewd(ji,jj,jk) = zpronmax * xdiatno3(ji,jj,jk) 
    326344                  zproregd(ji,jj,jk) = zpronmax * xdiatnh4(ji,jj,jk) 
    327345                  ! Uptake of phosphorus 
    328                   zrat = MIN( 1., zratiop / (xqpdmax(ji,jj,jk) + rtrn) ) 
    329                   zmax = MAX(0., MIN(1., (1. - zrat)/ (1.05 - zrat) * 1.05))  
    330                   zpropmax = zprnutmax * zmax * xlimdfe(ji,jj,jk) 
     346                  zrat = 1.0 - MIN( 1., zratiop / (xqpdmax(ji,jj,jk) + rtrn) ) 
     347                  zmax = MAX(0., MIN(1., zrat**2/ (0.05**2 + zrat**2) ) ) 
     348                  zpropmax = zprnutmax * zmax * xlimdfe(ji,jj,jk) * 16./10. 
    331349                  zpropo4d(ji,jj,jk) = zpropmax * xdiatpo4(ji,jj,jk) 
    332350                  zprodopd(ji,jj,jk) = zpropmax * xdiatdop(ji,jj,jk) 
    333351                  ! Uptake of iron 
    334                   zrat = MIN( 1., zratiof / qfdmax ) 
    335                   zmax = MAX(0., MIN(1., (1. - zrat)/ (1.05 - zrat) * 1.05)) 
     352                  zrat = 1.0 - MIN( 1., zratiof / qfdmax ) 
     353                  zmax = MAX(0., MIN(1., zrat**2 / (0.05**2 + zrat**2) ) ) 
    336354                  zprofmax = zprnutmax * qfdmax * zmax 
    337                   zprofed(ji,jj,jk) = zprofmax * xdiatfer(ji,jj,jk) * ( 3. - 2.4 * xlimdfe(ji,jj,jk)     & 
    338                   &          / ( xlimdfe(ji,jj,jk) + 0.2 ) ) * (1. + 0.8 * xdiatno3(ji,jj,jk) / ( rtrn   & 
     355                  zprofed(ji,jj,jk) = zprofmax * xdiatfer(ji,jj,jk)    & 
     356                  &          * (1. + 0.8 * xdiatno3(ji,jj,jk) / ( rtrn   & 
    339357                  &          + xdiatno3(ji,jj,jk) + xdiatnh4(ji,jj,jk) ) * (1. - xdiatfer(ji,jj,jk) ) ) 
    340358               ENDIF 
     
    350368                  znanotot = enanom(ji,jj,jk) / ( zmxl_chl(ji,jj,jk) + rtrn ) 
    351369                  zprod = rday * (zpronewn(ji,jj,jk) + zproregn(ji,jj,jk)) * zprchln(ji,jj,jk) * xlimphy(ji,jj,jk) 
    352                   thetannm_n   = MIN ( thetannm, ( thetannm / (1. - 1.14 / 43.4 *tsn(ji,jj,jk,jp_tem)))   & 
    353                   &               * (1. - 1.14 / 43.4 * 20.)) 
    354                   zprochln = thetannm_n * zprod / ( zpislopeadn(ji,jj,jk) * znanotot + rtrn ) 
     370                  zprochln = thetannm * zprod / ( zpislopeadn(ji,jj,jk) * znanotot + rtrn ) 
    355371                  zprochln = MAX(zprochln, chlcmin * 12. * zprorcan (ji,jj,jk) ) 
    356372                     !  production terms for picophyto. ( chlorophyll ) 
    357373                  zpicotot = epicom(ji,jj,jk) / ( zmxl_chl(ji,jj,jk) + rtrn ) 
    358374                  zprod = rday * (zpronewp(ji,jj,jk) + zproregp(ji,jj,jk)) * zprchlp(ji,jj,jk) * xlimpic(ji,jj,jk) 
    359                   thetanpm_n   = MIN ( thetanpm, ( thetanpm / (1. - 1.14 / 43.4 *tsn(ji,jj,jk,jp_tem)))   & 
    360                   &               * (1. - 1.14 / 43.4 * 20.)) 
    361                   zprochlp = thetanpm_n * zprod / ( zpislopeadp(ji,jj,jk) * zpicotot + rtrn ) 
     375                  zprochlp = thetanpm * zprod / ( zpislopeadp(ji,jj,jk) * zpicotot + rtrn ) 
    362376                  zprochlp = MAX(zprochlp, chlcmin * 12. * zprorcap(ji,jj,jk) ) 
    363377                  !  production terms for diatomees ( chlorophyll ) 
    364378                  zdiattot = ediatm(ji,jj,jk) / ( zmxl_chl(ji,jj,jk) + rtrn ) 
    365379                  zprod = rday * (zpronewd(ji,jj,jk) + zproregd(ji,jj,jk)) * zprchld(ji,jj,jk) * xlimdia(ji,jj,jk) 
    366                   thetandm_n   = MIN ( thetandm, ( thetandm / (1. - 1.14 / 43.4 *tsn(ji,jj,jk,jp_tem)))   & 
    367                   &               * (1. - 1.14 / 43.4 * 20.)) 
    368                   zprochld = thetandm_n * zprod / ( zpislopeadd(ji,jj,jk) * zdiattot + rtrn ) 
     380                  zprochld = thetandm * zprod / ( zpislopeadd(ji,jj,jk) * zdiattot + rtrn ) 
    369381                  zprochld = MAX(zprochld, chlcmin * 12. * zprorcad(ji,jj,jk) ) 
    370382                  !   Update the arrays TRA which contain the Chla sources and sinks 
     
    416428              &                     + zprodopd(ji,jj,jk) * texcretd 
    417429              tra(ji,jj,jk,jpdfe) = tra(ji,jj,jk,jpdfe) + zprofed(ji,jj,jk) * texcretd 
    418               tra(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) + zprorcad(ji,jj,jk) * zysopt(ji,jj,jk) * texcretd 
     430              tra(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) + zprmaxd(ji,jj,jk) * zysopt(ji,jj,jk) * rfact2 * trb(ji,jj,jk,jpdia) 
    419431              tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + excretd * zprorcad(ji,jj,jk) + excretn * zprorcan(ji,jj,jk)  & 
    420432              &                     + excretp * zprorcap(ji,jj,jk) 
     
    430442              zfeup = texcretn * zprofen(ji,jj,jk) + texcretd * zprofed(ji,jj,jk) + texcretp * zprofep(ji,jj,jk) 
    431443              tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zfeup 
    432               tra(ji,jj,jk,jpsil) = tra(ji,jj,jk,jpsil) - texcretd * zprorcad(ji,jj,jk) * zysopt(ji,jj,jk) 
     444              tra(ji,jj,jk,jpsil) = tra(ji,jj,jk,jpsil) - zprmaxd(ji,jj,jk) * zysopt(ji,jj,jk) * rfact2 * trb(ji,jj,jk,jpdia) 
    433445              tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) - zprorcan(ji,jj,jk) - zprorcad(ji,jj,jk) - zprorcap(ji,jj,jk)  & 
    434446              &                     + zpsino3 * zpronewn(ji,jj,jk) + zpsinh4 * zproregn(ji,jj,jk)   & 
  • NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/sms_pisces.F90

    r10788 r12349  
    103103   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   consgoc    !: Calcite production 
    104104   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   blim       !: bacterial production factor 
    105    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   sizen      !: size of diatoms  
    106    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   sizep      !: size of diatoms  
     105   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   sizen      !: size of nanophyto 
     106   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   sizep      !: size of picophyto 
    107107   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   sized      !: size of diatoms  
    108  
     108   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   sizena     !: size of nanophytoplankton, after 
     109   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   sizepa     !: size of picophyto, after 
     110   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   sizeda     !: size of diatomss, after 
    109111 
    110112   !!* Variable for chemistry of the CO2 cycle 
     
    120122   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   tgfunc    !: Temp. dependancy of various biological rates 
    121123   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   tgfunc2   !: Temp. dependancy of mesozooplankton rates 
     124   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   tgfunc3   !: Temp. dependancy of picophytoplankton rates 
    122125 
    123126   !!---------------------------------------------------------------------- 
     
    165168         ! 
    166169         !* Temperature dependancy of SMS terms 
    167          ALLOCATE( tgfunc(jpi,jpj,jpk)  , tgfunc2(jpi,jpj,jpk),   STAT=ierr(6) ) 
     170         ALLOCATE( tgfunc (jpi,jpj,jpk) , tgfunc2(jpi,jpj,jpk),     & 
     171            &      tgfunc3(jpi,jpj,jpk) , STAT=ierr(6) ) 
    168172         ! 
    169173         !* Sinkong speed 
     
    182186         !*  Size of phytoplankton cells 
    183187         ALLOCATE( sizen(jpi,jpj,jpk), sizep(jpi,jpj,jpk),         & 
    184            &       sized(jpi,jpj,jpk),                            STAT=ierr(10) ) 
     188           &       sized(jpi,jpj,jpk), sizena(jpi,jpj,jpk),        & 
     189           &       sizepa(jpi,jpj,jpk), sizeda(jpi,jpj,jpk),       STAT=ierr(10) ) 
    185190      ENDIF 
    186191      ! 
Note: See TracChangeset for help on using the changeset viewer.