Index: trunk/NEMOGCM/CONFIG/SHARED/namelist_pisces_ref
===================================================================
--- trunk/NEMOGCM/CONFIG/SHARED/namelist_pisces_ref	(revision 4528)
+++ trunk/NEMOGCM/CONFIG/SHARED/namelist_pisces_ref	(revision 4529)
@@ -31,5 +31,5 @@
    cn_dir      = './'     !  root directory for the location of the dynamical files
 !
-   ln_presatm  = .true.   ! constant atmopsheric pressure (F) or from a file (T)
+   ln_presatm  = .false.   ! constant atmopsheric pressure (F) or from a file (T)
 /
 !'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
@@ -40,5 +40,5 @@
    xkmort     =  2.E-7    ! half saturation constant for mortality
    ferat3     =  10.E-6   ! Fe/C in zooplankton 
-   wsbio2     =  50.      ! Big particles sinking speed
+   wsbio2     =  30.      ! Big particles sinking speed
    niter1max  =  1        ! Maximum number of iterations for POC
    niter2max  =  1        ! Maximum number of iterations for GOC
@@ -48,12 +48,12 @@
 !,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
    concnno3   =  1.e-6    ! Nitrate half saturation of nanophytoplankton
-   concdno3   =  3.E-6   ! Phosphate half saturation for diatoms
+   concdno3   =  3.E-6    ! Phosphate half saturation for diatoms
    concnnh4   =  1.E-7    ! NH4 half saturation for phyto
-   concdnh4   =  3.E-7   ! NH4 half saturation for diatoms
-   concnfer   =  1.E-9     ! Iron half saturation for phyto
-   concdfer   =  3.E-9   ! Iron half saturation for diatoms
+   concdnh4   =  3.E-7    ! NH4 half saturation for diatoms
+   concnfer   =  1.E-9    ! Iron half saturation for phyto
+   concdfer   =  3.E-9    ! Iron half saturation for diatoms
    concbfe    =  1.E-11   ! Half-saturation for Fe limitation of Bacteria
-   concbnh4   =  2.5E-8   ! NH4 half saturation for phyto
-   concbno3   =  2.5E-7   ! Phosphate half saturation for diatoms
+   concbnh4   =  2.E-8    ! NH4 half saturation for phyto
+   concbno3   =  2.E-7    ! Phosphate half saturation for diatoms
    xsizedia   =  1.E-6    ! Minimum size criteria for diatoms
    xsizephy   =  1.E-6    ! Minimum size criteria for phyto
@@ -82,4 +82,5 @@
    pislope    =  2.       ! P-I slope
    pislope2   =  2.       ! P-I slope  for diatoms
+   xadap      =  0.       ! Adaptation factor to low light
    excret     =  0.05     ! excretion ratio of phytoplankton
    excret2    =  0.05     ! excretion ratio of diatoms
@@ -107,5 +108,5 @@
    part2      =  0.75     ! part of calcite not dissolved in mesozoo guts
    grazrat2   =  0.75     ! maximal mesozoo grazing rate
-   resrat2    =  0.01     ! exsudation rate of mesozooplankton
+   resrat2    =  0.005    ! exsudation rate of mesozooplankton
    mzrat2     =  0.03     ! mesozooplankton mortality rate
    xprefc     =  1.       ! zoo preference for phyto
@@ -119,6 +120,6 @@
    xthresh2   =  3E-7     ! Food threshold for grazing
    xkgraz2    =  20.E-6   ! half sturation constant for meso grazing
-   epsher2    =  0.3      ! Efficicency of Mesozoo growth
-   sigma2     =  0.4      ! Fraction of mesozoo excretion as DOM
+   epsher2    =  0.35     ! Efficicency of Mesozoo growth
+   sigma2     =  0.6      ! Fraction of mesozoo excretion as DOM
    unass2     =  0.3      ! non assimilated fraction of P by mesozoo
    grazflux   =  2.e3     ! flux-feeding rate
@@ -129,5 +130,5 @@
    part       =  0.5      ! part of calcite not dissolved in microzoo gutsa
    grazrat    =  3.0      ! maximal zoo grazing rate
-   resrat     =  0.05     ! exsudation rate of zooplankton
+   resrat     =  0.03     ! exsudation rate of zooplankton
    mzrat      =  0.004    ! zooplankton mortality rate
    xpref2c    =  0.1      ! Microzoo preference for POM
@@ -139,5 +140,5 @@
    xthresh    =  3.E-7    ! Food threshold for feeding
    xkgraz     =  20.E-6   ! half sturation constant for grazing
-   epsher     =  0.4      ! Efficiency of microzoo growth
+   epsher     =  0.3      ! Efficiency of microzoo growth
    sigma1     =  0.6      ! Fraction of microzoo excretion as DOM
    unass      =  0.3      ! non assimilated fraction of phyto by zoo
@@ -185,5 +186,5 @@
    sn_ndepo    = 'ndeposition.orca',    -12            , 'ndep'        ,  .false.     , .true. , 'yearly'  , ''       , ''    , ''
    sn_ironsed  = 'bathy.orca'      ,    -12            , 'bathy'       ,  .false.     , .true. , 'yearly'  , ''       , ''    , ''
-   sn_hydrofe  = 'hydrofe'         ,    -12            , 'epsdb'       ,  .false.     , .true. , 'yearly'  , ''       , ''    , ''
+   sn_hydrofe  = 'hydrofe.orca'    ,    -12            , 'epsdb'       ,  .false.     , .true. , 'yearly'  , ''       , ''    , ''
 !
    cn_dir      = './'      !  root directory for the location of the dynamical files
@@ -195,6 +196,7 @@
    ln_ironice  =  .true.   ! boolean for Fe input from sea ice
    ln_hydrofe  =  .false.  ! boolean for from hydrothermal vents
-   sedfeinput  =  1.e-9    ! Coastal release of Iron
-   dustsolub   =  0.02     ! Solubility of the dust
+   sedfeinput  =  2.e-9    ! Coastal release of Iron
+   dustsolub   =  0.02     ! Solubility of the dusta
+   mfrac       =  0.035    ! Fe mineral fraction of dust
    wdust       =  2.0      ! Dust sinking speed 
    icefeinput  =  15.e-9   ! Iron concentration in sea ice
@@ -202,5 +204,5 @@
    diazolight  =  50.      ! Diazotrophs sensitivity to light (W/m2)
    concfediaz  =  1.e-10   ! Diazotrophs half-saturation Cste for Iron
-   hratio      =  9.e+5    ! Fe to 3He ratio assumed for vent iron supply 
+   hratio      =  1.e+7    ! Fe to 3He ratio assumed for vent iron supply 
 /
 !'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Index: trunk/NEMOGCM/CONFIG/cfg.txt
===================================================================
--- trunk/NEMOGCM/CONFIG/cfg.txt	(revision 4528)
+++ trunk/NEMOGCM/CONFIG/cfg.txt	(revision 4529)
@@ -6,7 +6,7 @@
 ORCA2_SAS_LIM OPA_SRC SAS_SRC LIM_SRC_2 NST_SRC
 C1D_PAPA OPA_SRC
-ORCA2_LIM_PISCES OPA_SRC LIM_SRC_2 NST_SRC TOP_SRC
 ORCA2_LIM3 OPA_SRC LIM_SRC_3 NST_SRC
 ORCA2_LIM OPA_SRC LIM_SRC_2 NST_SRC
 AMM12 OPA_SRC
 GYRE_BFM OPA_SRC TOP_SRC
+ORCA2_LIM_PISCES OPA_SRC LIM_SRC_2 NST_SRC TOP_SRC
Index: trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zbio.F90
===================================================================
--- trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zbio.F90	(revision 4528)
+++ trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zbio.F90	(revision 4529)
@@ -86,10 +86,9 @@
       CALL p4z_prod ( kt, jnt )     ! phytoplankton growth rate over the global ocean. 
       !                             ! (for each element : C, Si, Fe, Chl )
-      CALL p4z_rem  ( kt, jnt )     ! remineralization terms of organic matter+scavenging of Fe
       CALL p4z_mort ( kt      )     ! phytoplankton mortality
       !                             ! zooplankton sources/sinks routines 
       CALL p4z_micro( kt, jnt )           ! microzooplankton
       CALL p4z_meso ( kt, jnt )           ! mesozooplankton
-
+      CALL p4z_rem  ( kt, jnt )     ! remineralization terms of organic matter+scavenging of Fe
       !                             ! test if tracers concentrations fall below 0.
       xnegtr(:,:,:) = 1.e0
@@ -148,2 +147,3 @@
    !!======================================================================
 END MODULE  p4zbio
+
Index: trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zfechem.F90
===================================================================
--- trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zfechem.F90	(revision 4528)
+++ trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zfechem.F90	(revision 4529)
@@ -244,5 +244,5 @@
                ztrc   = ( trn(ji,jj,jk,jppoc) + trn(ji,jj,jk,jpgoc) + trn(ji,jj,jk,jpcal) + trn(ji,jj,jk,jpgsi) ) * 1.e6 
 #endif
-               IF( ln_dust )  zdust  = dust(ji,jj) / ( wdust * 30.42 * 0.035 ) * tmask(ji,jj,jk)
+               IF( ln_dust )  zdust  = dust(ji,jj) / ( wdust * rday ) * tmask(ji,jj,jk) ! dust in kg/m2/s
                zlam1b = 3.e-5 + xlamdust * zdust + xlam1 * ztrc
                zscave = zfeequi * zlam1b * zstep
Index: trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zlim.F90
===================================================================
--- trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zlim.F90	(revision 4528)
+++ trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zlim.F90	(revision 4529)
@@ -92,5 +92,5 @@
                zno3    = trn(ji,jj,jk,jpno3) / 40.e-6
                zferlim = MAX( 3e-11 * zno3 * zno3, 5e-12 )
-               zferlim = MIN( zferlim, 5e-11 )
+               zferlim = MIN( zferlim, 7e-11 )
                trn(ji,jj,jk,jpfer) = MAX( trn(ji,jj,jk,jpfer), zferlim )
 
@@ -137,6 +137,7 @@
                zironmin = xcoef1 * trn(ji,jj,jk,jpnch) * z1_trnphy + xcoef2 * zlim1 + xcoef3 * xnanono3(ji,jj,jk)
                zlim3    = MAX( 0.,( zratio - zironmin ) / qnfelim )
-               xlimnfe(ji,jj,jk) = MIN( 1., zlim3 )
-               xlimphy(ji,jj,jk) = MIN( zlim1, zlim2, zlim3 )
+               xnanopo4(ji,jj,jk) = zlim2
+               xlimnfe (ji,jj,jk) = MIN( 1., zlim3 )
+               xlimphy (ji,jj,jk) = MIN( zlim1, zlim2, zlim3 )
                !
                !   Michaelis-Menten Limitation term for nutrients Diatoms
@@ -152,7 +153,8 @@
                zironmin = xcoef1 * trn(ji,jj,jk,jpdch) * z1_trndia + xcoef2 * zlim1 + xcoef3 * xdiatno3(ji,jj,jk)
                zlim4    = MAX( 0., ( zratio - zironmin ) / qdfelim )
-               xlimdfe(ji,jj,jk) = MIN( 1., zlim4 )
-               xlimdia(ji,jj,jk) = MIN( zlim1, zlim2, zlim3, zlim4 )
-               xlimsi(ji,jj,jk)  = MIN( zlim1, zlim2, zlim4 )
+               xdiatpo4(ji,jj,jk) = zlim2
+               xlimdfe (ji,jj,jk) = MIN( 1., zlim4 )
+               xlimdia (ji,jj,jk) = MIN( zlim1, zlim2, zlim3, zlim4 )
+               xlimsi  (ji,jj,jk) = MIN( zlim1, zlim2, zlim4 )
            END DO
          END DO
Index: trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmeso.F90
===================================================================
--- trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmeso.F90	(revision 4528)
+++ trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmeso.F90	(revision 4529)
@@ -71,9 +71,9 @@
       INTEGER  :: ji, jj, jk
       REAL(wp) :: zcompadi, zcompaph, zcompapoc, zcompaz, zcompam
-      REAL(wp) :: zgraze2 , zdenom, zdenom2, zncratio
+      REAL(wp) :: zgraze2 , zdenom, zdenom2
       REAL(wp) :: zfact   , zstep, zfood, zfoodlim, zproport
       REAL(wp) :: zmortzgoc, zfrac, zfracfe, zratio, zratio2
-      REAL(wp) :: zepshert, zepsherv, zgrarsig, zgraztot, zgraztotf
-      REAL(wp) :: zgrarem2, zgrafer2, zgrapoc2, zprcaca, zmortz2, zgrasrat
+      REAL(wp) :: zepshert, zepsherv, zgrarsig, zgraztot, zgraztotn, zgraztotf
+      REAL(wp) :: zgrarem2, zgrafer2, zgrapoc2, zprcaca, zmortz2, zgrasrat, zgrasratn
 #if defined key_kriest
       REAL znumpoc
@@ -98,5 +98,5 @@
          DO jj = 1, jpj
             DO ji = 1, jpi
-               zcompam   = MAX( ( trn(ji,jj,jk,jpmes) - 1.e-8 ), 0.e0 )
+               zcompam   = MAX( ( trn(ji,jj,jk,jpmes) - 1.e-9 ), 0.e0 )
 # if defined key_degrad
                zstep     = xstep * facvol(ji,jj,jk)
@@ -116,8 +116,11 @@
                ztortz2   = mzrat2 * 1.e6 * zfact * trn(ji,jj,jk,jpmes)
                !
-
                zcompadi  = MAX( ( trn(ji,jj,jk,jpdia) - xthresh2dia ), 0.e0 )
                zcompaz   = MAX( ( trn(ji,jj,jk,jpzoo) - xthresh2zoo ), 0.e0 )
-               zcompaph  = MAX( ( trn(ji,jj,jk,jpphy) - xthresh2phy ), 0.e0 )
+               ! Size effect of nanophytoplankton on grazing : the smaller it is, the less prone
+               ! it is to predation by mesozooplankton
+               ! -------------------------------------------------------------------------------
+               zcompaph  = MAX( ( trn(ji,jj,jk,jpphy) - xthresh2phy ), 0.e0 ) &
+                  &      * MIN(1., MAX( 0., ( quotan(ji,jj,jk) - 0.2) / 0.3 ) )
                zcompapoc = MAX( ( trn(ji,jj,jk,jppoc) - xthresh2poc ), 0.e0 )
 
@@ -139,9 +142,12 @@
                !  Mesozooplankton flux feeding on GOC
                !  ----------------------------------
+               !  ----------------------------------
 # if ! defined key_kriest
-               zgrazffeg = grazflux  * zstep * wsbio4(ji,jj,jk) * trn(ji,jj,jk,jpgoc) * trn(ji,jj,jk,jpmes)
+               zgrazffeg = grazflux  * zstep * wsbio4(ji,jj,jk)      &
+               &           * tgfunc2(ji,jj,jk) * trn(ji,jj,jk,jpgoc) * trn(ji,jj,jk,jpmes)
                zgrazfffg = zgrazffeg * trn(ji,jj,jk,jpbfe) / (trn(ji,jj,jk,jpgoc) + rtrn)
 # endif
-               zgrazffep = grazflux  * zstep *  wsbio3(ji,jj,jk) * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jpmes)
+               zgrazffep = grazflux  * zstep *  wsbio3(ji,jj,jk)     &
+               &           * tgfunc2(ji,jj,jk) * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jpmes)
                zgrazfffp = zgrazffep * trn(ji,jj,jk,jpsfe) / (trn(ji,jj,jk,jppoc) + rtrn)
               !
@@ -150,10 +156,12 @@
               ! Compute the proportion of filter feeders
               zproport  = (zgrazffep + zgrazffeg)/(rtrn + zgraztot)
-              ! Compute fractionation of aggregates. It is assumed that diatoms based aggregates are more prone to fractionation
+              ! Compute fractionation of aggregates. It is assumed that 
+              ! diatoms based aggregates are more prone to fractionation
               ! since they are more porous (marine snow instead of fecal pellets)
               zratio    = trn(ji,jj,jk,jpgsi) / ( trn(ji,jj,jk,jpgoc) + rtrn )
               zratio2   = zratio * zratio
-              zfrac     = zproport * zgrazffeg * ( 0.1 + 3.9 * zratio2 / ( 1.**2 + zratio2 ) )
-
+              zfrac     = zproport * grazflux  * zstep * wsbio4(ji,jj,jk)      &
+               &          * trn(ji,jj,jk,jpgoc) * trn(ji,jj,jk,jpmes)          &
+               &          * ( 0.1 + 3.9 * zratio2 / ( 1.**2 + zratio2 ) )
               zfracfe   = zfrac * trn(ji,jj,jk,jpbfe) / (trn(ji,jj,jk,jpgoc) + rtrn)
 
@@ -163,4 +171,6 @@
               zgrazfffg = zproport * zgrazfffg
               zgraztot  = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffep + zgrazffeg
+              zgraztotn = zgrazd * quotad(ji,jj,jk) + zgrazz + zgrazn * quotan(ji,jj,jk)   &
+              &   + zgrazpoc + zgrazffep + zgrazffeg
               zgraztotf = zgrazf + zgraznf + zgrazz * ferat3 + zgrazpof + zgrazfffp + zgrazfffg
 # else
@@ -171,4 +181,5 @@
               zgrazfffp = zproport * zgrazfffp
               zgraztot  = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffep
+              zgraztotn = zgrazd * quotad(ji,jj,jk) + zgrazz + zgrazn * quotan(ji,jj,jk) + zgrazpoc + zgrazffep
               zgraztotf = zgrazf + zgraznf + zgrazz * ferat3 + zgrazpof + zgrazfffp
 # endif
@@ -179,15 +190,12 @@
               !    Mesozooplankton efficiency
               !    --------------------------
-              zgrasrat   =  zgraztotf / ( zgraztot + rtrn )
-              zncratio   = (  xprefc   * zcompadi * quotad(ji,jj,jk)  &
-                  &         + xprefp   * zcompaph * quotan(ji,jj,jk)  &
-                  &         + xprefz   * zcompaz                      &
-                  &         + xprefpoc * zcompapoc   ) / ( zfood + rtrn )
-               zepshert  = epsher2 * MIN( 1., zncratio )
-               zepsherv  = zepshert * MIN( 1., zgrasrat / ferat3 )
-               zgrarem2  =  zgraztot * ( 1. - zepsherv - unass2 ) + zrespz2  &
-                  &       + ( 1. - zepsherv - unass2 ) /( 1. - zepsherv ) * ztortz2
-               zgrafer2  =  zgraztot * MAX( 0. , ( 1. - unass2 ) * zgrasrat - ferat3 * zepsherv )    &
-                  &       + ferat3 * ( zrespz2 + ( 1. - zepsherv - unass2 ) /( 1. - zepsherv ) * ztortz2 )
+               zgrasrat  =  ( zgraztotf +rtrn )/ ( zgraztot + rtrn )
+               zgrasratn =  ( zgraztotn +rtrn )/ ( zgraztot + rtrn )
+               zepshert  = MIN( 1., zgrasratn, zgrasrat / ferat3)
+               zepsherv  = zepshert * MIN( epsher2, (1. - unass2) * zgrasrat / ferat3, (1. - unass2) * zgrasratn )
+               zgrarem2  = zgraztot * ( 1. - zepsherv - unass2 ) &
+                &       + ( 1. - epsher2 - unass2 ) / ( 1. - epsher2 ) * ztortz2
+               zgrafer2  = zgraztot * MAX( 0. , ( 1. - unass2 ) * zgrasrat - ferat3 * zepsherv )    &
+                &       + ferat3 * ( ( 1. - epsher2 - unass2 ) /( 1. - epsher2 ) * ztortz2 )
                zgrapoc2  = zgraztot * unass2
 
@@ -215,6 +223,6 @@
                tra(ji,jj,jk,jpdfe) = tra(ji,jj,jk,jpdfe) - zgrazf
 
+               ! calcite production
                zprcaca = xfracal(ji,jj,jk) * zgrazn
-               ! calcite production
                prodcal(ji,jj,jk) = prodcal(ji,jj,jk) + zprcaca  ! prodcal=prodcal(nanophy)+prodcal(microzoo)+prodcal(mesozoo)
                !
@@ -224,14 +232,16 @@
                tra(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal) + zprcaca
 #if defined key_kriest
-               znumpoc = trn(ji,jj,jk,jpnum) / ( trn(ji,jj,jk,jppoc) + rtrn )
-               tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zmortzgoc - zgrazpoc - zgrazffep + zgrapoc2
-               tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) - zgrazpoc * znumpoc + zgrapoc2 * xkr_dmeso      &
-               &                   + zmortzgoc * xkr_dmeso - zgrazffep * znumpoc * wsbio4(ji,jj,jk) / ( wsbio3(ji,jj,jk) + rtrn )
-               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + ferat3 * zmortz2 - zgrazfffp - zgrazpof + zgraztotf * unass2
+              znumpoc = trn(ji,jj,jk,jpnum) / ( trn(ji,jj,jk,jppoc) + rtrn )
+              tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zmortzgoc - zgrazpoc - zgrazffep + zgrapoc2
+              tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) - zgrazpoc * znumpoc + zgrapoc2 * xkr_dmeso      &
+                 &   + zmortzgoc * xkr_dmeso - zgrazffep * znumpoc * wsbio4(ji,jj,jk) / ( wsbio3(ji,jj,jk) + rtrn )
+              tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + ferat3 * zmortzgoc - zgrazfffp - zgrazpof    &
+                 &                 + zgraztotf * unass2
 #else
-               tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zgrazpoc - zgrazffep + zfrac
-               tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zmortzgoc - zgrazffeg + zgrapoc2 - zfrac
-               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zgrazpof - zgrazfffp + zfracfe
-               tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + ferat3 * zmortzgoc - zgrazfffg + zgraztotf * unass2 - zfracfe
+              tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zgrazpoc - zgrazffep + zfrac
+              tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zmortzgoc - zgrazffeg + zgrapoc2 - zfrac
+              tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zgrazpof - zgrazfffp + zfracfe
+              tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + ferat3 * zmortzgoc - zgrazfffg     &
+                 &                + zgraztotf * unass2 - zfracfe
 #endif
             END DO
Index: trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmicro.F90
===================================================================
--- trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmicro.F90	(revision 4528)
+++ trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmicro.F90	(revision 4529)
@@ -72,9 +72,9 @@
       INTEGER  :: ji, jj, jk
       REAL(wp) :: zcompadi, zcompaz , zcompaph, zcompapoc
-      REAL(wp) :: zgraze  , zdenom, zdenom2, zncratio
+      REAL(wp) :: zgraze  , zdenom, zdenom2
       REAL(wp) :: zfact   , zstep, zfood, zfoodlim
-      REAL(wp) :: zepshert, zepsherv, zgrarsig, zgraztot, zgraztotf
+      REAL(wp) :: zepshert, zepsherv, zgrarsig, zgraztot, zgraztotn, zgraztotf
       REAL(wp) :: zgrarem, zgrafer, zgrapoc, zprcaca, zmortz
-      REAL(wp) :: zrespz, ztortz, zgrasrat
+      REAL(wp) :: zrespz, ztortz, zgrasrat, zgrasratn
       REAL(wp) :: zgrazp, zgrazm, zgrazsd
       REAL(wp) :: zgrazmf, zgrazsf, zgrazpf
@@ -91,5 +91,5 @@
          DO jj = 1, jpj
             DO ji = 1, jpi
-               zcompaz = MAX( ( trn(ji,jj,jk,jpzoo) - 1.e-8 ), 0.e0 )
+               zcompaz = MAX( ( trn(ji,jj,jk,jpzoo) - 1.e-9 ), 0.e0 )
                zstep   = xstep
 # if defined key_degrad
@@ -130,4 +130,5 @@
                zgraztot  = zgrazp  + zgrazm  + zgrazsd 
                zgraztotf = zgrazpf + zgrazsf + zgrazmf 
+               zgraztotn = zgrazp * quotan(ji,jj,jk) + zgrazm + zgrazsd * quotad(ji,jj,jk)
 
                ! Grazing by microzooplankton
@@ -137,8 +138,7 @@
                !    --------------------------------------------
                zgrasrat  = zgraztotf / ( zgraztot + rtrn )
-               zncratio  = ( xpref2p * zcompaph * quotan(ji,jj,jk) &
-                  &        + xpref2d * zcompadi * quotad(ji,jj,jk) + xpref2c * zcompapoc ) / ( zfood + rtrn )
-               zepshert  = epsher * MIN( 1., zncratio )
-               zepsherv  = zepshert * MIN( 1., zgrasrat / ferat3 )
+               zgrasratn = zgraztotn / ( zgraztot + rtrn )
+               zepshert  =  MIN( 1., zgrasratn, zgrasrat / ferat3)
+               zepsherv  = zepshert * MIN( epsher, (1. - unass) * zgrasrat / ferat3, (1. - unass) * zgrasratn )
                zgrafer   = zgraztot * MAX( 0. , ( 1. - unass ) * zgrasrat - ferat3 * zepsherv ) 
                zgrarem   = zgraztot * ( 1. - zepsherv - unass )
@@ -174,7 +174,7 @@
                tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zmortz - zgrazm
                tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + ferat3 * zmortz - zgrazmf
-               zprcaca = xfracal(ji,jj,jk) * zgrazp
                !
                ! calcite production
+               zprcaca = xfracal(ji,jj,jk) * zgrazp
                prodcal(ji,jj,jk) = prodcal(ji,jj,jk) + zprcaca  ! prodcal=prodcal(nanophy)+prodcal(microzoo)+prodcal(mesozoo)
                !
Index: trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmort.F90
===================================================================
--- trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmort.F90	(revision 4528)
+++ trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmort.F90	(revision 4529)
@@ -18,4 +18,5 @@
    USE sms_pisces      !  PISCES Source Minus Sink variables
    USE p4zsink         !  vertical flux of particulate matter due to sinking
+   USE p4zprod         !  Primary productivity 
    USE prtctl_trc      !  print control for debugging
 
@@ -72,5 +73,5 @@
       !!---------------------------------------------------------------------
       INTEGER  :: ji, jj, jk
-      REAL(wp) :: zcompaph
+      REAL(wp) :: zsizerat, zcompaph
       REAL(wp) :: zfactfe, zfactch, zprcaca, zfracal
       REAL(wp) :: ztortp , zrespp , zmortp , zstep
@@ -89,12 +90,17 @@
                zstep    = zstep * facvol(ji,jj,jk)
 # endif
+               !     When highly limited by macronutrients, very small cells 
+               !     dominate the community. As a consequence, aggregation
+               !     due to turbulence is negligible. Mortality is also set
+               !     to 0
+               zsizerat = MIN(1., MAX( 0., (quotan(ji,jj,jk) - 0.2) / 0.3) ) * trn(ji,jj,jk,jpphy)
                !     Squared mortality of Phyto similar to a sedimentation term during
                !     blooms (Doney et al. 1996)
-               zrespp = wchl * 1.e6 * zstep * xdiss(ji,jj,jk) * zcompaph * trn(ji,jj,jk,jpphy) 
+               zrespp = wchl * 1.e6 * zstep * xdiss(ji,jj,jk) * zcompaph * zsizerat 
 
                !     Phytoplankton mortality. This mortality loss is slightly
                !     increased when nutrients are limiting phytoplankton growth
                !     as observed for instance in case of iron limitation.
-               ztortp = mprat * xstep * trn(ji,jj,jk,jpphy) / ( xkmort + trn(ji,jj,jk,jpphy) ) * zcompaph
+               ztortp = mprat * xstep * zcompaph / ( xkmort + trn(ji,jj,jk,jpphy) ) * zsizerat
 
                zmortp = zrespp + ztortp
@@ -166,5 +172,5 @@
             DO ji = 1, jpi
 
-               zcompadi = MAX( ( trn(ji,jj,jk,jpdia) - 1e-8), 0. )
+               zcompadi = MAX( ( trn(ji,jj,jk,jpdia) - 1e-9), 0. )
 
                !    Aggregation term for diatoms is increased in case of nutrient
@@ -181,6 +187,4 @@
                zlim1   = 0.25 * ( 1. - zlim2 ) / ( 0.25 + zlim2 ) 
                zrespp2 = 1.e6 * zstep * (  wchld + wchldm * zlim1 ) * xdiss(ji,jj,jk) * zcompadi * trn(ji,jj,jk,jpdia)
-              ! zlim1   = 1.0 - xlimdia(ji,jj,jk) 
-              ! zrespp2 = 1.e6 * zstep * (  wchl + wchld * zlim1 ) * xdiss(ji,jj,jk) * zcompadi * trn(ji,jj,jk,jpdia)
 
                !     Phytoplankton mortality. 
Index: trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zprod.F90
===================================================================
--- trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zprod.F90	(revision 4528)
+++ trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zprod.F90	(revision 4529)
@@ -35,4 +35,5 @@
    REAL(wp), PUBLIC ::  pislope         !:
    REAL(wp), PUBLIC ::  pislope2        !:
+   REAL(wp), PUBLIC ::  xadap           !:
    REAL(wp), PUBLIC ::  excret          !:
    REAL(wp), PUBLIC ::  excret2         !:
@@ -158,5 +159,5 @@
                   IF( etot(ji,jj,jk) > 1.E-3 ) THEN
                       ztn         = MAX( 0., tsn(ji,jj,jk,jp_tem) - 15. )
-                      zadap       = ztn / ( 2.+ ztn )
+                      zadap       = xadap * ztn / ( 2.+ ztn )
                       zconctemp   = MAX( 0.e0 , trn(ji,jj,jk,jpdia) - xsizedia )
                       zconctemp2  = trn(ji,jj,jk,jpdia) - zconctemp
@@ -227,4 +228,5 @@
       ENDIF
 
+
       !  Computation of a proxy of the N/C ratio
       !  ---------------------------------------
@@ -235,8 +237,10 @@
 !CDIR NOVERRCHK
             DO ji = 1, jpi
-                zval = ( xnanonh4(ji,jj,jk) + xnanono3(ji,jj,jk) ) * prmax(ji,jj,jk) / ( zprbio(ji,jj,jk) + rtrn )
-                quotan(ji,jj,jk) = MIN( 1., 0.5 + 0.5 * zval )
-                zval = ( xdiatnh4(ji,jj,jk) + xdiatno3(ji,jj,jk) ) * prmax(ji,jj,jk) / ( zprdia(ji,jj,jk) + rtrn )
-                quotad(ji,jj,jk) = MIN( 1., 0.5 + 0.5 * zval )
+                zval = MIN( xnanopo4(ji,jj,jk), ( xnanonh4(ji,jj,jk) + xnanono3(ji,jj,jk) ) )   &
+                &      * prmax(ji,jj,jk) / ( zprbio(ji,jj,jk) + rtrn )
+                quotan(ji,jj,jk) = MIN( 1., 0.2 + 0.8 * zval )
+                zval = MIN( xdiatpo4(ji,jj,jk), ( xdiatnh4(ji,jj,jk) + xdiatno3(ji,jj,jk) ) )   &
+                &      * prmax(ji,jj,jk) / ( zprdia(ji,jj,jk) + rtrn )
+                quotad(ji,jj,jk) = MIN( 1., 0.2 + 0.8 * zval )
             END DO
          END DO
@@ -274,5 +278,5 @@
             zmxltst = MAX( 0.e0, hmld(ji,jj) - heup(ji,jj) )
             zmxlday = zmxltst * zmxltst * r1_rday
-            zmixnano(ji,jj) = 1. - zmxlday / ( 3. + zmxlday )
+            zmixnano(ji,jj) = 1. - zmxlday / ( 2. + zmxlday )
             zmixdiat(ji,jj) = 1. - zmxlday / ( 4. + zmxlday )
          END DO
@@ -470,5 +474,5 @@
       !!----------------------------------------------------------------------
       !
-      NAMELIST/nampisprod/ pislope, pislope2, ln_newprod, bresp, excret, excret2,  &
+      NAMELIST/nampisprod/ pislope, pislope2, xadap, ln_newprod, bresp, excret, excret2,  &
          &                 chlcnm, chlcdm, chlcmin, fecnm, fecdm, grosip
       INTEGER :: ios                 ! Local integer output status for namelist read
@@ -491,4 +495,5 @@
          WRITE(numout,*) '    mean Si/C ratio                           grosip       =', grosip
          WRITE(numout,*) '    P-I slope                                 pislope      =', pislope
+         WRITE(numout,*) '    Acclimation factor to low light           xadap       =', xadap
          WRITE(numout,*) '    excretion ratio of nanophytoplankton      excret       =', excret
          WRITE(numout,*) '    excretion ratio of diatoms                excret2      =', excret2
Index: trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsbc.F90
===================================================================
--- trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsbc.F90	(revision 4528)
+++ trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsbc.F90	(revision 4529)
@@ -35,4 +35,5 @@
    REAL(wp), PUBLIC  :: sedfeinput  !: Coastal release of Iron
    REAL(wp), PUBLIC  :: dustsolub   !: Solubility of the dust
+   REAL(wp), PUBLIC  :: mfrac       !: Mineral Content of the dust
    REAL(wp), PUBLIC  :: icefeinput  !: Iron concentration in sea ice
    REAL(wp), PUBLIC  :: wdust       !: Sinking speed of the dust 
@@ -232,4 +233,5 @@
          WRITE(numout,*) '    coastal release of iron                  sedfeinput  = ', sedfeinput
          WRITE(numout,*) '    solubility of the dust                   dustsolub   = ', dustsolub
+         WRITE(numout,*) '    Mineral Fe content of the dust           mfrac       = ', mfrac
          WRITE(numout,*) '    Iron concentration in sea ice            icefeinput  = ', icefeinput
          WRITE(numout,*) '    sinking speed of the dust                wdust       = ', wdust
@@ -278,5 +280,5 @@
                sumdepsi = sumdepsi + glob_sum( zdust(:,:,jm) * e1e2t(:,:) * tmask(:,:,1) * ztimes_dust )
             ENDDO
-            sumdepsi = sumdepsi / ( nyear_len(1) * rday ) * 12. * 8.8 * 0.075 / 28.1 
+            sumdepsi = sumdepsi / ( nyear_len(1) * rday ) * 12. * 8.8 * 0.075 * mfrac / 28.1 
             DEALLOCATE( zdust)
          ENDIF
Index: trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsed.F90
===================================================================
--- trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsed.F90	(revision 4528)
+++ trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsed.F90	(revision 4529)
@@ -71,12 +71,12 @@
       REAL(wp) ::  zo2, zno3, zflx, zpdenit, z1pdenit, zdenitt, zolimit
       REAL(wp) ::  zsiloss, zcaloss, zws3, zws4, zwsc, zdep, zwstpoc
-      REAL(wp) ::  ztrfer, ztrpo4, zwdust
+      REAL(wp) ::  ztrfer, ztrpo4, zwdust, zlight
       REAL(wp) ::  zrdenittot, zsdenittot, znitrpottot
       !
       CHARACTER (len=25) :: charout
       REAL(wp), POINTER, DIMENSION(:,:  ) :: zpdep, zsidep, zwork1, zwork2, zwork3, zwork4
-      REAL(wp), POINTER, DIMENSION(:,:  ) :: zdenit2d, zironice
+      REAL(wp), POINTER, DIMENSION(:,:  ) :: zdenit2d, zironice, zbureff
       REAL(wp), POINTER, DIMENSION(:,:  ) :: zwsbio3, zwsbio4, zwscal
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: znitrpot, zirondep
+      REAL(wp), POINTER, DIMENSION(:,:,:) :: znitrpot, zirondep, zsoufer
       !!---------------------------------------------------------------------
       !
@@ -93,9 +93,10 @@
       !
       ! Allocate temporary workspace
-      CALL wrk_alloc( jpi, jpj, zdenit2d, zwork1, zwork2, zwork3, zwork4 )
+      CALL wrk_alloc( jpi, jpj, zdenit2d, zwork1, zwork2, zwork3, zwork4, zbureff )
       CALL wrk_alloc( jpi, jpj, zwsbio3, zwsbio4, zwscal )
-      CALL wrk_alloc( jpi, jpj, jpk, znitrpot )
+      CALL wrk_alloc( jpi, jpj, jpk, znitrpot, zsoufer )
 
       zdenit2d(:,:) = 0.e0
+      zbureff (:,:) = 0.e0
 
       ! Iron input/uptake due to sea ice : Crude parameterization based on Lancelot et al.
@@ -131,14 +132,15 @@
          !                                              ! Iron and Si deposition at the surface
          IF( ln_solub ) THEN
-            zirondep(:,:,1) = solub(:,:) * dust(:,:) * rfact2 / fse3t(:,:,1) / ( 55.85 * rmtss ) + 3.e-10 * r1_ryyss 
+            zirondep(:,:,1) = solub(:,:) * dust(:,:) * mfrac * rfact2 / fse3t(:,:,1) / ( 55.85 * rmtss ) + 3.e-10 * r1_ryyss 
          ELSE
-            zirondep(:,:,1) = dustsolub  * dust(:,:) * rfact2 / fse3t(:,:,1) / ( 55.85 * rmtss ) + 3.e-10 * r1_ryyss 
+            zirondep(:,:,1) = dustsolub  * dust(:,:) * mfrac * rfact2 / fse3t(:,:,1) / ( 55.85 * rmtss ) + 3.e-10 * r1_ryyss 
          ENDIF
-         zsidep(:,:) = 8.8 * 0.075 * dust(:,:) * rfact2 / fse3t(:,:,1) / ( 28.1  * rmtss )
-         zpdep (:,:) = 0.1 * 0.021 * dust(:,:) * rfact2 / fse3t(:,:,1) / ( 31.   * rmtss ) / po4r 
+         zsidep(:,:) = 8.8 * 0.075 * dust(:,:) * mfrac * rfact2 / fse3t(:,:,1) / ( 28.1  * rmtss )
+         zpdep (:,:) = 0.1 * 0.021 * dust(:,:) * mfrac * rfact2 / fse3t(:,:,1) / ( 31.   * rmtss ) / po4r 
          !                                              ! Iron solubilization of particles in the water column
-         zwdust = 0.005 / ( wdust * 55.85 * 30.42 ) / ( 45. * rday ) 
+         !                                              ! dust in kg/m2/s ---> 1/55.85 to put in mol/Fe ;  wdust in m/j
+         zwdust = 0.03 * rday / ( wdust * 55.85 ) / ( 270. * rday )
          DO jk = 2, jpkm1
-            zirondep(:,:,jk) = dust(:,:) * zwdust * rfact2 * EXP( -fsdept(:,:,jk) / 1000. )
+            zirondep(:,:,jk) = dust(:,:) * mfrac * zwdust * rfact2 * EXP( -fsdept(:,:,jk) / 540. )
          END DO
          !                                              ! Iron solubilization of particles in the water column
@@ -152,5 +154,5 @@
                IF( jnt == nrdttrc ) THEN
                   CALL iom_put( "Irondep", zirondep(:,:,1) * zfact * fse3t(:,:,1) * tmask(:,:,1) ) ! surface downward dust depo of iron
-                  CALL iom_put( "pdust"  , dust(:,:) / ( wdust * 30.42 * 0.035 )  * tmask(:,:,1) ) ! dust concentration at surface
+                  CALL iom_put( "pdust"  , dust(:,:) / ( wdust * rday )  * tmask(:,:,1) ) ! dust concentration at surface
                ENDIF
             ELSE
@@ -215,4 +217,5 @@
 #if ! defined key_sed
       ! Computation of the sediment denitrification proportion: The metamodel from midlleburg (2006) is being used
+      ! Computation of the fraction of organic matter that is permanently buried from Dunne's model
       ! -------------------------------------------------------
       DO jj = 1, jpj
@@ -233,7 +236,12 @@
               &                + 0.4721 * zo2 - 0.0996 * zdep + 0.4256 * zflx * zo2
               zdenit2d(ji,jj) = 10.0**( zdenit2d(ji,jj) )
+              !
+              zflx = (  trn(ji,jj,ikt,jpgoc) * zwsbio4(ji,jj)   &
+                &     + trn(ji,jj,ikt,jppoc) * zwsbio3(ji,jj) ) * 1E6
+              zbureff(ji,jj) = 0.013 + 0.53 * zflx**2 / ( 7.0 + zflx )**2
            ENDIF
          END DO
       END DO 
+
       ! Loss of biogenic silicon, Caco3 organic carbon in the sediments. 
       ! First, the total loss is computed.
@@ -266,5 +274,4 @@
 #if ! defined key_sed
       zrivsil =  1._wp - ( sumdepsi + rivdsiinput * r1_ryyss ) / zsumsedsi
-      zrivno3 =  1._wp - ( rivdininput * r1_ryyss ) / zsumsedpo4
 #endif
 
@@ -301,4 +308,5 @@
             zws4 = zwsbio4(ji,jj) * zdep
             zws3 = zwsbio3(ji,jj) * zdep
+            zrivno3 = 1. - zbureff(ji,jj)
 # if ! defined key_kriest
             trn(ji,jj,ikt,jpgoc) = trn(ji,jj,ikt,jpgoc) - trn(ji,jj,ikt,jpgoc) * zws4
@@ -334,9 +342,10 @@
 
       ! Nitrogen fixation process
+      ! Small source iron from particulate inorganic iron
       !-----------------------------------
       DO jk = 1, jpkm1
          DO jj = 1, jpj
             DO ji = 1, jpi
-               !                                       ! Potential nitrogen fixation dependant on temperature and iron
+               !                      ! Potential nitrogen fixation dependant on temperature and iron
                zlim = ( 1.- xnanono3(ji,jj,jk) - xnanonh4(ji,jj,jk) )
                IF( zlim <= 0.2 )   zlim = 0.01
@@ -348,21 +357,11 @@
                ztrfer = biron(ji,jj,jk)       / ( concfediaz + biron(ji,jj,jk)       )
                ztrpo4 = trn  (ji,jj,jk,jppo4) / ( concnnh4   + trn  (ji,jj,jk,jppo4) ) 
+               zlight =  ( 1.- EXP( -etot(ji,jj,jk) / diazolight ) ) 
                znitrpot(ji,jj,jk) =  MAX( 0.e0, ( 0.6 * tgfunc(ji,jj,jk) - 2.15 ) * r1_rday )   &
-                 &         *  zfact * MIN( ztrfer, ztrpo4 ) * ( 1.- EXP( -etot(ji,jj,jk) / diazolight ) )
+                 &         *  zfact * MIN( ztrfer, ztrpo4 ) * zlight
+               zsoufer(ji,jj,jk) = zlight * 2E-11 / (2E-11 + biron(ji,jj,jk))
             END DO
          END DO
       END DO
- 
-      IF( ln_check_mass ) THEN
-         ! The total gain from nitrogen fixation is scaled to balance the loss by denitrification
-         ! -------------------------------------------------------------
-         zrdenittot   = glob_sum ( denitr(:,:,:) * rdenit * xnegtr(:,:,:) * cvol(:,:,:) )
-         zsdenittot   = glob_sum ( zwork4(:,:)   * e1e2t(:,:) )
-         znitrpottot  = glob_sum ( znitrpot(:,:,:)                        * cvol(:,:,:) )
-         IF( kt == nitend .AND. jnt == nrdttrc ) THEN
-            zfact = 1.e+3 * rfact2r * rno3 * 365. * 86400. * 14. / 1e12
-            IF(lwp) WRITE(numnit,9100) ndastp, znitrpottot * nitrfix * zfact, zrdenittot * zfact , zsdenittot * zfact
-         ENDIF
-       ENDIF
 
       ! Nitrogen change due to nitrogen fixation
@@ -371,13 +370,28 @@
          DO jj = 1, jpj
             DO ji = 1, jpi
-               ! zfact = znitrpot(ji,jj,jk) * ( zrdenittot + zsdenittot ) / znitrpottot
                zfact = znitrpot(ji,jj,jk) * nitrfix
                trn(ji,jj,jk,jpnh4) = trn(ji,jj,jk,jpnh4) +             zfact
                trn(ji,jj,jk,jptal) = trn(ji,jj,jk,jptal) + rno3      * zfact
                trn(ji,jj,jk,jpoxy) = trn(ji,jj,jk,jpoxy) + o2nit     * zfact 
-               trn(ji,jj,jk,jppo4) = trn(ji,jj,jk,jppo4) + 30. / 46. * zfact
+               trn(ji,jj,jk,jppo4) = trn(ji,jj,jk,jppo4) + concdnh4 / ( concdnh4 + trn(ji,jj,jk,jppo4) ) &
+               &                     * 0.002 * trn(ji,jj,jk,jpdoc) * rfact2 / rday
+               trn(ji,jj,jk,jpfer) = trn(ji,jj,jk,jpfer) + 0.002 * 4E-10 * zsoufer(ji,jj,jk) * rfact2 / rday
            END DO
          END DO 
       END DO
+
+ 
+      IF( ln_check_mass ) THEN
+        ! Global budget of N SMS : denitrification in the water column and in the sediment
+         !                          nitrogen fixation by the diazotrophs
+         ! --------------------------------------------------------------------------------
+         zrdenittot   = glob_sum ( denitr(:,:,:) * rdenit * xnegtr(:,:,:) * cvol(:,:,:) )
+         zsdenittot   = glob_sum ( zwork4(:,:)   * e1e2t(:,:) )
+         znitrpottot  = glob_sum ( znitrpot(:,:,:) * nitrfix              * cvol(:,:,:) )
+         IF( kt == nitend .AND. jnt == nrdttrc ) THEN
+            zfact = 1.e+3 * rfact2r * rno3 * ryyss * 14. / 1e12
+            IF(lwp) WRITE(numnit,9100) ndastp, znitrpottot * nitrfix * zfact, zrdenittot * zfact , zsdenittot * zfact
+         ENDIF
+       ENDIF
       !
       IF( ln_diatrc ) THEN
Index: trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/sms_pisces.F90
===================================================================
--- trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/sms_pisces.F90	(revision 4528)
+++ trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/sms_pisces.F90	(revision 4529)
@@ -68,4 +68,6 @@
    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xnanonh4   !: ???
    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xdiatnh4   !: ???
+   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xnanopo4   !: ???
+   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xdiatpo4   !: ???
    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xlimphy    !: ???
    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xlimdia    !: ???
@@ -136,4 +138,5 @@
          &      xnanono3(jpi,jpj,jpk), xdiatno3(jpi,jpj,jpk),       &
          &      xnanonh4(jpi,jpj,jpk), xdiatnh4(jpi,jpj,jpk),       &
+         &      xnanopo4(jpi,jpj,jpk), xdiatpo4(jpi,jpj,jpk),       &
          &      xlimphy (jpi,jpj,jpk), xlimdia (jpi,jpj,jpk),       &
          &      xlimnfe (jpi,jpj,jpk), xlimdfe (jpi,jpj,jpk),       &
Index: trunk/NEMOGCM/NEMO/TOP_SRC/par_trc.F90
===================================================================
--- trunk/NEMOGCM/NEMO/TOP_SRC/par_trc.F90	(revision 4528)
+++ trunk/NEMOGCM/NEMO/TOP_SRC/par_trc.F90	(revision 4529)
@@ -38,5 +38,5 @@
 # endif
 
-   REAL(wp), PUBLIC  :: rtrn  = 1.e-15      !: truncation value     
+   REAL(wp), PUBLIC  :: rtrn  = 0.5 * EPSILON( 1.e0 )    !: truncation value
 
    !!----------------------------------------------------------------------
