Index: trunk/NEMO/OFF_SRC/DOM/domain.F90
===================================================================
--- trunk/NEMO/OFF_SRC/DOM/domain.F90	(revision 1118)
+++ trunk/NEMO/OFF_SRC/DOM/domain.F90	(revision 1119)
@@ -108,16 +108,18 @@
       INTEGER ::   ioptio = 0      ! temporary integer
 
-      NAMELIST/nam_run/ no    , cexper   , ln_rstart , nrstdt , nit000,          &
-         &             nitend, ndate0   , nleapy   , ninist , nstock,           &
-         &             nprint, nwrite   , ln_ctl , nictls, nictle,   &
+      NAMELIST/namrun/ no    , cexper   , ln_rstart , nrstdt , nit000,         &
+         &             nitend, ndate0   , nleapy    , ninist , nstock,         &
+         &             nwrite 
+
+      NAMELIST/namctl/ ln_ctl , nprint, nictls, nictle,   &
          &             njctls, njctle   , nbench   , isplt  , jsplt
 
-      NAMELIST/nam_zgr/ ln_zco, ln_zps, ln_sco
-
-      NAMELIST/nam_dom/ e3zps_min, e3zps_rat, nmsh  ,   &
+      NAMELIST/namzgr/ ln_zco, ln_zps, ln_sco
+
+      NAMELIST/namdom/ e3zps_min, e3zps_rat, nmsh  ,   &
          &             nacc  , atfp     , rdt      , rdtmin , rdtmax,   &
          &             rdth 
 
-      NAMELIST/nam_cla/ n_cla
+      NAMELIST/namcla/ n_cla
       !!----------------------------------------------------------------------
 
@@ -130,5 +132,5 @@
       ! Namelist namrun : parameters of the run
       REWIND( numnam )
-      READ  ( numnam, nam_run )
+      READ  ( numnam, namrun )
 
       IF(lwp) THEN
@@ -143,8 +145,18 @@
          WRITE(numout,*) '           leap year calendar (0/1)        nleapy    = ', nleapy
          WRITE(numout,*) '           initial state output            ninist    = ', ninist
-         WRITE(numout,*) '           level of print                  nprint    = ', nprint
          WRITE(numout,*) '           frequency of restart file       nstock    = ', nstock
          WRITE(numout,*) '           frequency of output file        nwrite    = ', nwrite
+      ENDIF
+
+      ndastp = ndate0                ! Assign initial date to current date
+
+     ! Namelist namctl : print control
+      REWIND( numnam )
+      READ  ( numnam, namctl )
+
+      IF(lwp) THEN
+         WRITE(numout,*) '        Namelist namctl'
          WRITE(numout,*) '           run control (for debugging)     ln_ctl    = ', ln_ctl
+         WRITE(numout,*) '           level of print                  nprint    = ', nprint
          WRITE(numout,*) '           Start i indice for SUM control  nictls    = ', nictls
          WRITE(numout,*) '           End i indice for SUM control    nictle    = ', nictle
@@ -157,5 +169,4 @@
 
       ndastp = ndate0                ! Assign initial date to current date
-
 ! ... Control the sub-domain area indices for the print control
       IF(ln_ctl)   THEN
@@ -267,8 +278,8 @@
       ENDIF
 
-      ! Read Namelist nam_zgr : vertical coordinate'
+      ! Read Namelist namzgr : vertical coordinate'
       ! ---------------------
       REWIND ( numnam )
-      READ   ( numnam, nam_zgr )
+      READ   ( numnam, namzgr )
 
       ! Parameter control and print
@@ -279,5 +290,5 @@
          WRITE(numout,*) 'Namelist namzgr : vertical coordinate'
          WRITE(numout,*) '~~~~~~~'
-         WRITE(numout,*) '          Namelist nam_zgr : set vertical coordinate'
+         WRITE(numout,*) '          Namelist namzgr : set vertical coordinate'
          WRITE(numout,*) '             z-coordinate - full steps      ln_zco = ', ln_zco
          WRITE(numout,*) '             z-coordinate - partial steps   ln_zps = ', ln_zps
@@ -300,5 +311,5 @@
       ! Namelist namdom : space/time domain (bathymetry, mesh, timestep)
       REWIND( numnam )
-      READ  ( numnam, nam_dom )
+      READ  ( numnam, namdom )
 
       IF(lwp) THEN
@@ -327,5 +338,5 @@
       ! Namelist cross land advection
       REWIND( numnam )
-      READ  ( numnam, nam_cla )
+      READ  ( numnam, namcla )
       IF(lwp) THEN
          WRITE(numout,*)
Index: trunk/NEMO/OFF_SRC/TRA/trabbl.F90
===================================================================
--- trunk/NEMO/OFF_SRC/TRA/trabbl.F90	(revision 1118)
+++ trunk/NEMO/OFF_SRC/TRA/trabbl.F90	(revision 1119)
@@ -102,5 +102,5 @@
       !!----------------------------------------------------------------------
       !! * Local declarations
-      NAMELIST/nam_bbl/ atrbbl
+      NAMELIST/nambbl/ atrbbl
       !!----------------------------------------------------------------------
 
@@ -108,5 +108,5 @@
       ! --------------------
       REWIND ( numnam )
-      READ   ( numnam, nam_bbl )
+      READ   ( numnam, nambbl )
 
       ! Parameter control and print
@@ -117,5 +117,5 @@
          WRITE(numout,*) 'tra_bbl_init : * Diffusive Bottom Boundary Layer'
          WRITE(numout,*) '~~~~~~~~~~~~'
-         WRITE(numout,*) '          Namelist nam_bbl : set bbl parameters'
+         WRITE(numout,*) '          Namelist nambbl : set bbl parameters'
          WRITE(numout,*)
          WRITE(numout,*) '          bottom boundary layer coef.    atrbbl = ', atrbbl
Index: trunk/NEMO/OFF_SRC/TRA/traqsr.F90
===================================================================
--- trunk/NEMO/OFF_SRC/TRA/traqsr.F90	(revision 1118)
+++ trunk/NEMO/OFF_SRC/TRA/traqsr.F90	(revision 1119)
@@ -56,5 +56,5 @@
       !! * Local declarations
 
-      NAMELIST/nam_qsr/ ln_traqsr, xsi1
+      NAMELIST/namqsr/ ln_traqsr, xsi1
       !!----------------------------------------------------------------------
 
@@ -62,5 +62,5 @@
       ! --------------------
       REWIND ( numnam )
-      READ   ( numnam, nam_qsr )
+      READ   ( numnam, namqsr )
 
       ! Parameter control and print
Index: trunk/NEMO/OFF_SRC/dtadyn.F90
===================================================================
--- trunk/NEMO/OFF_SRC/dtadyn.F90	(revision 1118)
+++ trunk/NEMO/OFF_SRC/dtadyn.F90	(revision 1119)
@@ -147,5 +147,5 @@
 
 
-      NAMELIST/nam_offdyn/ ndtadyn, ndtatot, nsptint,            & 
+      NAMELIST/namdyn/ ndtadyn, ndtatot, nsptint,            & 
           &                nficdyn, lperdyn
       !!----------------------------------------------------------------------
@@ -154,13 +154,13 @@
       ! ======================================
 
-      ! Read Namelist nam_offdyn : Lateral physics on tracers
+      ! Read Namelist namdyn : Lateral physics on tracers
       REWIND( numnam )
-      READ  ( numnam, nam_offdyn )
+      READ  ( numnam, namdyn )
 
       IF(lwp) THEN
          WRITE(numout,*)
-         WRITE(numout,*) 'nam_offdyn : offline dynamical selection'
+         WRITE(numout,*) 'namdyn : offline dynamical selection'
          WRITE(numout,*) '~~~~~~~'
-         WRITE(numout,*) '  Namelist nam_offdyn : set parameters for the lecture of the dynamical fields'
+         WRITE(numout,*) '  Namelist namdyn : set parameters for the lecture of the dynamical fields'
          WRITE(numout,*) 
          WRITE(numout,*) ' number of elements in the FILE for a year  ndtadyn = ' , ndtadyn
Index: trunk/NEMO/OFF_SRC/eosbn2.F90
===================================================================
--- trunk/NEMO/OFF_SRC/eosbn2.F90	(revision 1118)
+++ trunk/NEMO/OFF_SRC/eosbn2.F90	(revision 1119)
@@ -38,9 +38,9 @@
 
    !! * Share module variables
-   INTEGER , PUBLIC ::   &  !: nam_eos : ocean physical parameters
+   INTEGER , PUBLIC ::   &  !: nameos : ocean physical parameters
       neos      = 0,     &  !: = 0/1/2 type of eq. of state and Brunt-Vaisala frequ.
       neos_init = 0         !: control flag for initialization
 
-   REAL(wp), PUBLIC ::   &  !: nam_eos : ocean physical parameters
+   REAL(wp), PUBLIC ::   &  !: nameos : ocean physical parameters
       ralpha = 2.0e-4,   &  !: thermal expension coeff. (linear equation of state)
       rbeta  = 7.7e-4       !: saline  expension coeff. (linear equation of state)
@@ -779,5 +779,5 @@
       !! ** Purpose :   initializations for the equation of state
       !!
-      !! ** Method  :   Read the namelist nam_eos
+      !! ** Method  :   Read the namelist nameos
       !!
       !! ** Action  :   blahblah....
@@ -786,5 +786,5 @@
       !!   8.5  !  02-10  (G. Madec)  Original code
       !!----------------------------------------------------------------------
-      NAMELIST/nam_eos/ neos, ralpha, rbeta
+      NAMELIST/nameos/ neos, ralpha, rbeta
       !!----------------------------------------------------------------------
       !!  OPA 8.5, LODYC-IPSL (2002)
@@ -794,9 +794,9 @@
       neos_init = 1           ! indicate that the initialization has been done
 
-      ! namelist nam_eos : ocean physical parameters
-
-      ! Read Namelist nam_eos : equation of state
+      ! namelist nameos : ocean physical parameters
+
+      ! Read Namelist nameos : equation of state
       REWIND( numnam )
-      READ  ( numnam, nam_eos )
+      READ  ( numnam, nameos )
 
       ! Control print
@@ -805,5 +805,5 @@
          WRITE(numout,*) 'eos_init : equation of state'
          WRITE(numout,*) '~~~~~~~~'
-         WRITE(numout,*) '          Namelist nam_eos : set eos parameters'
+         WRITE(numout,*) '          Namelist nameos : set eos parameters'
          WRITE(numout,*)
          WRITE(numout,*) '             flag for eq. of state and N^2  neos   = ', neos
Index: trunk/NEMO/OFF_SRC/lib_mpp.F90
===================================================================
--- trunk/NEMO/OFF_SRC/lib_mpp.F90	(revision 1118)
+++ trunk/NEMO/OFF_SRC/lib_mpp.F90	(revision 1119)
@@ -282,5 +282,5 @@
       !! * Local variables   (MPI version)
       INTEGER ::   mynode, ierr
-      NAMELIST/nam_mpp/ c_mpi_send
+      NAMELIST/nammpp/ c_mpi_send
       !!----------------------------------------------------------------------
 
@@ -292,7 +292,7 @@
       ! Namelist namrun : parameters of the run
       REWIND( numnam )
-      READ  ( numnam, nam_mpp )
-
-      WRITE(numout,*) '        Namelist nam_mpp'
+      READ  ( numnam, nammpp )
+
+      WRITE(numout,*) '        Namelist nammpp'
       WRITE(numout,*) '           mpi send type            c_mpi_send = ', c_mpi_send
 
Index: trunk/NEMO/OFF_SRC/opa.F90
===================================================================
--- trunk/NEMO/OFF_SRC/opa.F90	(revision 1118)
+++ trunk/NEMO/OFF_SRC/opa.F90	(revision 1119)
@@ -24,5 +24,4 @@
    ! ocean physics
    USE ldftra          ! lateral diffusivity setting    (ldftra_init routine)
-   USE zdfini
    USE traqsr          ! solar radiation penetration   (tra_qsr_init routine)
 
@@ -180,6 +179,4 @@
 #endif 
 
-      CALL zdf_init                             ! Vertical ocean physics
-
       !                                     ! Ocean trends
 
Index: trunk/NEMO/TOP_SRC/CFC/par_cfc.F90
===================================================================
--- trunk/NEMO/TOP_SRC/CFC/par_cfc.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/CFC/par_cfc.F90	(revision 1119)
@@ -10,11 +10,21 @@
    !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
-   USE par_lobster, ONLY : jp_lobster   !: number of tracers in LOBSTER
-   USE par_pisces , ONLY : jp_pisces    !: number of tracers in PISCES
+   USE par_lobster, ONLY : jp_lobster      !: number of tracers in LOBSTER
+   USE par_lobster, ONLY : jp_lobster_2d   !: number of 2D diag in LOBSTER
+   USE par_lobster, ONLY : jp_lobster_3d   !: number of 3D diag in LOBSTER
+   USE par_lobster, ONLY : jp_lobster_trd  !: number of biological diag in LOBSTER
+
+   USE par_pisces , ONLY : jp_pisces       !: number of tracers in PISCES
+   USE par_pisces , ONLY : jp_pisces_2d    !: number of 2D diag in PISCES
+   USE par_pisces , ONLY : jp_pisces_3d    !: number of 3D diag in PISCES
+   USE par_pisces , ONLY : jp_pisces_trd   !: number of biological diag in PISCES
 
    IMPLICIT NONE
    PUBLIC
 
-   INTEGER, PUBLIC, PARAMETER ::   jp_lp      = jp_lobster + jp_pisces   !: cumulative number of passive tracers
+   INTEGER, PUBLIC, PARAMETER ::   jp_lp      = jp_lobster     + jp_pisces     !: cumulative number of passive tracers
+   INTEGER, PUBLIC, PARAMETER ::   jp_lp_2d   = jp_lobster_2d  + jp_pisces_2d  !:
+   INTEGER, PUBLIC, PARAMETER ::   jp_lp_3d   = jp_lobster_3d  + jp_pisces_3d  !:
+   INTEGER, PUBLIC, PARAMETER ::   jp_lp_trd  = jp_lobster_trd + jp_pisces_trd !:
    
 #if defined key_cfc
@@ -43,6 +53,12 @@
 
    ! Starting/ending CFC do-loop indices (N.B. no CFC : jp_cfc0 > jp_cfc1 the do-loop are never done)
-   INTEGER, PUBLIC, PARAMETER ::   jp_cfc0    = jp_lp + 1       !: First index of CFC tracers
-   INTEGER, PUBLIC, PARAMETER ::   jp_cfc1    = jp_lp + jp_cfc  !: Last  index of CFC tracers
+   INTEGER, PUBLIC, PARAMETER ::   jp_cfc0     = jp_lp + 1       !: First index of CFC tracers
+   INTEGER, PUBLIC, PARAMETER ::   jp_cfc1     = jp_lp + jp_cfc  !: Last  index of CFC tracers
+   INTEGER, PUBLIC, PARAMETER ::   jp_cfc0_2d  = jp_lp_2d  + 1       !: First index of CFC tracers
+   INTEGER, PUBLIC, PARAMETER ::   jp_cfc1_2d  = jp_lp_2d  + jp_cfc_2d  !: Last  index of CFC tracers
+   INTEGER, PUBLIC, PARAMETER ::   jp_cfc0_3d  = jp_lp_3d  + 1       !: First index of CFC tracers
+   INTEGER, PUBLIC, PARAMETER ::   jp_cfc1_3d  = jp_lp_3d  + jp_cfc_3d  !: Last  index of CFC tracers
+   INTEGER, PUBLIC, PARAMETER ::   jp_cfc0_trd = jp_lp_trd + 1       !: First index of CFC tracers
+   INTEGER, PUBLIC, PARAMETER ::   jp_cfc1_trd = jp_lp_trd + jp_cfc_trd  !: Last  index of CFC tracers
 
    !!======================================================================
Index: trunk/NEMO/TOP_SRC/CFC/trclsm_cfc.F90
===================================================================
--- trunk/NEMO/TOP_SRC/CFC/trclsm_cfc.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/CFC/trclsm_cfc.F90	(revision 1119)
@@ -44,5 +44,5 @@
       INTEGER ::   numnat
       !!
-      NAMELIST/namdates/ ndate_beg, nyear_res
+      NAMELIST/namcfcdate/ ndate_beg, nyear_res
       !!-------------------------------------------------------------------
 
@@ -54,5 +54,5 @@
          &           1, numout, .FALSE., 1 )
          
-      READ( numnat , namdates )     ! read namelist
+      READ( numnat , namcfcdate )     ! read namelist
 
       IF(lwp) THEN                  ! control print
Index: trunk/NEMO/TOP_SRC/LOBSTER/par_lobster.F90
===================================================================
--- trunk/NEMO/TOP_SRC/LOBSTER/par_lobster.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/LOBSTER/par_lobster.F90	(revision 1119)
@@ -48,6 +48,12 @@
 
    ! Starting/ending LOBSTER do-loop indices (N.B. no LOBSTER : jpl_lob < jpf_lob the do-loop are never done)
-   INTEGER, PUBLIC, PARAMETER ::   jp_lob0 =          1       !: First index of LOBSTER tracers
-   INTEGER, PUBLIC, PARAMETER ::   jp_lob1 = jp_lobster       !: Last  index of LOBSTER tracers
+   INTEGER, PUBLIC, PARAMETER ::   jp_lob0     =          1       !: First index of LOBSTER tracers
+   INTEGER, PUBLIC, PARAMETER ::   jp_lob1     = jp_lobster       !: Last  index of LOBSTER tracers
+   INTEGER, PUBLIC, PARAMETER ::   jp_lob0_2d  =          1       !: First index of LOBSTER 2D diag
+   INTEGER, PUBLIC, PARAMETER ::   jp_lob1_2d  = jp_lobster_2d    !: Last  index of LOBSTER 2D diag
+   INTEGER, PUBLIC, PARAMETER ::   jp_lob0_3d  =          1       !: First index of LOBSTER 3D diag
+   INTEGER, PUBLIC, PARAMETER ::   jp_lob1_3d  = jp_lobster_3d    !: Last  index of LOBSTER 3D diag
+   INTEGER, PUBLIC, PARAMETER ::   jp_lob0_trd =          1       !: First index of LOBSTER bio. diag
+   INTEGER, PUBLIC, PARAMETER ::   jp_lob1_trd = jp_lobster_trd   !: Last  index of LOBSTER bio. diag
 
    !!======================================================================
Index: trunk/NEMO/TOP_SRC/LOBSTER/trcbio.F90
===================================================================
--- trunk/NEMO/TOP_SRC/LOBSTER/trcbio.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/LOBSTER/trcbio.F90	(revision 1119)
@@ -16,5 +16,5 @@
    !!----------------------------------------------------------------------
    USE oce_trc         !
-   USE trp_trc         ! 
+   USE trc             ! 
    USE sms_lobster     ! 
    USE lbclnk          ! 
@@ -90,5 +90,5 @@
       fbod(:,:) = 0.e0
 #if defined key_trc_diaadd
-      DO ji = 1, jpdia2d
+      DO ji = 1, jp_lobster_2d
          trc2d(:,:,ji) = 0.e0
       END DO 
@@ -182,5 +182,5 @@
                zdeta =   zphydet + zzoodet - zdetzoo - zdetnh4 - zdetdom + zboddet
                zdoma =   zphydom + zzoodom + zdetdom - zdomnh4 - zdomaju
-   
+
 #if defined key_trc_diabio
                trbio(ji,jj,jk, 1) = zno3phy
@@ -239,4 +239,6 @@
       END DO
 
+      !
+
 !!gm do loop until jpkm1 only!
       !                                      ! -------------------------- !
@@ -364,8 +366,8 @@
 #if defined key_trc_diaadd
       ! Lateral boundary conditions on trc2d and trc3d
-      DO ji = 1, jpdia2d
+      DO ji = 1, jp_lobster_2d
           CALL lbc_lnk( trc2d(:,:,ji),'T', 1. )
       END DO 
-      DO ji = 1, jpdia3d
+      DO ji = 1, jp_lobster_3d
           CALL lbc_lnk( trc3d(:,:,1,ji),'T', 1. )
       END DO 
@@ -374,5 +376,5 @@
 #if defined key_trc_diabio
       ! Lateral boundary conditions on trcbio
-      DO ji = 1, jpdiabio
+      DO ji = 1, jp_lobster_trd
           CALL lbc_lnk( trbio(:,:,1,ji),'T', 1. )
       END DO 
Index: trunk/NEMO/TOP_SRC/LOBSTER/trcexp.F90
===================================================================
--- trunk/NEMO/TOP_SRC/LOBSTER/trcexp.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/LOBSTER/trcexp.F90	(revision 1119)
@@ -16,5 +16,4 @@
    !!----------------------------------------------------------------------
    USE oce_trc         !
-   USE trp_trc
    USE sms_lobster
    USE lbclnk
Index: trunk/NEMO/TOP_SRC/LOBSTER/trclsm_lobster.F90
===================================================================
--- trunk/NEMO/TOP_SRC/LOBSTER/trclsm_lobster.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/LOBSTER/trclsm_lobster.F90	(revision 1119)
@@ -40,17 +40,45 @@
       !!----------------------------------------------------------------------
       CHARACTER (len=32) :: clname
+      INTEGER            :: jn
       !!
-      NAMELIST/natbio/ apmin, azmin, anmin, admin,                       &
-         &   redf, reddom, slopet, toptp, psinut, akno3, aknh4, rcchl,   &
-         &   rgamma, toptgz, tmaxgz, rgz,                                &
-         &   rppz, taus, aks, filmax, rpnaz, rdnaz, eggzoo, tauzn,       &
-         &   tmmaxp, tmminp, tmmaxz, tmminz, anumin, afdmin, taudn,      &
-         &   vsed, tmumax, aki, tmaxr, tminr, taunn, taudomn, xhr,       &
-         &   sedlam, sedlostpoc,                                         &
-         &   fphylab, fzoolab, fdetlab, fdbod
-      NAMELIST/natopt/ xkg0, xkr0, xkgp, xkrp, xlg, xlr, rpig
+#if defined key_trc_diaadd
+      ! definition of additional diagnostic as a structure
+      TYPE DIAG
+         CHARACTER(len = 20)  :: snamedia   !: short name
+         CHARACTER(len = 80 ) :: lnamedia   !: long name
+         CHARACTER(len = 20 ) :: unitdia    !: unit
+      END TYPE DIAG
+
+      TYPE(DIAG) , DIMENSION(jp_lobster_2d) :: lobdia2d
+      TYPE(DIAG) , DIMENSION(jp_lobster_3d) :: lobdia3d
+#endif
 #if defined key_trc_diabio
-      INTEGER :: ji
-      NAMELIST/natdbi/ctrbio,ctrbil,ctrbiu,nwritebio
+      ! definition of additional diagnostic as a structure
+      TYPE DIABIO
+         CHARACTER(len = 20)  :: snamebio   !: short name
+         CHARACTER(len = 80 ) :: lnamebio   !: long name
+         CHARACTER(len = 20 ) :: unitbio    !: unit
+      END TYPE DIABIO
+
+      TYPE(DIABIO) , DIMENSION(jp_lobster_trd) :: lobdiabio
+#endif
+
+      NAMELIST/namlobphy/ apmin, tmumax, rgamma, fphylab, tmmaxp, tmminp, &
+         &                rcchl, aki, toptp 
+      NAMELIST/namlobnut/ anmin, akno3, aknh4, taunn, psinut
+      NAMELIST/namlobzoo/ azmin, eggzoo, rgz, rppz, taus, aks, rpnaz,     &
+         &                rdnaz, tauzn, fzoolab, fdbod, tmmaxz, tmminz
+      NAMELIST/namlobdet/ admin, taudn, fdetlab, vsed
+      NAMELIST/namlobdom/ taudomn
+      NAMELIST/namlobsed/ sedlam, sedlostpoc
+      NAMELIST/namlobrat/ redf, reddom, slopet, tmaxr, tminr, xhr,        &
+         &                filmax, toptgz, tmaxgz, anumin, afdmin
+
+      NAMELIST/namlobopt/ xkg0, xkr0, xkgp, xkrp, xlg, xlr, rpig
+#if defined key_trc_diaadd
+      NAMELIST/namlobdia/nwritedia, lobdia3d, lobdia2d     ! additional diagnostics
+#endif
+#if defined key_trc_diabio
+      NAMELIST/namlobdbi/nwritebio, lobdiabio
 #endif
       !!----------------------------------------------------------------------
@@ -63,109 +91,168 @@
       !                               ! ----------------------
       clname ='namelist_lobster'
-      CALL ctlopn( numnat, clname, 'OLD', 'FORMATTED', 'SEQUENTIAL',   &
-         &           1, numout, .FALSE., 1 )
-
-      !                               ! natbio : biological parameters
-      !                               ! ------------------------------
-      apmin = 0.                           ! default values
-      azmin = 0.
-      anmin = 0.
-      admin = 0.
-      redf  = 0.
-      reddom = 0.
-      slopet = 0.
-      toptp = 0.
+      CALL ctlopn( numnat, clname, 'OLD', 'FORMATTED', 'SEQUENTIAL', 1, numout, .FALSE., 1 )
+
+      ! namlobphy : parameters for phytoplankton
+      apmin   = 0. 
+      tmumax  = 0. 
+      rgamma  = 0. 
+      fphylab = 0.  
+      tmmaxp  = 0.
+      tmminp  = 0.
+      rcchl   = 0. 
+      aki     = 0. 
+      toptp   = 0. 
+
+      REWIND( numnat )
+      READ  ( numnat, namlobphy )
+
+      IF(lwp) THEN
+          WRITE(numout,*) ' Namelist namlobphy'
+          WRITE(numout,*) '    minimum phytoplancton concentration                  apmin     =', apmin
+          WRITE(numout,*) '    phyto max growth rate                                tmumax    =', 86400 * tmumax, ' d'
+          WRITE(numout,*) '    phytoplankton exudation fraction                     rgamma    =', rgamma
+          WRITE(numout,*) '    NH4 fraction of phytoplankton exsudation             fphylab   =', fphylab
+          WRITE(numout,*) '    maximal phyto mortality rate                         tmmaxp    =', 86400 * tmmaxp
+          WRITE(numout,*) '    minimal phyto mortality rate                         tmminp    =', 86400 * tmminp
+          WRITE(numout,*) '    carbone/chlorophyl ratio                             rcchl     =', rcchl
+          WRITE(numout,*) '    light hlaf saturation constant                       aki       =', aki
+          WRITE(numout,*) '    optimal photosynthesis temperature                   toptp     =', toptp
+          WRITE(numout,*) ' '
+      ENDIF
+
+      ! namlobnut : parameters for nutrients
+      anmin  = 0.
       psinut = 0.
       akno3  = 0.
-      aknh4 = 0.
-      rcchl = 0.
-      rgamma= 0.
-      toptgz= 0.
-      tmaxgz= 0.
-      rgz   = 0.
-      rppz  = 0.
-      taus  = 0.
-      aks   = 0.
-      filmax= 0.
-      rpnaz = 0.
-      rdnaz = 0.
-      eggzoo= 0.
-      tauzn = 0.
-      tmmaxp= 0.
-      tmminp= 0.
-      tmmaxz= 0.
-      tmminz= 0.
-      anumin= 0.
-      afdmin= 0.
-      taudn = 0.
-      vsed  = 0.
-      tmumax= 0.
-      aki   = 0.
-      tmaxr   = 1./(     4.*rday)*0.
-      tminr   = 1./(24.*30.*rday)*0.
-      xhr=0.
-      sedlam=0.
-      sedlostpoc=0.
-      taudomn = 0.
-      taunn = 0.
-      fphylab = 0.
-      fzoolab = 0.
-      fdetlab = 0.
-      fdbod = 0.
-
-      REWIND( numnat )                     ! read natbio
-      READ  ( numnat, natbio )
-
-      IF(lwp) THEN
-          WRITE(numout,*) ' Namelist natbio'
-          WRITE(numout,*) '    minimum phytoplancton concentration                  apmin     =', apmin
-          WRITE(numout,*) '    minimum zooplancton   concentration                  azmin     =', azmin
+      aknh4  = 0.
+      taunn  = 0.
+
+      REWIND( numnat )
+      READ  ( numnat, namlobnut )
+      IF(lwp) THEN
+          WRITE(numout,*) ' Namelist namlobnut'
           WRITE(numout,*) '    minimum nutrients     concentration                  anmin     =', anmin
-          WRITE(numout,*) '    minimum detritus      concentration                  admin     =', admin
-          WRITE(numout,*) '    redfield ratio  c:n                                  redf      =', redf
-          WRITE(numout,*) '    van t hoff coefficient                               slopet    =', slopet
-          WRITE(numout,*) '    optimal photosynthesis temperature                   toptp     =', toptp
-          WRITE(numout,*) '    inhibition of no3 uptake by nh4                      psinut    =', psinut
           WRITE(numout,*) '    half-saturation nutrient for no3 uptake              akno3     =', akno3
           WRITE(numout,*) '    half-saturation nutrient for nh4 uptake              aknh4     =', aknh4
-          WRITE(numout,*) '    carbone/chlorophyl ratio                             rcchl     =', rcchl
-          WRITE(numout,*) '    phytoplankton exudation fraction                     rgamma    =', rgamma
-          WRITE(numout,*) '    optimal temperature for zoo growth                   toptgz    =', toptgz
-          WRITE(numout,*) '    maximal temperature for zoo growth                   tmaxgz    =', tmaxgz
+          WRITE(numout,*) '    nitrification rate                                   taunn     =', taunn
+          WRITE(numout,*) '    inhibition of no3 uptake by nh4                      psinut    =', psinut
+          WRITE(numout,*) ' '
+      ENDIF
+
+      ! namlobzoo : parameters for zooplankton
+      azmin   = 0.
+      rgz     = 0.
+      rppz    = 0.
+      taus    = 0.
+      aks     = 0.
+      rpnaz   = 0.
+      rdnaz   = 0.
+      eggzoo  = 0.
+      tauzn   = 0.
+      tmmaxz  = 0.
+      tmminz  = 0.
+      fzoolab = 0.
+      fdbod   = 0.
+
+      REWIND( numnat )
+      READ  ( numnat, namlobzoo )
+
+      IF(lwp) THEN
+          WRITE(numout,*) ' Namelist namlobzoo'
+          WRITE(numout,*) '    minimum zooplancton   concentration                  azmin     =', azmin
+          WRITE(numout,*) '    minimum  for zoo concentration                       eggzoo    =', eggzoo
           WRITE(numout,*) '    widtht of zoo temperature FUNCTION                   rgz       =', rgz
           WRITE(numout,*) '    zoo preference for phyto                             rppz      =', rppz
           WRITE(numout,*) '    maximal zoo grazing rate                             taus      =', 86400 * taus, ' d'
           WRITE(numout,*) '    half saturation constant for zoo food                aks       =', aks
-          WRITE(numout,*) '    maximal mass clearance rate for zoo                  filmax    =', filmax
           WRITE(numout,*) '    non-assimilated phyto by zoo                         rpnaz     =', rpnaz
           WRITE(numout,*) '    non-assimilated detritus by zoo                      rdnaz     =', rdnaz
-          WRITE(numout,*) '    minimum  for zoo concentration                       eggzoo    =', eggzoo
           WRITE(numout,*) '    zoo specific excretion rate                          tauzn     =', 86400 * tauzn
-          WRITE(numout,*) '    maximal phyto mortality rate                         tmmaxp    =', 86400 * tmmaxp
-          WRITE(numout,*) '    minimal phyto mortality rate                         tmminp    =', 86400 * tmminp
           WRITE(numout,*) '    maximal zoo mortality rate                           tmmaxz    =', 86400 * tmmaxz
           WRITE(numout,*) '    minimal zoo mortality rate                           tmminz    =', 86400 * tmminz
+          WRITE(numout,*) '    NH4 fraction of zooplankton excretion                fzoolab   =', fzoolab
+          WRITE(numout,*) '    Zooplankton mortality fraction that goes to detritus fdbod     =', fdbod
+          WRITE(numout,*) ' '
+      ENDIF
+
+      ! namlobdet : parameters for detritus
+      admin   = 0.
+      taudn   = 0.
+      vsed    = 0.
+      fdetlab = 0.
+
+      REWIND( numnat )
+      READ  ( numnat, namlobdet )
+
+      IF(lwp) THEN
+          WRITE(numout,*) ' Namelist namlobdet'
+          WRITE(numout,*) '    minimum detritus      concentration                  admin     =', admin
+          WRITE(numout,*) '    detrital breakdown rate                              taudn     =', 86400 * taudn , ' d'
+          WRITE(numout,*) '    detritus sedimentation speed                         vsed      =', 86400 * vsed  , ' d'
+          WRITE(numout,*) '    NH4 fraction of detritus dissolution                 fdetlab   =', fdetlab
+          WRITE(numout,*) ' '
+      ENDIF
+
+      ! namlobdom : parameters for DOM
+      taudomn = 0.
+
+      REWIND( numnat ) 
+      READ  ( numnat, namlobdom )
+
+      IF(lwp) THEN
+          WRITE(numout,*) ' Namelist namlobdom'
+          WRITE(numout,*) '    dom remineralisation rate                            taudomn   =', taudomn
+          WRITE(numout,*) ' '
+      ENDIF
+
+      ! namlobsed : parameters from aphotic layers to sediment
+      sedlam     = 0.
+      sedlostpoc = 0.
+
+      REWIND( numnat )
+      READ  ( numnat, namlobsed )
+
+      IF(lwp) THEN
+          WRITE(numout,*) ' Namelist namlobsed'
+          WRITE(numout,*) '    time coeff of POC in sediments                       sedlam    =', sedlam
+          WRITE(numout,*) '    Sediment geol loss for POC                           sedlostpoc=', sedlostpoc
+          WRITE(numout,*) ' '
+      ENDIF
+
+      ! namlobrat : general coefficient
+      redf   = 0.
+      reddom = 0.
+      slopet = 0.
+      tmaxr  = 1./(     4.*rday)*0.
+      tminr  = 1./(24.*30.*rday)*0.
+      xhr    = 0.
+      filmax = 0.
+      toptgz = 0.
+      tmaxgz = 0.
+      anumin = 0.
+      afdmin = 0.
+
+      REWIND( numnat )
+      READ  ( numnat, namlobrat )
+
+      IF(lwp) THEN
+          WRITE(numout,*) ' Namelist namlobrat'
+          WRITE(numout,*) '    redfield ratio  c:n for phyto                        redf      =', redf 
+          WRITE(numout,*) '    redfield ratio  c:n for DOM                          reddom    =', reddom 
+          WRITE(numout,*) '    van t hoff coefficient                               slopet    =', slopet
+          WRITE(numout,*) '    maximum damping for d z or p                         tmaxr     =', tmaxr
+          WRITE(numout,*) '    damping-remineralisation rate                        tminr     =', tminr
+          WRITE(numout,*) '    coeff for martin''s remineralistion                  xhr       =', xhr
+          WRITE(numout,*) '    maximal mass clearance rate for zoo                  filmax    =', filmax
+          WRITE(numout,*) '    optimal temperature for zoo growth                   toptgz    =', toptgz
+          WRITE(numout,*) '    maximal temperature for zoo growth                   tmaxgz    =', tmaxgz
           WRITE(numout,*) '    nutrient threshold for phyto mort                    anumin    =', anumin
           WRITE(numout,*) '    food threshold for zoo mort                          afdmin    =', afdmin
-          WRITE(numout,*) '    detrital breakdown rate                              taudn     =', 86400 * taudn , ' d'
-          WRITE(numout,*) '    detritus sedimentation speed                         vsed      =', 86400 * vsed  , ' d'
-          WRITE(numout,*) '    phyto max growth rate                                tmumax    =', 86400 * tmumax, ' d'
-          WRITE(numout,*) '    light hlaf saturation constant                       aki       =', aki
-          WRITE(numout,*) '    maximum damping for d z or p                         tmaxr     =', tmaxr
-          WRITE(numout,*) '    damping-remineralisation rate                        tminr     =', tminr
-          WRITE(numout,*) '    nitrification rate                                   taunn     =', taunn
-          WRITE(numout,*) '    dom remineralisation rate                            taudomn   =', taudomn
-          WRITE(numout,*) '    coeff for martin''s remineralistion                  xhr       =', xhr
-          WRITE(numout,*) '    time coeff of POC in sediments                       sedlam    =', sedlam
-          WRITE(numout,*) '    Sediment geol loss for POC                           sedlostpoc=', sedlostpoc
-          WRITE(numout,*) '    NH4 fraction of phytoplankton exsudation             fphylab   =', fphylab
-          WRITE(numout,*) '    NH4 fraction of zooplankton excretion                fzoolab   =', fzoolab
-          WRITE(numout,*) '    NH4 fraction of detritus dissolution                 fdetlab   =', fdetlab
-          WRITE(numout,*) '    Zooplankton mortality fraction that goes to detritus fdbod     =', fdbod
-      ENDIF
-
-      !                               ! natopt : optical parameters
-      !                               ! ---------------------------
-      xkg0  = 0.                           ! default values
+          WRITE(numout,*) ' '
+      ENDIF
+
+
+      ! namlobopt : optical parameters
+      xkg0  = 0. 
       xkr0  = 0.
       xkgp  = 0.
@@ -175,10 +262,10 @@
       rpig  = 0.
 
-      REWIND( numnat )                     ! read natopt
-      READ  ( numnat, natopt )       
-
-      IF(lwp) THEN                         ! control print
+      REWIND( numnat )
+      READ  ( numnat, namlobopt )
+
+      IF(lwp) THEN                         
          WRITE(numout,*)
-         WRITE(numout,*) ' Namelist natopt'
+         WRITE(numout,*) ' Namelist namlobopt'
          WRITE(numout,*) '    green   water absorption coeff                       xkg0  = ', xkg0
          WRITE(numout,*) '    red water absorption coeff                           xkr0  = ', xkr0
@@ -188,29 +275,95 @@
          WRITE(numout,*) '    red   chl exposant                                   xlr   = ', xlr
          WRITE(numout,*) '    chla/chla+phea ratio                                 rpig  = ', rpig
-      ENDIF
+         WRITE(numout,*) ' '
+      ENDIF
+
+#if defined key_trc_diaadd
+
+      ! Namelist namlobdia
+      ! -------------------
+      nwritedia = 10                   ! default values
+
+      DO jn = jp_lob0_2d, jp_lob1_2d
+         WRITE(ctrc2d(jn),'("2D_",I1)') jn                      ! short name
+         WRITE(ctrc2l(jn),'("2D DIAGNOSTIC NUMBER ",I2)') jn    ! long name
+         ctrc2u(jn) = ' '                                       ! units
+      END DO
+      !                                 ! 3D output arrays
+      DO jn = jp_lob0_3d, jp_lob1_3d
+         WRITE(ctrc3d(jn),'("3D_",I1)') jn                      ! short name
+         WRITE(ctrc3l(jn),'("3D DIAGNOSTIC NUMBER ",I2)') jn    ! long name
+         ctrc3u(jn) = ' '                                       ! units
+      END DO
+
+      REWIND( numnat )               ! read natrtd
+      READ  ( numnat, namlobdia )
+
+      DO jn = jp_lob0_2d, jp_lob1_2d
+         ctrc2d(jn) = lobdia2d(jn)%snamedia
+         ctrc2l(jn) = lobdia2d(jn)%lnamedia
+         ctrc2u(jn) = lobdia2d(jn)%unitdia
+      END DO
+
+      DO jn = jp_lob0_3d, jp_lob1_3d
+         ctrc3d(jn) = lobdia3d(jn)%snamedia
+         ctrc3l(jn) = lobdia3d(jn)%lnamedia
+         ctrc3u(jn) = lobdia3d(jn)%unitdia
+      END DO
+
+      IF(lwp) THEN                   ! control print
+         WRITE(numout,*)
+         WRITE(numout,*) ' Namelist : natadd'
+         WRITE(numout,*) '    frequency of outputs for additional arrays nwritedia = ', nwritedia
+         DO jn = jp_lob0_3d, jp_lob1_3d
+            WRITE(numout,*) '   3d output field No : ',jn
+            WRITE(numout,*) '   short name         : ', TRIM(ctrc3d(jn))
+            WRITE(numout,*) '   long name          : ', TRIM(ctrc3l(jn))
+            WRITE(numout,*) '   unit               : ', TRIM(ctrc3u(jn))
+            WRITE(numout,*) ' '
+         END DO
+
+         DO jn = jp_lob0_2d, jp_lob1_2d
+            WRITE(numout,*) '   2d output field No : ',jn
+            WRITE(numout,*) '   short name         : ', TRIM(ctrc2d(jn))
+            WRITE(numout,*) '   long name          : ', TRIM(ctrc2l(jn))
+            WRITE(numout,*) '   unit               : ', TRIM(ctrc2u(jn))
+            WRITE(numout,*) ' '
+         END DO
+      ENDIF
+#endif
 
 #if defined key_trc_diabio
 
-      !                               ! natdbi : bio diagnostics
-      !                               ! ------------------------
+      ! namlobdbi : bio diagnostics
       nwritebio = 10                     ! default values
-      DO ji = 1, jpdiabio
-         IF(     ji <  10 ) THEN   ;   WRITE (ctrbio(ji),'("BIO_",I1)') ji      ! short name
-         ELSEIF (ji < 100 ) THEN   ;   WRITE (ctrbio(ji),'("BIO_",I2)') ji   
-         ELSE                      ;   WRITE (ctrbio(ji),'("BIO_",I3)') ji
+
+      DO jn = jp_lob0_trd, jp_lob1_trd
+         IF(     jn <  10 ) THEN   ;   WRITE (ctrbio(jn),'("BIO_",I1)') jn      ! short name
+         ELSEIF (jn < 100 ) THEN   ;   WRITE (ctrbio(jn),'("BIO_",I2)') jn   
+         ELSE                      ;   WRITE (ctrbio(jn),'("BIO_",I3)') jn
          ENDIF
-         WRITE(ctrbil(ji),'("BIOLOGICAL TREND NUMBER ",I2)') ji                 ! long name
-         ctrbiu(ji) = 'mmoleN/m3/s '                                            ! units
-      END DO
-
-      REWIND( numnat )                     ! read natdbi
-      READ  ( numnat, natdbi )  
-
-      IF(lwp) THEN
+         WRITE(ctrbil(jn),'("BIOLOGICAL TREND NUMBER ",I2)') jn                 ! long name
+         ctrbiu(jn) = 'mmoleN/m3/s '                                            ! units
+      END DO
+
+      REWIND( numnat )
+      READ  ( numnat, namlobdbi ) 
+ 
+      DO jn = jp_lob0_trd, jp_lob1_trd
+         ctrbio(jn) = lobdiabio(jn)%snamebio
+         ctrbil(jn) = lobdiabio(jn)%lnamebio
+         ctrbiu(jn) = lobdiabio(jn)%unitbio
+      END DO
+
+      IF(lwp) THEN                   ! control print
          WRITE(numout,*)
-         WRITE(numout,*) ' Namelist natdbi'
-         WRITE(numout,*) '    frequency of outputs for biological outputs  nwritebio = ', nwritebio
-         DO ji = 1, jpdiabio
-            WRITE(numout,*) '     name of biological trend No :',ji,' : ',ctrbio(ji), ctrbil(ji), ' in ', ctrbiu(ji)
+         WRITE(numout,*) ' Namelist : namlobdbi'
+         WRITE(numout,*) '    frequency of outputs for biological trends nwritebio = ', nwritebio
+         DO jn = jp_lob0_trd, jp_lob1_trd
+            WRITE(numout,*) '   biological trend No : ',jn
+            WRITE(numout,*) '   short name         : ', TRIM(ctrbio(jn))
+            WRITE(numout,*) '   long name          : ', TRIM(ctrbil(jn))
+            WRITE(numout,*) '   unit               : ', TRIM(ctrbiu(jn))
+            WRITE(numout,*) ' '
          END DO
       END IF
Index: trunk/NEMO/TOP_SRC/LOBSTER/trcopt.F90
===================================================================
--- trunk/NEMO/TOP_SRC/LOBSTER/trcopt.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/LOBSTER/trcopt.F90	(revision 1119)
@@ -17,5 +17,5 @@
    !!----------------------------------------------------------------------
    USE oce_trc         !
-   USE trp_trc
+   USE trc
    USE sms_lobster
    USE prtctl_trc      ! Print control for debbuging
@@ -136,5 +136,5 @@
          WRITE(charout, FMT="('opt')")
          CALL prt_ctl_trc_info(charout)
-         CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm )
+         CALL prt_ctl_trc( tab4d=trn, mask=tmask, clinfo=ctrcnm )
       ENDIF
 
Index: trunk/NEMO/TOP_SRC/LOBSTER/trcsed.F90
===================================================================
--- trunk/NEMO/TOP_SRC/LOBSTER/trcsed.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/LOBSTER/trcsed.F90	(revision 1119)
@@ -15,5 +15,5 @@
    !!----------------------------------------------------------------------
    USE oce_trc         !
-   USE trp_trc
+   USE trc
    USE sms_lobster
    USE lbclnk
Index: trunk/NEMO/TOP_SRC/PISCES/p4zbio.F90
===================================================================
--- trunk/NEMO/TOP_SRC/PISCES/p4zbio.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/PISCES/p4zbio.F90	(revision 1119)
@@ -15,5 +15,5 @@
    !!----------------------------------------------------------------------
    USE oce_trc         !
-   USE trp_trc         ! 
+   USE trc         ! 
    USE sms_pisces      ! 
    USE p4zsink         ! 
@@ -131,6 +131,5 @@
 
 # if defined key_trc_dia3d && defined key_kriest
-!!gm potential bug  hard coded index on trc3d
-      trc3d(:,:,:,11) = tra(:,:,:,jpcal) * xnegtr(:,:,:) * 1.e3 * rfact2r
+      trc3d(:,:,:,jp_pcs0_3d + 10) = tra(:,:,:,jpcal) * xnegtr(:,:,:) * 1.e3 * rfact2r
 # endif
       !
Index: trunk/NEMO/TOP_SRC/PISCES/p4zche.F90
===================================================================
--- trunk/NEMO/TOP_SRC/PISCES/p4zche.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/PISCES/p4zche.F90	(revision 1119)
@@ -18,5 +18,5 @@
    !!----------------------------------------------------------------------
    USE oce_trc         !
-   USE trp_trc         !
+   USE trc         !
    USE sms_pisces      ! 
 
Index: trunk/NEMO/TOP_SRC/PISCES/p4zflx.F90
===================================================================
--- trunk/NEMO/TOP_SRC/PISCES/p4zflx.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/PISCES/p4zflx.F90	(revision 1119)
@@ -19,5 +19,5 @@
    USE trc
    USE oce_trc         !
-   USE trp_trc
+   USE trc
    USE sms_pisces
    USE prtctl_trc
@@ -167,8 +167,8 @@
 # if defined key_trc_diaadd
             ! Save diagnostics
-            trc2d(ji,jj,1) = ( zfld - zflu ) * 1000.
-            trc2d(ji,jj,2) = ( zfld16 - zflu16 ) * 1000.
-            trc2d(ji,jj,3) = zkgco2(ji,jj)
-            trc2d(ji,jj,4) = atcco2 - zh2co3(ji,jj) / ( chemc(ji,jj,1) + rtrn )
+            trc2d(ji,jj,jp_pcs0_2d    ) = ( zfld - zflu ) * 1000.
+            trc2d(ji,jj,jp_pcs0_2d + 1) = ( zfld16 - zflu16 ) * 1000.
+            trc2d(ji,jj,jp_pcs0_2d + 2) = zkgco2(ji,jj)
+            trc2d(ji,jj,jp_pcs0_2d + 3) = atcco2 - zh2co3(ji,jj) / ( chemc(ji,jj,1) + rtrn )
 # endif
          END DO
@@ -209,18 +209,18 @@
       !! ** Purpose :   Initialization of atmospheric conditions
       !!
-      !! ** Method  :   Read the natext namelist and check the parameters
+      !! ** Method  :   Read the nampisext namelist and check the parameters
       !!      called at the first timestep (nittrc000)
-      !! ** input   :   Namelist natext
+      !! ** input   :   Namelist nampisext
       !!
       !!----------------------------------------------------------------------
 
-      NAMELIST/natext/ atcco2
+      NAMELIST/nampisext/ atcco2
 
       REWIND( numnat )                     ! read numnat
-      READ  ( numnat, natext )
+      READ  ( numnat, nampisext )
 
       IF(lwp) THEN                         ! control print
          WRITE(numout,*) ' '
-         WRITE(numout,*) ' Namelist parameters for air-sea exchange, natext'
+         WRITE(numout,*) ' Namelist parameters for air-sea exchange, nampisext'
          WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
          WRITE(numout,*) '    Atmospheric pCO2      atcco2      =', atcco2
Index: trunk/NEMO/TOP_SRC/PISCES/p4zint.F90
===================================================================
--- trunk/NEMO/TOP_SRC/PISCES/p4zint.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/PISCES/p4zint.F90	(revision 1119)
@@ -14,5 +14,5 @@
    !!----------------------------------------------------------------------
    USE oce_trc         !
-   USE trp_trc
+   USE trc
    USE sms_pisces
 
Index: trunk/NEMO/TOP_SRC/PISCES/p4zlim.F90
===================================================================
--- trunk/NEMO/TOP_SRC/PISCES/p4zlim.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/PISCES/p4zlim.F90	(revision 1119)
@@ -16,5 +16,5 @@
    USE trc
    USE oce_trc         !
-   USE trp_trc         ! 
+   USE trc         ! 
    USE sms_pisces      ! 
 
@@ -180,20 +180,20 @@
       !! ** Purpose :   Initialization of nutrient limitation parameters
       !!
-      !! ** Method  :   Read the natlim namelist and check the parameters
+      !! ** Method  :   Read the nampislim namelist and check the parameters
       !!      called at the first timestep (nittrc000)
       !!
-      !! ** input   :   Namelist natlim
+      !! ** input   :   Namelist nampislim
       !!
       !!----------------------------------------------------------------------
 
-      NAMELIST/natlim/ conc0, conc1, conc2, conc2m, conc3, conc3m,   &
+      NAMELIST/nampislim/ conc0, conc1, conc2, conc2m, conc3, conc3m,   &
          &             concnnh4, concdnh4, xksi1, xksi2, xkdoc, caco3r
 
       REWIND( numnat )                     ! read numnat
-      READ  ( numnat, natlim )
+      READ  ( numnat, nampislim )
 
       IF(lwp) THEN                         ! control print
          WRITE(numout,*) ' '
-         WRITE(numout,*) ' Namelist parameters for nutrient limitations, natlim'
+         WRITE(numout,*) ' Namelist parameters for nutrient limitations, nampislim'
          WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
          WRITE(numout,*) '    mean rainratio                            caco3r    =', caco3r
Index: trunk/NEMO/TOP_SRC/PISCES/p4zlys.F90
===================================================================
--- trunk/NEMO/TOP_SRC/PISCES/p4zlys.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/PISCES/p4zlys.F90	(revision 1119)
@@ -19,5 +19,5 @@
    USE trc
    USE oce_trc         !
-   USE trp_trc
+   USE trc
    USE sms_pisces
    USE prtctl_trc
@@ -151,7 +151,7 @@
 
 # if defined key_trc_dia3d
-         trc3d(:,:,:,1) = hi(:,:,:)
-         trc3d(:,:,:,2) = zco3(:,:,:)
-         trc3d(:,:,:,3) = aksp(:,:,:) / calcon
+         trc3d(:,:,:,jp_pcs0_3d    ) = hi(:,:,:)
+         trc3d(:,:,:,jp_pcs0_3d + 1) = zco3(:,:,:)
+         trc3d(:,:,:,jp_pcs0_3d + 2) = aksp(:,:,:) / calcon
 # endif
       !
@@ -171,19 +171,19 @@
       !! ** Purpose :   Initialization of CaCO3 dissolution parameters
       !!
-      !! ** Method  :   Read the natcal namelist and check the parameters
+      !! ** Method  :   Read the nampiscal namelist and check the parameters
       !!      called at the first timestep (nittrc000)
       !!
-      !! ** input   :   Namelist natcal
+      !! ** input   :   Namelist nampiscal
       !!
       !!----------------------------------------------------------------------
 
-      NAMELIST/natcal/ kdca, nca
+      NAMELIST/nampiscal/ kdca, nca
 
       REWIND( numnat )                     ! read numnat
-      READ  ( numnat, natcal )
+      READ  ( numnat, nampiscal )
 
       IF(lwp) THEN                         ! control print
          WRITE(numout,*) ' '
-         WRITE(numout,*) ' Namelist parameters for CaCO3 dissolution, natcal'
+         WRITE(numout,*) ' Namelist parameters for CaCO3 dissolution, nampiscal'
          WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
          WRITE(numout,*) '    diss. rate constant calcite (per month)   kdca      =', kdca
Index: trunk/NEMO/TOP_SRC/PISCES/p4zmeso.F90
===================================================================
--- trunk/NEMO/TOP_SRC/PISCES/p4zmeso.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/PISCES/p4zmeso.F90	(revision 1119)
@@ -16,5 +16,5 @@
    USE trc
    USE oce_trc         !
-   USE trp_trc         ! 
+   USE trc         ! 
    USE sms_pisces      ! 
    USE prtctl_trc
@@ -299,21 +299,21 @@
       !! ** Purpose :   Initialization of mesozooplankton parameters
       !!
-      !! ** Method  :   Read the natmes namelist and check the parameters
+      !! ** Method  :   Read the nampismes namelist and check the parameters
       !!      called at the first timestep (nittrc000)
       !!
-      !! ** input   :   Namelist natmes
+      !! ** input   :   Namelist nampismes
       !!
       !!----------------------------------------------------------------------
 
-      NAMELIST/natmes/ grazrat2,resrat2,mzrat2,xprefc, xprefp, &
+      NAMELIST/nampismes/ grazrat2,resrat2,mzrat2,xprefc, xprefp, &
          &             xprefz, xprefpoc, xkgraz2, epsher2, sigma2, unass2, grazflux
 
       REWIND( numnat )                     ! read numnat
-      READ  ( numnat, natmes )
+      READ  ( numnat, nampismes )
 
 
       IF(lwp) THEN                         ! control print
          WRITE(numout,*) ' ' 
-         WRITE(numout,*) ' Namelist parameters for mesozooplankton, natmes'
+         WRITE(numout,*) ' Namelist parameters for mesozooplankton, nampismes'
          WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
          WRITE(numout,*) '    zoo preference for phyto                  xprefc    =', xprefc
Index: trunk/NEMO/TOP_SRC/PISCES/p4zmicro.F90
===================================================================
--- trunk/NEMO/TOP_SRC/PISCES/p4zmicro.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/PISCES/p4zmicro.F90	(revision 1119)
@@ -16,5 +16,5 @@
    USE trc
    USE oce_trc         !
-   USE trp_trc         ! 
+   USE trc         ! 
    USE sms_pisces      ! 
    USE prtctl_trc
@@ -229,20 +229,20 @@
       !! ** Purpose :   Initialization of microzooplankton parameters
       !!
-      !! ** Method  :   Read the natzoo namelist and check the parameters
+      !! ** Method  :   Read the nampiszoo namelist and check the parameters
       !!      called at the first timestep (nittrc000)
       !!
-      !! ** input   :   Namelist natzoo
+      !! ** input   :   Namelist nampiszoo
       !!
       !!----------------------------------------------------------------------
 
-      NAMELIST/natzoo/ grazrat,resrat,mzrat,xpref2c, xpref2p, &
+      NAMELIST/nampiszoo/ grazrat,resrat,mzrat,xpref2c, xpref2p, &
          &             xpref2d, xkgraz, epsher, sigma1, unass
 
       REWIND( numnat )                     ! read numnat
-      READ  ( numnat, natzoo )
+      READ  ( numnat, nampiszoo )
 
       IF(lwp) THEN                         ! control print
          WRITE(numout,*) ' '
-         WRITE(numout,*) ' Namelist parameters for microzooplankton, natzoo'
+         WRITE(numout,*) ' Namelist parameters for microzooplankton, nampiszoo'
          WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
          WRITE(numout,*) '    zoo preference for POC                    xpref2c    =', xpref2c
Index: trunk/NEMO/TOP_SRC/PISCES/p4zmort.F90
===================================================================
--- trunk/NEMO/TOP_SRC/PISCES/p4zmort.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/PISCES/p4zmort.F90	(revision 1119)
@@ -16,5 +16,5 @@
    USE trc
    USE oce_trc         !
-   USE trp_trc         ! 
+   USE trc         ! 
    USE sms_pisces      ! 
    USE p4zsink
@@ -241,19 +241,19 @@
       !! ** Purpose :   Initialization of phytoplankton parameters
       !!
-      !! ** Method  :   Read the natmort namelist and check the parameters
+      !! ** Method  :   Read the nampismort namelist and check the parameters
       !!      called at the first timestep (nittrc000)
       !!
-      !! ** input   :   Namelist natmort
+      !! ** input   :   Namelist nampismort
       !!
       !!----------------------------------------------------------------------
 
-      NAMELIST/natmort/ wchl, wchld, mprat, mprat2, mpratm
+      NAMELIST/nampismort/ wchl, wchld, mprat, mprat2, mpratm
 
       REWIND( numnat )                     ! read numnat
-      READ  ( numnat, natmort )
+      READ  ( numnat, nampismort )
 
       IF(lwp) THEN                         ! control print
          WRITE(numout,*) ' '
-         WRITE(numout,*) ' Namelist parameters for phytoplankton mortality, natmort'
+         WRITE(numout,*) ' Namelist parameters for phytoplankton mortality, nampismort'
          WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
          WRITE(numout,*) '    quadratic mortality of phytoplankton      wchl      =', wchl
Index: trunk/NEMO/TOP_SRC/PISCES/p4zopt.F90
===================================================================
--- trunk/NEMO/TOP_SRC/PISCES/p4zopt.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/PISCES/p4zopt.F90	(revision 1119)
@@ -15,5 +15,5 @@
    USE trc
    USE oce_trc         !
-   USE trp_trc
+   USE trc
    USE sms_pisces
 
@@ -255,5 +255,5 @@
 
 # if defined key_trc_diaadd
-      trc2d(:,:,11) = heup(:,:)
+      trc2d(:,:,jp_pcs0_2d + 10) = heup(:,:)
 # endif
       !
Index: trunk/NEMO/TOP_SRC/PISCES/p4zprod.F90
===================================================================
--- trunk/NEMO/TOP_SRC/PISCES/p4zprod.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/PISCES/p4zprod.F90	(revision 1119)
@@ -15,5 +15,4 @@
    USE trc
    USE oce_trc         !
-   USE trp_trc         ! 
    USE sms_pisces      ! 
    USE prtctl_trc
@@ -376,13 +375,13 @@
 !   Supplementary diagnostics
 !   -------------------------
-      trc3d(:,:,:,4)  = etot(:,:,:)
-      trc3d(:,:,:,5)  = zprorca(:,:,:)  * zrfact2
-      trc3d(:,:,:,6)  = zprorcad(:,:,:) * zrfact2
-      trc3d(:,:,:,7)  = zpronew(:,:,:)  * zrfact2
-      trc3d(:,:,:,8)  = zpronewd(:,:,:) * zrfact2
-      trc3d(:,:,:,9)  = zprorcad(:,:,:) * zysopt(:,:,:) * zrfact2
-      trc3d(:,:,:,10) = zprofed(:,:,:) * zrfact2
+      trc3d(:,:,:,jp_pcs0_3d + 3)  = etot(:,:,:)
+      trc3d(:,:,:,jp_pcs0_3d + 4)  = zprorca(:,:,:)  * zrfact2
+      trc3d(:,:,:,jp_pcs0_3d + 5)  = zprorcad(:,:,:) * zrfact2
+      trc3d(:,:,:,jp_pcs0_3d + 6)  = zpronew(:,:,:)  * zrfact2
+      trc3d(:,:,:,jp_pcs0_3d + 7)  = zpronewd(:,:,:) * zrfact2
+      trc3d(:,:,:,jp_pcs0_3d + 8)  = zprorcad(:,:,:) * zysopt(:,:,:) * zrfact2
+      trc3d(:,:,:,jp_pcs0_3d + 9) = zprofed(:,:,:) * zrfact2
 #if ! defined key_kriest
-      trc3d(:,:,:,11) = zprofen(:,:,:) * zrfact2
+      trc3d(:,:,:,jp_pcs0_3d + 10) = zprofen(:,:,:) * zrfact2
 #endif
 #endif
@@ -403,20 +402,20 @@
       !! ** Purpose :   Initialization of phytoplankton production parameters
       !!
-      !! ** Method  :   Read the natprod namelist and check the parameters
+      !! ** Method  :   Read the nampisprod namelist and check the parameters
       !!      called at the first timestep (nittrc000)
       !!
-      !! ** input   :   Namelist natprod
+      !! ** input   :   Namelist nampisprod
       !!
       !!----------------------------------------------------------------------
 
-      NAMELIST/natprod/ pislope, pislope2, excret, excret2, chlcnm, chlcdm,   &
+      NAMELIST/nampisprod/ pislope, pislope2, excret, excret2, chlcnm, chlcdm,   &
          &              fecnm, fecdm, grosip
 
       REWIND( numnat )                     ! read numnat
-      READ  ( numnat, natprod )
+      READ  ( numnat, nampisprod )
 
       IF(lwp) THEN                         ! control print
          WRITE(numout,*) ' '
-         WRITE(numout,*) ' Namelist parameters for phytoplankton growth, natprod'
+         WRITE(numout,*) ' Namelist parameters for phytoplankton growth, nampisprod'
          WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
          WRITE(numout,*) '    mean Si/C ratio                           grosip    =', grosip
Index: trunk/NEMO/TOP_SRC/PISCES/p4zrem.F90
===================================================================
--- trunk/NEMO/TOP_SRC/PISCES/p4zrem.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/PISCES/p4zrem.F90	(revision 1119)
@@ -16,5 +16,4 @@
    USE trc
    USE oce_trc         !
-   USE trp_trc         ! 
    USE sms_pisces      ! 
    USE prtctl_trc
@@ -409,19 +408,19 @@
       !! ** Purpose :   Initialization of remineralization parameters
       !!
-      !! ** Method  :   Read the natrem namelist and check the parameters
+      !! ** Method  :   Read the nampisrem namelist and check the parameters
       !!      called at the first timestep (nittrc000)
       !!
-      !! ** input   :   Namelist natrem
+      !! ** input   :   Namelist nampisrem
       !!
       !!----------------------------------------------------------------------
 
-      NAMELIST/natrem/ xremik, xremip, nitrif, xsirem, xlam1, oxymin
+      NAMELIST/nampisrem/ xremik, xremip, nitrif, xsirem, xlam1, oxymin
 
       REWIND( numnat )                     ! read numnat
-      READ  ( numnat, natrem )
+      READ  ( numnat, nampisrem )
 
       IF(lwp) THEN                         ! control print
          WRITE(numout,*) ' '
-         WRITE(numout,*) ' Namelist parameters for remineralization, natrem'
+         WRITE(numout,*) ' Namelist parameters for remineralization, nampisrem'
          WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
          WRITE(numout,*) '    remineralisation rate of POC              xremip    =', xremip
Index: trunk/NEMO/TOP_SRC/PISCES/p4zsed.F90
===================================================================
--- trunk/NEMO/TOP_SRC/PISCES/p4zsed.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/PISCES/p4zsed.F90	(revision 1119)
@@ -17,5 +17,4 @@
    USE trc
    USE oce_trc         !
-   USE trp_trc
    USE sms_pisces
    USE lib_mpp
@@ -316,6 +315,6 @@
       DO jj = 1,jpj
          DO ji = 1,jpi
-            trc2d(ji,jj,13) = znitrpot(ji,jj,1) * 1.e-7 * fse3t(ji,jj,1) * 1.e+3 / rfact2
-            trc2d(ji,jj,12) = zirondep(ji,jj,1) * 1.e+3 * rfact2r * fse3t(ji,jj,1)
+            trc2d(ji,jj,jp_pcs0_2d + 11) = zirondep(ji,jj,1) * 1.e+3 * rfact2r * fse3t(ji,jj,1)
+            trc2d(ji,jj,jp_pcs0_2d + 12) = znitrpot(ji,jj,1) * 1.e-7 * fse3t(ji,jj,1) * 1.e+3 / rfact2
          END DO
       END DO
@@ -454,13 +453,13 @@
       REAL(wp), DIMENSION(jpi,jpj,12)    ::   zdustmo
 
-      NAMELIST/natsms/ bdustfer, briver, bndepo, bsedinput, sedfeinput, dustsolub
+      NAMELIST/nampissed/ bdustfer, briver, bndepo, bsedinput, sedfeinput, dustsolub
 
 
       REWIND( numnat )                     ! read numnat
-      READ  ( numnat, natsms )
+      READ  ( numnat, nampissed )
 
       IF(lwp) THEN
          WRITE(numout,*) ' '
-         WRITE(numout,*) ' Namelist : natsms '
+         WRITE(numout,*) ' Namelist : nampissed '
          WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~ '
          WRITE(numout,*) '    Dust input from the atmosphere           bdustfer  = ', bdustfer
Index: trunk/NEMO/TOP_SRC/PISCES/p4zsink.F90
===================================================================
--- trunk/NEMO/TOP_SRC/PISCES/p4zsink.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/PISCES/p4zsink.F90	(revision 1119)
@@ -12,5 +12,4 @@
    USE trc
    USE oce_trc         !
-   USE trp_trc
    USE sms_pisces
    USE prtctl_trc
@@ -279,16 +278,16 @@
 #    if defined key_trc_dia3d
       zrfact2 = 1.e3 * rfact2r
-      trc2d(:,:, 5)   = sinking (:,:,iksed+1) * zrfact2
-      trc2d(:,:, 6)   = sinking2(:,:,iksed+1) * zrfact2
-      trc2d(:,:, 7)   = sinkfer (:,:,iksed+1) * zrfact2
-      trc2d(:,:, 9)   = sinksil (:,:,iksed+1) * zrfact2
-      trc2d(:,:,10)   = sinkcal (:,:,iksed+1) * zrfact2
-      trc3d(:,:,:,12) = sinking (:,:,:)       * zrfact2
-      trc3d(:,:,:,13) = sinking2(:,:,:)       * zrfact2
-      trc3d(:,:,:,14) = sinksil (:,:,:)       * zrfact2
-      trc3d(:,:,:,15) = sinkcal (:,:,:)       * zrfact2
-      trc3d(:,:,:,16) = znum3d  (:,:,:)
-      trc3d(:,:,:,17) = wsbio3  (:,:,:)
-      trc3d(:,:,:,18) = wsbio4  (:,:,:)
+      trc2d(:,:,  jp_pcs0_2d + 4)   = sinking (:,:,iksed+1) * zrfact2
+      trc2d(:,:,  jp_pcs0_2d + 5)   = sinking2(:,:,iksed+1) * zrfact2
+      trc2d(:,:,  jp_pcs0_2d + 6)   = sinkfer (:,:,iksed+1) * zrfact2
+      trc2d(:,:,  jp_pcs0_2d + 8)   = sinksil (:,:,iksed+1) * zrfact2
+      trc2d(:,:,  jp_pcs0_2d + 9)   = sinkcal (:,:,iksed+1) * zrfact2
+      trc3d(:,:,:,jp_pcs0_3d + 11) = sinking (:,:,:)       * zrfact2
+      trc3d(:,:,:,jp_pcs0_3d + 12) = sinking2(:,:,:)       * zrfact2
+      trc3d(:,:,:,jp_pcs0_3d + 13) = sinksil (:,:,:)       * zrfact2
+      trc3d(:,:,:,jp_pcs0_3d + 14) = sinkcal (:,:,:)       * zrfact2
+      trc3d(:,:,:,jp_pcs0_3d + 15) = znum3d  (:,:,:)
+      trc3d(:,:,:,jp_pcs0_3d + 16) = wsbio3  (:,:,:)
+      trc3d(:,:,:,jp_pcs0_3d + 17) = wsbio4  (:,:,:)
 #    endif
       !
@@ -308,8 +307,8 @@
       !!                Kriest parameterization only
       !!
-      !! ** Method  :   Read the natkriest namelist and check the parameters
+      !! ** Method  :   Read the nampiskrs namelist and check the parameters
       !!      called at the first timestep (nittrc000)
       !!
-      !! ** input   :   Namelist natkriest
+      !! ** input   :   Namelist nampiskrs
       !!
       !!----------------------------------------------------------------------
@@ -319,16 +318,14 @@
       REAL(wp) ::   zmin, zmax, zl, zr, xacc
 
-      NAMELIST/natkrsize/ xkr_sfact, xkr_stick ,  &
+      NAMELIST/nampiskrs/ xkr_sfact, xkr_stick ,  &
          &                xkr_nnano, xkr_ndiat, xkr_nmeso, xkr_naggr
 
       !!----------------------------------------------------------------------
-      !                               ! natkriest : kriest parameters
-      !                               ! -----------------------------
-      REWIND( numnat )                     ! read natkriest
-      READ  ( numnat, natkrsize )
+      REWIND( numnat )                     ! read nampiskrs
+      READ  ( numnat, nampiskrs )
 
       IF(lwp) THEN
          WRITE(numout,*)
-         WRITE(numout,*) ' Namelist : natkrsize'
+         WRITE(numout,*) ' Namelist : nampiskrs'
          WRITE(numout,*) '    Sinking factor                           xkr_sfact    = ', xkr_sfact
          WRITE(numout,*) '    Stickiness                               xkr_stick    = ', xkr_stick
@@ -594,12 +591,12 @@
       END DO
 
-# if defined key_trc_dia3d
+# if defined key_trc_diaadd
       zrfact2 = 1.e3 * rfact2r
-      trc2d(:,:, 5) = sinking (:,:,iksed+1) * zrfact2
-      trc2d(:,:, 6) = sinking2(:,:,iksed+1) * zrfact2
-      trc2d(:,:, 7) = sinkfer (:,:,iksed+1) * zrfact2
-      trc2d(:,:, 8) = sinkfer2(:,:,iksed+1) * zrfact2
-      trc2d(:,:, 9) = sinksil (:,:,iksed+1) * zrfact2
-      trc2d(:,:,10) = sinkcal (:,:,iksed+1) * zrfact2
+      trc2d(:,:, jp_pcs0_2d + 4) = sinking (:,:,iksed+1) * zrfact2
+      trc2d(:,:, jp_pcs0_2d + 5) = sinking2(:,:,iksed+1) * zrfact2
+      trc2d(:,:, jp_pcs0_2d + 6) = sinkfer (:,:,iksed+1) * zrfact2
+      trc2d(:,:, jp_pcs0_2d + 7) = sinkfer2(:,:,iksed+1) * zrfact2
+      trc2d(:,:, jp_pcs0_2d + 8) = sinksil (:,:,iksed+1) * zrfact2
+      trc2d(:,:, jp_pcs0_2d + 9) = sinkcal (:,:,iksed+1) * zrfact2
 # endif
       !
Index: trunk/NEMO/TOP_SRC/PISCES/par_pisces.F90
===================================================================
--- trunk/NEMO/TOP_SRC/PISCES/par_pisces.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/PISCES/par_pisces.F90	(revision 1119)
@@ -10,10 +10,16 @@
    !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
-   USE par_lobster, ONLY : jp_lobster   !: number of tracers in LOBSTER
+   USE par_lobster, ONLY : jp_lobster      !: number of tracers in LOBSTER
+   USE par_lobster, ONLY : jp_lobster_2d   !: number of 2D diag in LOBSTER
+   USE par_lobster, ONLY : jp_lobster_3d   !: number of 3D diag in LOBSTER
+   USE par_lobster, ONLY : jp_lobster_trd  !: number of biological diag in LOBSTER
 
    IMPLICIT NONE
    PUBLIC
 
-   INTEGER, PUBLIC, PARAMETER ::   jp_l  = jp_lobster      !: cumulative number of already defined TRC
+   INTEGER, PUBLIC, PARAMETER ::   jp_l      = jp_lobster      !: cumulative number of already defined TRC
+   INTEGER, PUBLIC, PARAMETER ::   jp_l_2d   = jp_lobster_2d   !:
+   INTEGER, PUBLIC, PARAMETER ::   jp_l_3d   = jp_lobster_3d   !:
+   INTEGER, PUBLIC, PARAMETER ::   jp_l_trd  = jp_lobster_trd  !:
 
 #if defined key_pisces  &&  defined key_kriest
@@ -107,6 +113,13 @@
 
    ! Starting/ending PISCES do-loop indices (N.B. no PISCES : jpl_pcs < jpf_pcs the do-loop are never done)
-   INTEGER, PUBLIC, PARAMETER ::   jp_pcs0 = jp_l + 1           !: First index of CFC passive tracers
-   INTEGER, PUBLIC, PARAMETER ::   jp_pcs1 = jp_l + jp_pisces   !: Last  index of CFC passive tracers
+   INTEGER, PUBLIC, PARAMETER ::   jp_pcs0     = jp_l + 1                  !: First index of PISCES tracers
+   INTEGER, PUBLIC, PARAMETER ::   jp_pcs1     = jp_l + jp_pisces          !: Last  index of PISCES tracers
+   INTEGER, PUBLIC, PARAMETER ::   jp_pcs0_2d  = jp_l_2d + 1               !: First index of 2D diag
+   INTEGER, PUBLIC, PARAMETER ::   jp_pcs1_2d  = jp_l_2d + jp_pisces_2d    !: Last  index of 2D diag
+   INTEGER, PUBLIC, PARAMETER ::   jp_pcs0_3d  = jp_l_3d + 1               !: First index of 3D diag
+   INTEGER, PUBLIC, PARAMETER ::   jp_pcs1_3d  = jp_l_3d + jp_pisces_3d    !: Last  index of 3d diag
+   INTEGER, PUBLIC, PARAMETER ::   jp_pcs0_trd = jp_l_trd + 1              !: First index of bio diag
+   INTEGER, PUBLIC, PARAMETER ::   jp_pcs1_trd = jp_l_trd + jp_pisces_trd  !: Last  index of bio diag
+
 
    !!======================================================================
Index: trunk/NEMO/TOP_SRC/PISCES/trcini_pisces.F90
===================================================================
--- trunk/NEMO/TOP_SRC/PISCES/trcini_pisces.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/PISCES/trcini_pisces.F90	(revision 1119)
@@ -20,5 +20,4 @@
    USE trc
    USE oce_trc         ! ocean variables
-   USE trp_trc         !
    USE p4zche 
    USE lib_mpp
Index: trunk/NEMO/TOP_SRC/PISCES/trclsm_pisces.F90
===================================================================
--- trunk/NEMO/TOP_SRC/PISCES/trclsm_pisces.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/PISCES/trclsm_pisces.F90	(revision 1119)
@@ -45,11 +45,27 @@
       !!                       natkriest ("key_kriest")
       !!----------------------------------------------------------------------
-      CHARACTER (len=32) ::   clname
+      CHARACTER (len=32) ::  clname
+      INTEGER            ::  jn
       !!
-      NAMELIST/natbio/ part, nrdttrc, wsbio, xkmort, ferat3, wsbio2
+#if defined key_trc_diaadd
+      ! definition of additional diagnostic as a structure
+      TYPE DIAG
+         CHARACTER(len = 20)  :: snamedia   !: short name
+         CHARACTER(len = 80 ) :: lnamedia   !: long name
+         CHARACTER(len = 20 ) :: unitdia    !: unit
+      END TYPE DIAG
 
+      TYPE(DIAG) , DIMENSION(jp_pisces_2d) :: pisdia2d
+      TYPE(DIAG) , DIMENSION(jp_pisces_3d) :: pisdia3d
+#endif
+
+      NAMELIST/nampisbio/ part, nrdttrc, wsbio, xkmort, ferat3, wsbio2
 #if defined key_kriest
-      NAMELIST/natkrpar/xkr_eta, xkr_zeta, xkr_mass_min, xkr_mass_max
+      NAMELIST/nampiskrp/xkr_eta, xkr_zeta, xkr_mass_min, xkr_mass_max
 #endif
+#if defined key_trc_diaadd
+      NAMELIST/nampisdia/nwritedia, pisdia3d, pisdia2d     ! additional diagnostics
+#endif
+
       !!----------------------------------------------------------------------
 
@@ -62,14 +78,11 @@
       !                               ! ----------------------
       clname ='namelist_pisces'
-      CALL ctlopn( numnat, clname, 'OLD', 'FORMATTED', 'SEQUENTIAL',   &
-         &           1, numout, .FALSE., 1 )
+      CALL ctlopn( numnat, clname, 'OLD', 'FORMATTED', 'SEQUENTIAL', 1, numout, .FALSE., 1 )
 
-      !                               ! natbio : biological parameters
-      !                               ! ------------------------------
-      REWIND( numnat )                     ! read natbio
-      READ  ( numnat, natbio )
+      REWIND( numnat )                    
+      READ  ( numnat, nampisbio )
 
       IF(lwp) THEN                         ! control print
-         WRITE(numout,*) ' Namelist : natbio'
+         WRITE(numout,*) ' Namelist : nampisbio'
          WRITE(numout,*) '    part of calcite not dissolved in guts     part      =', part
          WRITE(numout,*) '    frequence pour la biologie                nrdttrc   =', nrdttrc
@@ -82,5 +95,5 @@
 #if defined key_kriest
 
-      !                               ! natkrpar : kriest parameters
+      !                               ! nampiskrp : kriest parameters
       !                               ! -----------------------------
       xkr_eta      = 0.62        
@@ -90,9 +103,9 @@
 
       REWIND( numnat )                     ! read natkriest
-      READ  ( numnat, natkrpar )
+      READ  ( numnat, nampiskrp )
 
       IF(lwp) THEN
          WRITE(numout,*)
-         WRITE(numout,*) ' Namelist : natkrpar'
+         WRITE(numout,*) ' Namelist : nampiskrp'
          WRITE(numout,*) '    Sinking  exponent                        xkr_eta      = ', xkr_eta
          WRITE(numout,*) '    N content exponent                       xkr_zeta     = ', xkr_zeta
@@ -108,4 +121,59 @@
 #endif
       !
+#if defined key_trc_diaadd
+
+      ! Namelist namlobdia
+      ! -------------------
+      nwritedia = 10                   ! default values
+
+      DO jn = jp_pcs0_2d, jp_pcs1_2d
+         WRITE(ctrc2d(jn),'("2D_",I1)') jn                      ! short name
+         WRITE(ctrc2l(jn),'("2D DIAGNOSTIC NUMBER ",I2)') jn    ! long name
+         ctrc2u(jn) = ' '                                       ! units
+      END DO
+      !                                 ! 3D output arrays
+      DO jn = jp_pcs0_3d, jp_pcs1_3d
+         WRITE(ctrc3d(jn),'("3D_",I1)') jn                      ! short name
+         WRITE(ctrc3l(jn),'("3D DIAGNOSTIC NUMBER ",I2)') jn    ! long name
+         ctrc3u(jn) = ' '                                       ! units
+      END DO
+
+      REWIND( numnat )               ! read natrtd
+      READ  ( numnat, nampisdia )
+
+      DO jn = jp_pcs0_2d, jp_pcs1_2d
+         ctrc2d(jn) = pisdia2d(jn)%snamedia
+         ctrc2l(jn) = pisdia2d(jn)%lnamedia
+         ctrc2u(jn) = pisdia2d(jn)%unitdia
+      END DO
+
+      DO jn = jp_pcs0_3d, jp_pcs1_3d
+         ctrc3d(jn) = pisdia3d(jn)%snamedia
+         ctrc3l(jn) = pisdia3d(jn)%lnamedia
+         ctrc3u(jn) = pisdia3d(jn)%unitdia
+      END DO
+
+      IF(lwp) THEN                   ! control print
+         WRITE(numout,*)
+         WRITE(numout,*) ' Namelist : natadd'
+         WRITE(numout,*) '    frequency of outputs for additional arrays nwritedia = ', nwritedia
+         DO jn = jp_pcs0_3d, jp_pcs1_3d
+            WRITE(numout,*) '   3d output field No : ',jn
+            WRITE(numout,*) '   short name         : ', TRIM(ctrc3d(jn))
+            WRITE(numout,*) '   long name          : ', TRIM(ctrc3l(jn))
+            WRITE(numout,*) '   unit               : ', TRIM(ctrc3u(jn))
+            WRITE(numout,*) ' '
+         END DO
+
+         DO jn = jp_pcs0_2d, jp_pcs1_2d
+            WRITE(numout,*) '   2d output field No : ',jn
+            WRITE(numout,*) '   short name         : ', TRIM(ctrc2d(jn))
+            WRITE(numout,*) '   long name          : ', TRIM(ctrc2l(jn))
+            WRITE(numout,*) '   unit               : ', TRIM(ctrc2u(jn))
+            WRITE(numout,*) ' '
+         END DO
+      ENDIF
+#endif
+
    END SUBROUTINE trc_lsm_pisces
 
Index: trunk/NEMO/TOP_SRC/PISCES/trcsms_pisces.F90
===================================================================
--- trunk/NEMO/TOP_SRC/PISCES/trcsms_pisces.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/PISCES/trcsms_pisces.F90	(revision 1119)
@@ -14,5 +14,5 @@
    !!----------------------------------------------------------------------
    USE oce_trc         !
-   USE trp_trc
+   USE trc
    USE sms_pisces
    USE lbclnk
Index: trunk/NEMO/TOP_SRC/TRP/trcadv_cen2.F90
===================================================================
--- trunk/NEMO/TOP_SRC/TRP/trcadv_cen2.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/TRP/trcadv_cen2.F90	(revision 1119)
@@ -13,5 +13,5 @@
    !!----------------------------------------------------------------------
    USE oce_trc             ! ocean dynamics and active tracers variables
-   USE trc                 ! ocean passive tracers variables
+   USE trp_trc             ! ocean passive tracers variables
    USE trcbbl              ! advective passive tracers in the BBL
    USE prtctl_trc
Index: trunk/NEMO/TOP_SRC/TRP/trcadv_muscl.F90
===================================================================
--- trunk/NEMO/TOP_SRC/TRP/trcadv_muscl.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/TRP/trcadv_muscl.F90	(revision 1119)
@@ -13,5 +13,5 @@
    !! * Modules used
    USE oce_trc         ! ocean dynamics and active tracers variables
-   USE trc             ! ocean passive tracers variables
+   USE trp_trc             ! ocean passive tracers variables
    USE lbclnk          ! ocean lateral boundary conditions (or mpp link)
    USE trcbbl          ! advective passive tracers in the BBL
Index: trunk/NEMO/TOP_SRC/TRP/trcadv_muscl2.F90
===================================================================
--- trunk/NEMO/TOP_SRC/TRP/trcadv_muscl2.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/TRP/trcadv_muscl2.F90	(revision 1119)
@@ -13,5 +13,5 @@
    !! * Modules used
    USE oce_trc         ! ocean dynamics and active tracers variables
-   USE trc             ! ocean passive tracers variables
+   USE trp_trc             ! ocean passive tracers variables
    USE lbclnk          ! ocean lateral boundary conditions (or mpp link)
    USE trcbbl          ! advective passive tracers in the BBL
Index: trunk/NEMO/TOP_SRC/TRP/trcadv_smolar.F90
===================================================================
--- trunk/NEMO/TOP_SRC/TRP/trcadv_smolar.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/TRP/trcadv_smolar.F90	(revision 1119)
@@ -13,8 +13,9 @@
    !!----------------------------------------------------------------------
    USE oce_trc             ! ocean dynamics and active tracers variables
-   USE trc                 ! ocean passive tracers variables
+   USE trp_trc                 ! ocean passive tracers variables
    USE lbclnk              ! ocean lateral boundary conditions (or mpp link)
    USE trcbbl              ! advective passive tracers in the BBL
-   USE prtctl_trc      ! Print control for debbuging
+   USE trctrp_lec          ! passive tracers transport
+   USE prtctl_trc          ! Print control for debbuging
 
    IMPLICIT NONE
Index: trunk/NEMO/TOP_SRC/TRP/trcadv_tvd.F90
===================================================================
--- trunk/NEMO/TOP_SRC/TRP/trcadv_tvd.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/TRP/trcadv_tvd.F90	(revision 1119)
@@ -14,5 +14,5 @@
    !!----------------------------------------------------------------------
    USE oce_trc             ! ocean dynamics and active tracers variables
-   USE trc                 ! ocean passive tracers variables
+   USE trp_trc                 ! ocean passive tracers variables
    USE lbclnk              ! ocean lateral boundary conditions (or mpp link)
    USE trcbbl              ! advective passive tracers in the BBL
@@ -342,9 +342,8 @@
       INTEGER ::   ikm1
       REAL(wp), DIMENSION (jpi,jpj,jpk) ::   zbetup, zbetdo
-      REAL(wp) ::   zpos, zneg, zbt, za, zb, zc, zbig, zrtrn, z2dtt
+      REAL(wp) ::   zpos, zneg, zbt, za, zb, zc, zbig, z2dtt
       !!----------------------------------------------------------------------
 
       zbig = 1.e+40
-      zrtrn = 1.e-15
       zbetup(:,:,:) = 0.e0   ;   zbetdo(:,:,:) = 0.e0
 
@@ -410,6 +409,6 @@
                ! up & down beta terms
                zbt = e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) / z2dtt
-               zbetup(ji,jj,jk) = ( zbetup(ji,jj,jk) - paft(ji,jj,jk) ) / (zpos+zrtrn) * zbt
-               zbetdo(ji,jj,jk) = ( paft(ji,jj,jk) - zbetdo(ji,jj,jk) ) / (zneg+zrtrn) * zbt
+               zbetup(ji,jj,jk) = ( zbetup(ji,jj,jk) - paft(ji,jj,jk) ) / (zpos+rtrn) * zbt
+               zbetdo(ji,jj,jk) = ( paft(ji,jj,jk) - zbetdo(ji,jj,jk) ) / (zneg+rtrn) * zbt
             END DO
          END DO
Index: trunk/NEMO/TOP_SRC/TRP/trcbbc.F90
===================================================================
--- trunk/NEMO/TOP_SRC/TRP/trcbbc.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/TRP/trcbbc.F90	(revision 1119)
@@ -13,5 +13,5 @@
    !! * Modules used
    USE oce_trc             ! ocean dynamics and active tracers variables
-   USE trc                 ! ocean passive tracers variables
+   USE trp_trc                 ! ocean passive tracers variables
    USE prtctl_trc          ! Print control for debbuging
  
Index: trunk/NEMO/TOP_SRC/TRP/trcbbl.F90
===================================================================
--- trunk/NEMO/TOP_SRC/TRP/trcbbl.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/TRP/trcbbl.F90	(revision 1119)
@@ -19,5 +19,5 @@
    !! * Modules used
    USE oce_trc             ! ocean dynamics and active tracers variables
-   USE trc                 ! ocean passive tracers variables
+   USE trp_trc                 ! ocean passive tracers variables
    USE trctrp_lec      ! passive tracers transport
    USE prtctl_trc          ! Print control for debbuging
Index: trunk/NEMO/TOP_SRC/TRP/trcdmp.F90
===================================================================
--- trunk/NEMO/TOP_SRC/TRP/trcdmp.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/TRP/trcdmp.F90	(revision 1119)
@@ -16,5 +16,5 @@
    !!----------------------------------------------------------------------
    USE oce_trc         ! ocean dynamics and tracers variables
-   USE trc             ! ocean passive tracers variables
+   USE trp_trc             ! ocean passive tracers variables
    USE trctrp_lec      ! passive tracers transport
    USE trcdta
Index: trunk/NEMO/TOP_SRC/TRP/trcldf_bilap.F90
===================================================================
--- trunk/NEMO/TOP_SRC/TRP/trcldf_bilap.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/TRP/trcldf_bilap.F90	(revision 1119)
@@ -13,5 +13,5 @@
    !! * Modules used
    USE oce_trc         ! ocean dynamics and active tracers variables
-   USE trc             ! ocean passive tracers variables
+   USE trp_trc             ! ocean passive tracers variables
    USE lbclnk          ! ocean lateral boundary conditions (or mpp link)
    USE prtctl_trc      ! Print control for debbuging
Index: trunk/NEMO/TOP_SRC/TRP/trcldf_bilapg.F90
===================================================================
--- trunk/NEMO/TOP_SRC/TRP/trcldf_bilapg.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/TRP/trcldf_bilapg.F90	(revision 1119)
@@ -15,5 +15,5 @@
    !! * Modules used
    USE oce_trc             ! ocean dynamics and tracers variables
-   USE trc                 ! ocean passive tracers variables
+   USE trp_trc                 ! ocean passive tracers variables
    USE lbclnk              ! ocean lateral boundary condition (or mpp link)
    USE prtctl_trc          ! Print control for debbuging
Index: trunk/NEMO/TOP_SRC/TRP/trcldf_iso.F90
===================================================================
--- trunk/NEMO/TOP_SRC/TRP/trcldf_iso.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/TRP/trcldf_iso.F90	(revision 1119)
@@ -15,5 +15,5 @@
    !! * Modules used
    USE oce_trc      ! ocean dynamics and tracers variables
-   USE trc          ! ocean passive tracers variables
+   USE trp_trc          ! ocean passive tracers variables
    USE prtctl_trc   ! Print control for debbuging
 
Index: trunk/NEMO/TOP_SRC/TRP/trcldf_iso_zps.F90
===================================================================
--- trunk/NEMO/TOP_SRC/TRP/trcldf_iso_zps.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/TRP/trcldf_iso_zps.F90	(revision 1119)
@@ -14,5 +14,5 @@
    !! * Modules used
    USE oce_trc             ! ocean dynamics and active tracers variables
-   USE trc                 ! ocean passive tracers variables
+   USE trp_trc                 ! ocean passive tracers variables
    USE prtctl_trc          ! Print control for debbuging
 
Index: trunk/NEMO/TOP_SRC/TRP/trcldf_lap.F90
===================================================================
--- trunk/NEMO/TOP_SRC/TRP/trcldf_lap.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/TRP/trcldf_lap.F90	(revision 1119)
@@ -12,5 +12,5 @@
    !!----------------------------------------------------------------------
    USE oce_trc             ! ocean dynamics and active tracers variables
-   USE trc                 ! ocean passive tracers variables
+   USE trp_trc                 ! ocean passive tracers variables
    USE prtctl_trc          ! Print control for debbuging
 
Index: trunk/NEMO/TOP_SRC/TRP/trcnxt.F90
===================================================================
--- trunk/NEMO/TOP_SRC/TRP/trcnxt.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/TRP/trcnxt.F90	(revision 1119)
@@ -12,5 +12,5 @@
    !! * Modules used
    USE oce_trc         ! ocean dynamics and tracers variables
-   USE trc             ! ocean passive tracers variables
+   USE trp_trc             ! ocean passive tracers variables
    USE lbclnk          ! ocean lateral boundary conditions (or mpp link)
    USE trctrp_lec      ! pasive tracers transport
Index: trunk/NEMO/TOP_SRC/TRP/trcrad.F90
===================================================================
--- trunk/NEMO/TOP_SRC/TRP/trcrad.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/TRP/trcrad.F90	(revision 1119)
@@ -14,5 +14,5 @@
    !!----------------------------------------------------------------------
    USE oce_trc             ! ocean dynamics and tracers variables
-   USE trc                 ! ocean passive tracers variables
+   USE trp_trc                 ! ocean passive tracers variables
    USE lib_mpp
    USE prtctl_trc          ! Print control for debbuging
Index: trunk/NEMO/TOP_SRC/TRP/trcsbc.F90
===================================================================
--- trunk/NEMO/TOP_SRC/TRP/trcsbc.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/TRP/trcsbc.F90	(revision 1119)
@@ -12,5 +12,5 @@
    !! * Modules used
    USE oce_trc             ! ocean dynamics and active tracers variables
-   USE trc                 ! ocean  passive tracers variables
+   USE trp_trc                 ! ocean  passive tracers variables
    USE prtctl_trc          ! Print control for debbuging
 
Index: trunk/NEMO/TOP_SRC/TRP/trcstp.F90
===================================================================
--- trunk/NEMO/TOP_SRC/TRP/trcstp.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/TRP/trcstp.F90	(revision 1119)
@@ -10,5 +10,5 @@
    !! * Modules used
    USE oce_trc          ! ocean dynamics and active tracers variables
-   USE trc              ! ocean passive tracers variables 
+   USE trp_trc
    USE trctrp           ! passive tracers transport
    USE trcsms           ! passive tracers sources and sinks
Index: trunk/NEMO/TOP_SRC/TRP/trctrp.F90
===================================================================
--- trunk/NEMO/TOP_SRC/TRP/trctrp.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/TRP/trctrp.F90	(revision 1119)
@@ -13,5 +13,5 @@
    !!----------------------------------------------------------------------
    USE oce_trc         ! ocean dynamics and active tracers variables
-   USE trc             ! ocean passive tracers variables 
+   USE trp_trc             ! ocean passive tracers variables 
    USE trctrp_lec      ! passive tracers transport parameters
    USE prtctl_trc     ! Print control for debbuging
Index: trunk/NEMO/TOP_SRC/TRP/trctrp_ctl.F90
===================================================================
--- trunk/NEMO/TOP_SRC/TRP/trctrp_ctl.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/TRP/trctrp_ctl.F90	(revision 1119)
@@ -17,5 +17,5 @@
    !!----------------------------------------------------------------------
    USE oce_trc       ! ocean dynamics and active tracers variables
-   USE trc           ! ocean passive tracers variables
+   USE trp_trc           ! ocean passive tracers variables
    USE trctrp_lec    ! passive tracers transport
 
Index: trunk/NEMO/TOP_SRC/TRP/trctrp_lec.F90
===================================================================
--- trunk/NEMO/TOP_SRC/TRP/trctrp_lec.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/TRP/trctrp_lec.F90	(revision 1119)
@@ -14,5 +14,5 @@
    !!----------------------------------------------------------------------
    USE oce_trc             ! ocean dynamics and active tracers variables
-   USE trc                 ! ocean passive tracers variables
+   USE trp_trc                 ! ocean passive tracers variables
 
    IMPLICIT NONE
@@ -68,4 +68,8 @@
    REAL(wp) , PUBLIC ::   hdmptr   =  800.            !: depth of transition between sdmp and bdmp (meters)
 #endif
+   !                                                 !!: ** SMOLAR advection scheme
+   REAL(wp) , PUBLIC ::  rsc       = 1.               !: tuning coefficient for anti-diffusion
+   INTEGER  , PUBLIC ::  ncortrc   = 1                !: number of corrective phases
+   LOGICAL  , PUBLIC ::  crosster  = .FALSE.          !: computes crossterms (T) or not (F)
    !!----------------------------------------------------------------------
    !! NEMO/TOP 2.0 , LOCEAN-IPSL (2007) 
@@ -82,15 +86,16 @@
       !! ** Purpose :   Read Namelist for tracer transport option
       !!----------------------------------------------------------------------
-      NAMELIST/namtrcadv/ ln_trcadv_cen2 , ln_trcadv_tvd,   &
-         &                 ln_trcadv_muscl, ln_trcadv_muscl2, ln_trcadv_smolar
+      NAMELIST/namtopadv/ ln_trcadv_cen2 , ln_trcadv_tvd,   &
+         &                ln_trcadv_muscl, ln_trcadv_muscl2, ln_trcadv_smolar, &
+         &                rsc, ncortrc, crosster
 #if  defined key_trcbbl_dif   ||   defined key_trcbbl_adv 
-      NAMELIST/namtrcbbl/ atrcbbl
-#endif
-      NAMELIST/namtrcldf/  ln_trcldf_diff  , ln_trcldf_lap  , ln_trcldf_bilap, &
+      NAMELIST/namtopbbl/ atrcbbl
+#endif
+      NAMELIST/namtopldf/  ln_trcldf_diff  , ln_trcldf_lap  , ln_trcldf_bilap, &
          &                 ln_trcldf_level, ln_trcldf_hor, ln_trcldf_iso,   &
          &                 ahtrc0, ahtrb0, aeivtr0, trcrat
-      NAMELIST/namtrczdf/ ln_trczdf_exp, n_trczdf_exp
+      NAMELIST/namtopzdf/ ln_trczdf_exp, n_trczdf_exp
 #if defined key_trcdmp
-      NAMELIST/namtrcdmp/ ndmptr, ndmpftr, nmldmptr, sdmptr, bdmptr, hdmptr
+      NAMELIST/namtopdmp/ ndmptr, ndmpftr, nmldmptr, sdmptr, bdmptr, hdmptr
 #endif
       !!----------------------------------------------------------------------
@@ -101,25 +106,30 @@
 
       !                                ! tracer advection scheme
-      REWIND( numnat )                 !   ! Read Namelist namtrcadv
-      READ  ( numnat, namtrcadv )
-
-      IF(lwp) THEN                     !   ! Control print
-         WRITE(numout,*)
-         WRITE(numout,*) '   Namelist namtrcadv : chose a advection scheme for tracers'
-         WRITE(numout,*) '      2nd order advection scheme     ln_trcadv_cen2   = ', ln_trcadv_cen2
-         WRITE(numout,*) '      TVD advection scheme           ln_trcadv_tvd    = ', ln_trcadv_tvd
-         WRITE(numout,*) '      MUSCL  advection scheme        ln_trcadv_muscl  = ', ln_trcadv_muscl
-         WRITE(numout,*) '      MUSCL2 advection scheme        ln_trcadv_muscl2 = ', ln_trcadv_muscl2
-         WRITE(numout,*) '      SMOLARKIEWICZ advection scheme ln_trcadv_smolar = ', ln_trcadv_smolar
+      REWIND( numnat )                 !   ! Read Namelist namtopadv
+      READ  ( numnat, namtopadv )
+
+      IF(lwp) THEN                     !   ! Control print
+         WRITE(numout,*)
+         WRITE(numout,*) '   Namelist namtopadv : chose a advection scheme for tracers'
+         WRITE(numout,*) '      2nd order advection scheme               ln_trcadv_cen2   = ', ln_trcadv_cen2
+         WRITE(numout,*) '      TVD advection scheme                     ln_trcadv_tvd    = ', ln_trcadv_tvd
+         WRITE(numout,*) '      MUSCL  advection scheme                  ln_trcadv_muscl  = ', ln_trcadv_muscl
+         WRITE(numout,*) '      MUSCL2 advection scheme                  ln_trcadv_muscl2 = ', ln_trcadv_muscl2
+         WRITE(numout,*) '      SMOLARKIEWICZ advection scheme           ln_trcadv_smolar = ', ln_trcadv_smolar
+         IF( ln_trcadv_smolar ) THEN
+            WRITE(numout,*) '      SMOLARKIEWICZ : tuning coefficient                rsc      = ', rsc
+            WRITE(numout,*) '      SMOLARKIEWICZ : number of corrective phase        ncortrc  = ', ncortrc
+            WRITE(numout,*) '      SMOLARKIEWICZ : computes or not crossterms        crosster = ', crosster
+         ENDIF
       ENDIF
 
 #if  defined key_trcbbl_dif
       !                                ! Bottom boundary layer 
-      REWIND( numnat )                 !   ! Read Namelist namtrcbbl
-      READ  ( numnat, namtrcbbl )
-
-      IF(lwp) THEN                     !   ! Control print
-         WRITE(numout,*)
-         WRITE(numout,*) '   Namelist namtrcbbl : set Diffusive Bottom Boundary Layer parameters'
+      REWIND( numnat )                 !   ! Read Namelist namtopbbl
+      READ  ( numnat, namtopbbl )
+
+      IF(lwp) THEN                     !   ! Control print
+         WRITE(numout,*)
+         WRITE(numout,*) '   Namelist namtopbbl : set Diffusive Bottom Boundary Layer parameters'
          WRITE(numout,*) '      bottom boundary layer coef.    atrcbbl = ', atrcbbl
 # if defined key_trcbbl_adv
@@ -130,10 +140,10 @@
 
       !                                ! Lateral physics on tracers   
-      REWIND( numnat )                 !   ! Read Namelist namtrcldf
-      READ  ( numnat, namtrcldf )
-
-      IF(lwp) THEN                     !   ! Control print
-         WRITE(numout,*)
-         WRITE(numout,*) '   Namelist namtrcldf : set lateral mixing parameters (type, direction, coefficients)'
+      REWIND( numnat )                 !   ! Read Namelist namtopldf
+      READ  ( numnat, namtopldf )
+
+      IF(lwp) THEN                     !   ! Control print
+         WRITE(numout,*)
+         WRITE(numout,*) '   Namelist namtopldf : set lateral mixing parameters (type, direction, coefficients)'
          WRITE(numout,*) '      perform lateral diffusion or not               ln_trcldf_diff  = ', ln_trcldf_diff
          WRITE(numout,*) '      laplacian operator                             ln_trcldf_lap   = ', ln_trcldf_lap
@@ -149,10 +159,10 @@
 
       !                                ! Vertical mixing
-      REWIND( numnat )                 !   ! Read namtrczdf namelist
-      READ  ( numnat, namtrczdf )
-
-      IF(lwp) THEN                     !   ! Control print
-         WRITE(numout,*)
-         WRITE(numout,*) '   Namelist namtrczdf : set vertical diffusion parameters'
+      REWIND( numnat )                 !   ! Read namtopzdf namelist
+      READ  ( numnat, namtopzdf )
+
+      IF(lwp) THEN                     !   ! Control print
+         WRITE(numout,*)
+         WRITE(numout,*) '   Namelist namtopzdf : set vertical diffusion parameters'
          WRITE(numout,*) '      time splitting / backward scheme ln_trczdf_exp = ', ln_trczdf_exp
          WRITE(numout,*) '      number of time step               n_trczdf_exp = ', n_trczdf_exp
@@ -162,10 +172,10 @@
       !                                ! passive tracres damping term
       REWIND( numnat )                 !   ! Read Namelist namtdp
-      READ  ( numnat, namtrcdmp )
+      READ  ( numnat, namtopdmp )
       IF( lzoom )   nmldmptr = 0           ! restoring to climatology at closed north or south boundaries
 
       IF(lwp) THEN                     !   ! Control print
          WRITE(numout,*)
-         WRITE(numout,*) '   Namelist namtrcdmp : set damping parameter'
+         WRITE(numout,*) '   Namelist namtopdmp : set damping parameter'
          WRITE(numout,*) '      tracers damping option         ndmptr   = ', ndmptr
          WRITE(numout,*) '      create a damping.coeff file    ndmpftr  = ', ndmpftr
Index: trunk/NEMO/TOP_SRC/TRP/trczdf_exp.F90
===================================================================
--- trunk/NEMO/TOP_SRC/TRP/trczdf_exp.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/TRP/trczdf_exp.F90	(revision 1119)
@@ -14,5 +14,5 @@
    !! * Modules used
    USE oce_trc          ! ocean dynamics and active tracers variables
-   USE trc              ! ocean passive tracers variables
+   USE trp_trc              ! ocean passive tracers variables
    USE trctrp_lec       ! passive tracers transport
    USE prtctl_trc          ! Print control for debbuging
Index: trunk/NEMO/TOP_SRC/TRP/trczdf_imp.F90
===================================================================
--- trunk/NEMO/TOP_SRC/TRP/trczdf_imp.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/TRP/trczdf_imp.F90	(revision 1119)
@@ -13,5 +13,5 @@
    !! * Modules used
    USE oce_trc             ! ocean dynamics and active tracers variables
-   USE trc                 ! ocean passive tracers variables
+   USE trp_trc                 ! ocean passive tracers variables
    USE trctrp_lec          ! passive tracers transport
    USE prtctl_trc
Index: trunk/NEMO/TOP_SRC/TRP/trczdf_iso.F90
===================================================================
--- trunk/NEMO/TOP_SRC/TRP/trczdf_iso.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/TRP/trczdf_iso.F90	(revision 1119)
@@ -15,5 +15,5 @@
    !! * Modules used
    USE oce_trc          ! ocean dynamics and tracers variables
-   USE trc              ! ocean passive tracers variables 
+   USE trp_trc              ! ocean passive tracers variables 
    USE lbclnk           ! ocean lateral boundary conditions (or mpp link)
    USE trctrp_lec       ! passive tracers transport
Index: trunk/NEMO/TOP_SRC/TRP/trczdf_iso_vopt.F90
===================================================================
--- trunk/NEMO/TOP_SRC/TRP/trczdf_iso_vopt.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/TRP/trczdf_iso_vopt.F90	(revision 1119)
@@ -18,5 +18,5 @@
    !! * Modules used
    USE oce_trc         ! ocean dynamics and tracers variables
-   USE trc             ! ocean passive tracers variables 
+   USE trp_trc             ! ocean passive tracers variables 
    USE lbclnk          ! ocean lateral boundary conditions (or mpp link)
    USE trctrp_lec      ! passive tracers transport
Index: trunk/NEMO/TOP_SRC/TRP/zpshde_trc.F90
===================================================================
--- trunk/NEMO/TOP_SRC/TRP/zpshde_trc.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/TRP/zpshde_trc.F90	(revision 1119)
@@ -15,5 +15,5 @@
    !! * Modules used
    USE oce_trc         ! ocean dynamics and tracers variables
-   USE trc             ! ocean passive tracers variables
+   USE trp_trc             ! ocean passive tracers variables
    USE lbclnk          ! lateral boundary conditions (or mpp link)
 
Index: trunk/NEMO/TOP_SRC/oce_trc.F90
===================================================================
--- trunk/NEMO/TOP_SRC/oce_trc.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/oce_trc.F90	(revision 1119)
@@ -202,6 +202,4 @@
    !* vertical diffusion *
    USE zdf_oce , ONLY :   avt        =>   avt         !: vert. diffusivity coef. at w-point for temp  
-   USE zdf_oce , ONLY :   avt0       =>   avt0        !: vertical eddy diffusivity for tracers (m2/s)
-   USE zdf_oce , ONLY :   ln_zdfnpc  =>   ln_zdfnpc   !: convection: non-penetrative convection flag
 # if defined key_zdfddm
    USE zdfddm  , ONLY :   avs        =>    avs        !: salinity vertical diffusivity coeff. at w-point
Index: trunk/NEMO/TOP_SRC/par_trc.F90
===================================================================
--- trunk/NEMO/TOP_SRC/par_trc.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/par_trc.F90	(revision 1119)
@@ -30,5 +30,5 @@
    INTEGER, PUBLIC, PARAMETER ::   jpdia3d  =  jp_lobster_3d + jp_pisces_3d  + jp_cfc_3d  + jp_my_trc_3d
    !                     ! total number of sms diagnostic arrays
-   INTEGER, PUBLIC, PARAMETER ::   jpdiatrd = jp_lobster_trd + jp_pisces_trd + jp_cfc_trd + jp_my_trc_trd
+   INTEGER, PUBLIC, PARAMETER ::   jpdiabio = jp_lobster_trd + jp_pisces_trd + jp_cfc_trd + jp_my_trc_trd
    
    !  1D configuration ("key_c1d")
@@ -55,4 +55,5 @@
 #endif
 
+   REAL(wp), PUBLIC  :: rtrn  = 1.e-15      !: truncation value     
    !!======================================================================
 END MODULE par_trc
Index: trunk/NEMO/TOP_SRC/trc.F90
===================================================================
--- trunk/NEMO/TOP_SRC/trc.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/trc.F90	(revision 1119)
@@ -46,47 +46,13 @@
    REAL(wp), PUBLIC, DIMENSION (jpi,jpj,jpk,jptra) ::   trb   !: traceur concentration for before time step
 
-
-   !! numerical parameter (NAMELIST)
-   !! --------------------------------------------------
-   REAL(wp), PUBLIC ::   rsc    !: tuning coefficient for anti-diffusion
-   REAL(wp), PUBLIC ::   rtrn   !: value for truncation
-
-   !! namelist parameters
-   !! --------------------------------------------------
-   INTEGER , PUBLIC ::   ncortrc     !: number of corrective phases
-   INTEGER , PUBLIC ::   ndttrc      !: frequency of step on passive tracers
-   INTEGER , PUBLIC ::   nittrc000   !: first time step of passive tracers model  
-   LOGICAL , PUBLIC ::   crosster    !: logical if true computes crossterms
-
-
-   !! isopycnal scheme for passive tracers
-   !! ------------------------------------  
-   REAL(wp), PUBLIC ::   ahtrb0     !: background diffusivity coefficient for passive tracer (m2/s)
-   REAL(wp), PUBLIC ::   trcrat     !: ratio between passive and active tracer coeff for diffusion
-   REAL(wp), PUBLIC ::   ahtrc0     !: horizontal eddy diffusivity for passive tracers (m2/s)
-   REAL(wp), PUBLIC ::   aeivtr0    !: eddy induced velocity coefficient (m2/s)
-   
    
    !! passive tracers restart (input and output)
    !! ------------------------------------------  
+   INTEGER , PUBLIC ::   ndttrc     !: frequency of step on passive tracers
+   INTEGER , PUBLIC ::   nittrc000  !: first time step of passive tracers model
    LOGICAL , PUBLIC ::   lrsttr     !: boolean term for restart i/o for passive tracers (namelist)
    INTEGER , PUBLIC ::   nutwrs     !: output FILE for passive tracers restart
    INTEGER , PUBLIC ::   nutrst     !: logical unit for restart FILE for passive tracers
    INTEGER , PUBLIC ::   nrsttr     !: control of the time step ( 0 or 1 ) for pass. tr.
-   
-   
-   !! interpolated gradient
-   !!--------------------------------------------------  
-   REAL(wp), PUBLIC, DIMENSION (jpi,jpj,jptra) ::   gtru   !: horizontal gradient at u-points at bottom ocean level
-   REAL(wp), PUBLIC, DIMENSION (jpi,jpj,jptra) ::   gtrv   !: horizontal gradient at v-points at bottom ocean level
-
-   
-# if defined key_trcldf_eiv && defined key_diaeiv
-   !! The three component of the eddy induced velocity
-   !! --------------------------------------------------
-   REAL(wp), PUBLIC, DIMENSION (jpi,jpj,jpk) ::   u_trc_eiv   !: u-eiv (m/s)
-   REAL(wp), PUBLIC, DIMENSION (jpi,jpj,jpk) ::   v_trc_eiv   !: v-eiv (m/s)
-   REAL(wp), PUBLIC, DIMENSION (jpi,jpj,jpk) ::   w_trc_eiv   !: w-eiv (m/s)
-# endif
    
    
@@ -114,24 +80,4 @@
    INTEGER , PUBLIC ::   nwritedia     !: frequency of additional arrays outputs(namelist)
 # endif
-   
-# if defined key_trc_diatrd
-   
-   !!  non conservative trends (biological, ...)
-   !! --------------------------------------------------
-   LOGICAL, PUBLIC, DIMENSION (jptra) ::   luttrd   !: large trends diagnostic to write or not (namelist)
-   
-   !!  Advection-diffusion trends
-   !! --------------------------------------------------
-   REAL(wp), PUBLIC, DIMENSION(:,:,:,:,:), ALLOCATABLE ::   trtrd   !: trends of the tracer equations
-   
-   INTEGER, PUBLIC, DIMENSION(jptra) :: ikeep ! indice of tracer for which dyn trends are stored
-   INTEGER, PUBLIC                   :: nkeep ! number of tracers for which dyn trends are stored 
-   !                                          ! (used to allocate trtrd buffer)
-
-   !! netcdf files and index common
-   !! --------------------------------------------------
-   INTEGER , PUBLIC ::   nwritetrd   !: frequency of additional arrays outputs(namelist)
-   
-# endif 
 
 # if defined key_trc_diabio
Index: trunk/NEMO/TOP_SRC/trcctl.F90
===================================================================
--- trunk/NEMO/TOP_SRC/trcctl.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/trcctl.F90	(revision 1119)
@@ -65,15 +65,4 @@
       ENDIF
 
-      ! Don't USE non penetrative convective mixing option
-      ! it's not implemented for passive tracer
-      IF( ln_zdfnpc ) THEN
-         IF(lwp) WRITE (numout,*) ' ===>>>> : w a r n i n g '
-         IF(lwp) WRITE (numout,*) ' =======   ============= '
-         IF(lwp) WRITE (numout,*) ' STOP, this sheme is not implemented'
-         IF(lwp) WRITE (numout,*) ' in passive tracer model:'
-         IF(lwp) WRITE (numout,*) ' non penetrative convect. mixing scheme'
-         istop = istop + 1
-      ENDIF
-
       ! transport scheme option
       CALL trc_trp_ctl
Index: trunk/NEMO/TOP_SRC/trcdia.F90
===================================================================
--- trunk/NEMO/TOP_SRC/trcdia.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/trcdia.F90	(revision 1119)
@@ -23,4 +23,5 @@
    USE oce_trc
    USE trc
+   USE trp_trc
    USE dianam    ! build name of file (routine)
    USE in_out_manager  ! I/O manager
@@ -77,12 +78,6 @@
       
       CALL trcdit_wr( kt, kindic )      ! outputs for tracer concentration
-      
-
       CALL trcdid_wr( kt, kindic )      ! outputs for dynamical trends
-
-      
       CALL trcdii_wr( kt, kindic )      ! outputs for additional arrays
-
-      
       CALL trcdib_wr( kt, kindic )      ! outputs for biological trends
 
@@ -437,6 +432,5 @@
                IF( jl == jpdiatrc )   WRITE (cltra,'("SBC_",a)') ctrcnm(jn)      ! surface boundary conditions
                !
-               CALL histwrite(nit6(jn), cltra, it, trtrd(:,:,:,ikeep(jn),jl)   &
-                  &          ,ndimt50, ndext50)
+               CALL histwrite(nit6(jn), cltra, it, trtrd(:,:,:,ikeep(jn),jl),ndimt50, ndext50)
             END DO
          END IF
@@ -562,7 +556,7 @@
          ! more 2D horizontal arrays
          DO jn = 1, jpdia2d
-            cltra=ctrc2d(jn)    ! short title for 2D diagnostic
-            cltral=ctrc2l(jn)   ! long title for 2D diagnostic
-            cltrau=ctrc2u(jn)   ! UNIT for 2D diagnostic
+            cltra  = ctrc2d(jn)    ! short title for 2D diagnostic
+            cltral = ctrc2l(jn)   ! long title for 2D diagnostic
+            cltrau = ctrc2u(jn)   ! UNIT for 2D diagnostic
             CALL histdef( nitd, cltra, cltral, cltrau, jpi, jpj, nhoritd,  &
                &          1, 1, 1,  -99, 32, clop, zsto, zout )
@@ -591,6 +585,5 @@
       DO jn = 1, jpdia3d
          cltra = ctrc3d(jn)   ! short title for 3D diagnostic
-         CALL histwrite( nitd, cltra, it, trc3d(:,:,:,jn), ndimt50  &
-            &           ,ndext50)
+         CALL histwrite( nitd, cltra, it, trc3d(:,:,:,jn), ndimt50 ,ndext50)
       END DO
 
@@ -598,6 +591,5 @@
       DO jn = 1, jpdia2d
          cltra = ctrc2d(jn)   ! short title for 2D diagnostic
-         CALL histwrite(nitd, cltra, it, trc2d(:,:,jn), ndimt51    &
-            &   ,ndext51)
+         CALL histwrite(nitd, cltra, it, trc2d(:,:,jn), ndimt51  ,ndext51)
       END DO
 
Index: trunk/NEMO/TOP_SRC/trclec.F90
===================================================================
--- trunk/NEMO/TOP_SRC/trclec.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/trclec.F90	(revision 1119)
@@ -20,4 +20,5 @@
    USE oce_trc
    USE trc
+   USE trp_trc
    USE trctrp_lec
    USE trclsm_lobster    ! LOBSTER namelist
@@ -66,25 +67,10 @@
       TYPE(PTRACER) , DIMENSION(jptra) :: tracer
 
-#if defined key_trc_diaadd
-      ! definition of additional diagnostic as a structure
-      TYPE DIAG
-         CHARACTER(len = 20)  :: snamedia   !: short name
-         CHARACTER(len = 80 ) :: lnamedia   !: long name
-         CHARACTER(len = 20 ) :: unitdia    !: unit
-      END TYPE DIAG
-
-      TYPE(DIAG) , DIMENSION(jpdia2d) :: diag2d
-      TYPE(DIAG) , DIMENSION(jpdia3d) :: diag3d
+      !!
+      NAMELIST/namtoptrc/ ndttrc, nwritetrc, lrsttr, nrsttr, tracer
+#if defined key_trc_diatrd
+      NAMELIST/namtoptrd/ luttrd, nwritetrd                                             ! dynamical trends
 #endif
 
-      !!
-      NAMELIST/nattrc/ nwritetrc, lrsttr, nrsttr, tracer
-      NAMELIST/natnum/ rsc, rtrn, ncortrc, ndttrc, crosster
-#if defined key_trc_diatrd
-      NAMELIST/natrtd/ luttrd, nwritetrd                                             ! dynamical trends
-#endif
-#if defined key_trc_diaadd
-      NAMELIST/natdia/nwritedia, diag3d, diag2d     ! additional diagnostics
-#endif
       !!---------------------------------------------------------------------
 
@@ -99,5 +85,6 @@
       ! Namelist nattrc (files)
       ! ----------------------------------------------
-      nwritetrc = 10                 ! default values
+      ndttrc    = 1                 ! default values
+      nwritetrc = 10      
       lrsttr    = .FALSE.
       nrsttr    =  0
@@ -111,5 +98,8 @@
 
       REWIND( numnat )               ! read nattrc
-      READ  ( numnat, nattrc )
+      READ  ( numnat, namtoptrc )
+
+      !!Chris  computes the first time step of tracer model
+      nittrc000 = nit000 + ndttrc - 1
 
       DO jn = 1, jptra
@@ -122,11 +112,12 @@
 
 
-
       IF(lwp) THEN                   ! control print
          WRITE(numout,*)
-         WRITE(numout,*) ' Namelist : nattrc'
+         WRITE(numout,*) ' Namelist : namtoptrc'
+         WRITE(numout,*) '    time step freq. for pass. trac. ndttrc             = ', ndttrc
+         WRITE(numout,*) '    1st time step for pass. trac. nittrc000            = ', nittrc000
          WRITE(numout,*) '    frequency of outputs for passive tracers nwritetrc = ', nwritetrc  
-         WRITE(numout,*) '    restart LOGICAL for passive tr. lrsttr = ', lrsttr
-         WRITE(numout,*) '    control of time step for p. tr. nrsttr = ', nrsttr
+         WRITE(numout,*) '    restart LOGICAL for passive tr. lrsttr             = ', lrsttr
+         WRITE(numout,*) '    control of time step for p. tr. nrsttr             = ', nrsttr
          DO jn = 1, jptra
             WRITE(numout,*) '   tracer nb             : ', jn 
@@ -150,5 +141,5 @@
 
       REWIND( numnat )               ! read natrtd
-      READ  ( numnat, natrtd )
+      READ  ( numnat, namtoptrd )
 
       nkeep=0
@@ -167,5 +158,5 @@
       IF(lwp) THEN                   ! control print
          WRITE(numout,*)
-         WRITE(numout,*) ' Namelist : natrtd'
+         WRITE(numout,*) ' Namelist : namtoptrd'
          WRITE(numout,*) '    frequency of outputs for dynamical trends nwritetrd = ', nwritetrd
          DO jn = 1, jptra
@@ -177,84 +168,4 @@
 #endif
 
-#if defined key_trc_diaadd
-
-      ! Namelist natrtd (transport trends)
-      ! ----------------------------------------------
-      nwritedia = 10                 ! default values 
-      !                                 ! 2D output arrays
-      DO jn = 1, jpdia2d
-         WRITE(ctrc2d(jn),'("2D_",I1)') jn                      ! short name
-         WRITE(ctrc2l(jn),'("2D DIAGNOSTIC NUMBER ",I2)') jn    ! long name
-         ctrc2u(jn) = ' '                                       ! units 
-      END DO
-      !                                 ! 3D output arrays
-      DO jn = 1, jpdia3d
-         WRITE(ctrc3d(jn),'("3D_",I1)') jn                     ! short name
-         WRITE(ctrc3l(jn),'("3D DIAGNOSTIC NUMBER ",I2)') jn    ! long name
-         ctrc3u(jn) = ' '                                       ! units
-      END DO
-
-      REWIND( numnat )               ! read natrtd
-      READ  ( numnat, natdia )
-
-      DO jn = 1, jpdia2d
-         ctrc2d(jn) = diag2d(jn)%snamedia
-         ctrc2l(jn) = diag2d(jn)%lnamedia
-         ctrc2u(jn) = diag2d(jn)%unitdia
-      END DO
-
-      DO jn = 1, jpdia3d
-         ctrc3d(jn) = diag3d(jn)%snamedia
-         ctrc3l(jn) = diag3d(jn)%lnamedia
-         ctrc3u(jn) = diag3d(jn)%unitdia
-      END DO
-
-      IF(lwp) THEN                   ! control print
-         WRITE(numout,*)
-         WRITE(numout,*) ' Namelist : natadd'
-         WRITE(numout,*) '    frequency of outputs for additional arrays nwritedia = ', nwritedia
-         DO jn = 1, jpdia3d
-            WRITE(numout,*) '   3d output field No : ',jn
-            WRITE(numout,*) '   short name         : ', TRIM(ctrc3d(jn))
-            WRITE(numout,*) '   long name          : ', TRIM(ctrc3l(jn))
-            WRITE(numout,*) '   unit               : ', TRIM(ctrc3u(jn))
-            WRITE(numout,*) ' '
-         END DO
-
-         DO jn = 1, jpdia2d
-            WRITE(numout,*) '   2d output field No : ',jn
-            WRITE(numout,*) '   short name         : ', TRIM(ctrc2d(jn))
-            WRITE(numout,*) '   long name          : ', TRIM(ctrc2l(jn))
-            WRITE(numout,*) '   unit               : ', TRIM(ctrc2u(jn))
-            WRITE(numout,*) ' '
-         END DO
-      ENDIF
-#endif
-
-      !! Namelist natnum :
-      !! -----------------
-      rsc      = 1.                 ! default values
-      rtrn     = 1.e-15
-      ncortrc  = 1
-      ndttrc   = 4
-      crosster = .FALSE.
-
-      REWIND( numnat )              ! read natnum
-      READ  ( numnat, natnum )
-
-      !!Chris  computes the first time step of tracer model
-      nittrc000 = nit000 + ndttrc - 1
-
-      IF(lwp) THEN                  ! control print
-         WRITE(numout,*)
-         WRITE(numout,*) ' Namelist : natnum'
-         WRITE(numout,*)
-         WRITE(numout,*) ' tuning coefficient              rsc     = ', rsc
-         WRITE(numout,*) ' truncation value                rtrn    = ', rtrn
-         WRITE(numout,*) ' number of corrective phase      ncortrc = ', ncortrc
-         WRITE(numout,*) ' time step freq. for pass. trac. ndttrc  = ', ndttrc
-         WRITE(numout,*) ' 1st time step for pass. trac. nittrc000 = ', nittrc000
-         WRITE(numout,*) ' computes or not crossterms    crosster  = ', crosster
-      ENDIF
 
       ! namelist of transport
Index: trunk/NEMO/TOP_SRC/trcrst.F90
===================================================================
--- trunk/NEMO/TOP_SRC/trcrst.F90	(revision 1118)
+++ trunk/NEMO/TOP_SRC/trcrst.F90	(revision 1119)
@@ -33,11 +33,4 @@
    INTEGER, PUBLIC ::   numrtr, numrtw   !: logical unit for trc restart (read and write)
 
-#if defined key_pisces
-   REAL(wp) ::  &
-     alkmean = 2426. ,  & ! mean value of alkalinity ( Glodap ; for Goyet 2391. )
-     po4mean = 2.165 ,  & ! mean value of phosphates
-     no3mean = 30.90 ,  & ! mean value of nitrate
-     siomean = 91.51      ! mean value of silicate
-#endif
 
    !! * Substitutions
@@ -98,9 +91,4 @@
       INTEGER  ::   iarak0
       REAL(wp) ::   zkt, zarak0
-# if defined key_pisces 
-      REAL(wp) ::   ztrasum
-      INTEGER  ::   ji, jj, jk
-      REAL(wp) ::   caralk, bicarb, co3
-# endif
       !!----------------------------------------------------------------------
 
@@ -172,4 +160,5 @@
       CALL iom_get( numrtr, jpdom_autoglo, 'Silicalim', xksi(:,:) ) 
       CALL iom_get( numrtr, jpdom_autoglo, 'Silicamax', xksimax(:,:) )
+      CALL trc_rst_ini  ! Initialisation of some variables
 #endif
 
@@ -181,115 +170,4 @@
 #endif
 
-#if defined key_pisces 
-         !                                                         ! --------------------------- !
-         IF( cp_cfg == "orca" .AND. .NOT. lk_trc_c1d ) THEN      ! ORCA condiguration (not 1D) !
-            !                                                      ! --------------------------- !
-            ! set total alkalinity, phosphate, NO3 & silicate
-            ! total alkalinity
-            ! -----------------------------------------------
-            ztrasum = 0.e0             
-            DO jk = 1, jpk
-               DO jj = 1, jpj
-                  DO ji = 1, jpi
-                     ztrasum = ztrasum + trn(ji,jj,jk,jptal) * tmask(ji,jj,jk) * tmask_i(ji,jj)  &
-#  if defined key_off_degrad
-                        &              * facvol(ji,jj,jk)   &
-#  endif
-                        &              * e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk)
-                  END DO
-               END DO
-            END DO
-            IF( lk_mpp )   CALL mpp_sum( ztrasum )     ! sum over the global domain  
-
-
-            ztrasum = ztrasum / areatot * 1.e6
-            IF(lwp) WRITE(numout,*) 'TALK moyen ', ztrasum
-            trn(:,:,:,jptal) = trn(:,:,:,jptal) * alkmean / ztrasum
-            
-            ! phosphate
-            ! ---------
-            ztrasum = 0.e0
-            DO jk = 1, jpk
-               DO jj = 1, jpj
-                  DO ji = 1, jpi
-                     ztrasum = ztrasum + trn(ji,jj,jk,jppo4) * tmask(ji,jj,jk) * tmask_i(ji,jj)  &
-#  if defined key_off_degrad
-                     &              * facvol(ji,jj,jk)   &
-#  endif
-                     &              * e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk)
-                  END DO
-               END DO
-            END DO
-            IF( lk_mpp )   CALL mpp_sum( ztrasum )     ! sum over the global domain  
-            
-            ztrasum = ztrasum / areatot * 1.e6 / 122.
-            IF(lwp) WRITE(numout,*) 'PO4 moyen ', ztrasum 
-            trn(:,:,:,jppo4) = trn(:,:,:,jppo4) * po4mean / ztrasum
-            
-            ! NO3
-            ! ---
-            ztrasum = 0.e0
-            DO jk = 1, jpk
-               DO jj = 1, jpj
-                  DO ji = 1, jpi
-                     ztrasum = ztrasum + trn(ji,jj,jk,jpno3) * tmask(ji,jj,jk) * tmask_i(ji,jj)  &
-#  if defined key_off_degrad
-                     &              * facvol(ji,jj,jk)   &
-#  endif
-                     &              * e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk)
-                  END DO
-               END DO
-            END DO
-            IF( lk_mpp )   CALL mpp_sum( ztrasum )     ! sum over the global domain  
-            
-            ztrasum = ztrasum / areatot * 1.e6 / 7.6
-            IF(lwp) WRITE(numout,*) 'NO3 moyen ', ztrasum 
-            trn(:,:,:,jpno3) = trn(:,:,:,jpno3) * no3mean / ztrasum
-
-            ! Silicate
-            ! --------
-            ztrasum = 0.e0
-            DO jk = 1, jpk
-               DO jj = 1, jpj
-                  DO ji = 1, jpi
-                     ztrasum = ztrasum + trn(ji,jj,jk,jpsil) * tmask(ji,jj,jk) * tmask_i(ji,jj)   &
-#  if defined key_off_degrad
-                     &              * facvol(ji,jj,jk)   &
-#  endif
-                     &              * e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk)
-                  END DO
-               END DO
-            END DO
-            IF( lk_mpp )   CALL mpp_sum( ztrasum )     ! sum over the global domain  
-            
-            IF(lwp) WRITE(numout,*) 'SiO3 moyen ', ztrasum / areatot * 1.e6
-            ztrasum = ztrasum / areatot * 1.e6
-            trn(:,:,:,jpsil) = MIN( 400.e-6,trn(:,:,:,jpsil) * siomean / ztrasum ) 
-            !
-         ENDIF
-
-!#if defined key_kriest
-!      !! Initialize number of particles from a standart restart file
-!      !! The name of big organic particles jpgoc has been only change
-!      !! and replace by jpnum but the values here are concentration
-!      trn(:,:,:,jppoc) = trn(:,:,:,jppoc) + trn(:,:,:,jpnum)
-!      trn(:,:,:,jpnum) = trn(:,:,:,jppoc) / ( 6. * xkr_massp )
-!#endif
-         !!  Set hi (???) from  total alcalinity, borat (???), akb3 (???) and ak23 (???)
-         !!  ---------------------------------------------------------------------
-         DO jk = 1, jpk
-            DO jj = 1, jpj
-               DO ji = 1,jpi
-                  caralk = trn(ji,jj,jk,jptal) - borat(ji,jj,jk) / ( 1. + 1.e-8 / ( rtrn + akb3(ji,jj,jk) ) )
-                  co3    = ( caralk - trn(ji,jj,jk,jpdic) ) *       tmask(ji,jj,jk)   &
-                     &   +             0.5e-3               * ( 1.- tmask(ji,jj,jk) )
-                  bicarb = 2.* trn(ji,jj,jk,jpdic) - caralk
-                  hi(ji,jj,jk) = ( ak23(ji,jj,jk) * bicarb / co3 )   *       tmask(ji,jj,jk)   &
-                     &         +             1.0e-9                  * ( 1.- tmask(ji,jj,jk) )
-               END DO
-            END DO
-         END DO
-#endif
-
       CALL iom_close( numrtr )
       !
@@ -306,6 +184,4 @@
       !!
       INTEGER  :: ji, jj, jk, jn
-      REAL(wp) :: zdiag_var, zdiag_varmin, zdiag_varmax, zdiag_tot
-      REAL(wp) :: zder
       !!----------------------------------------------------------------------
 
@@ -352,40 +228,5 @@
 
        IF( kt == nitrst ) THEN
-          IF(lwp) WRITE(numout,*) '----TRACER STAT----'
-
-          zdiag_tot = 0.e0
-          DO jn = 1, jptra
-             zdiag_var    = 0.e0
-             zdiag_varmin = 0.e0
-             zdiag_varmax = 0.e0
-             DO ji = 1, jpi
-                DO jj = 1, jpj
-                   DO jk = 1,jpk
-                      zdiag_var = zdiag_var + trn(ji,jj,jk,jn) * tmask(ji,jj,jk) * tmask_i(ji,jj)   &
-#if defined key_off_degrad
-                         &   * facvol(ji,jj,jk)   &
-#endif
-                         &   * e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk)
-                   END DO
-                END DO
-             END DO
-             
-             zdiag_varmin = MINVAL( trn(:,:,:,jn), mask= ((tmask*SPREAD(tmask_i,DIM=3,NCOPIES=jpk).NE.0.)) )
-             zdiag_varmax = MAXVAL( trn(:,:,:,jn), mask= ((tmask*SPREAD(tmask_i,DIM=3,NCOPIES=jpk).NE.0.)) )
-             IF( lk_mpp ) THEN
-                CALL mpp_min( zdiag_varmin )      ! min over the global domain
-                CALL mpp_max( zdiag_varmax )      ! max over the global domain
-                CALL mpp_sum( zdiag_var    )      ! sum over the global domain
-             END IF
-             zdiag_tot = zdiag_tot + zdiag_var
-             zdiag_var = zdiag_var / areatot
-             IF(lwp) WRITE(numout,*) '   MEAN NO ', jn, ctrcnm(jn), ' = ', zdiag_var,   &
-                &                    ' MIN = ', zdiag_varmin, ' MAX = ', zdiag_varmax
-          END DO
-          
-          zder = ( ( zdiag_tot - trai ) / ( trai + 1.e-12 )  ) * 100._wp
-          IF(lwp) WRITE(numout,*) '   Integral of all tracers over the full domain  = ', zdiag_tot
-          IF(lwp) WRITE(numout,*) '   Drift of the sum of all tracers =', zder, ' %'
-          
+          CALL trc_rst_stat            ! statistics
           CALL iom_close( numrtw )     ! close the restart file (only at last time step)
           lrst_trc = .FALSE.
@@ -393,4 +234,187 @@
       !
    END SUBROUTINE trc_rst_wri
+
+# if defined key_pisces 
+
+   SUBROUTINE trc_rst_ini 
+      !!----------------------------------------------------------------------
+      !!                    ***  trc_rst_ini  ***
+      !!
+      !! ** purpose  : Initialisation of some variables ( hi
+      !!----------------------------------------------------------------------
+      INTEGER  :: ji, jj, jk, jn  
+      REAL(wp) ::  &
+         alkmean = 2426. ,  & ! mean value of alkalinity ( Glodap ; for Goyet 2391. )
+         po4mean = 2.165 ,  & ! mean value of phosphates
+         no3mean = 30.90 ,  & ! mean value of nitrate
+         siomean = 91.51      ! mean value of silicate
+      
+      REAL(wp) ::   ztrasum
+      REAL(wp) ::   caralk, bicarb, co3
+
+      IF(lwp)  WRITE(numout,*)
+
+      IF( cp_cfg == "orca" .AND. .NOT. lk_trc_c1d ) THEN      ! ORCA condiguration (not 1D) !
+         !                                                    ! --------------------------- !
+         ! set total alkalinity, phosphate, NO3 & silicate
+
+         ! total alkalinity
+         ztrasum = 0.e0             
+         DO jk = 1, jpk
+            DO jj = 1, jpj
+               DO ji = 1, jpi
+                  ztrasum = ztrasum + trn(ji,jj,jk,jptal) * tmask(ji,jj,jk) * tmask_i(ji,jj)  &
+#  if defined key_off_degrad
+                     &              * facvol(ji,jj,jk)   &
+#  endif
+                     &              * e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk)
+               END DO
+            END DO
+         END DO
+         IF( lk_mpp )   CALL mpp_sum( ztrasum )     ! sum over the global domain  
+         
+         ztrasum = ztrasum / areatot * 1.e6
+         IF(lwp) WRITE(numout,*) '       TALK mean : ', ztrasum
+         trn(:,:,:,jptal) = trn(:,:,:,jptal) * alkmean / ztrasum
+            
+         ! phosphate
+         ztrasum = 0.e0
+         DO jk = 1, jpk
+            DO jj = 1, jpj
+               DO ji = 1, jpi
+                  ztrasum = ztrasum + trn(ji,jj,jk,jppo4) * tmask(ji,jj,jk) * tmask_i(ji,jj)  &
+#  if defined key_off_degrad
+                     &              * facvol(ji,jj,jk)   &
+#  endif
+                     &              * e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk)
+               END DO
+            END DO
+         END DO
+         IF( lk_mpp )   CALL mpp_sum( ztrasum )     ! sum over the global domain  
+         
+         ztrasum = ztrasum / areatot * 1.e6 / 122.
+         IF(lwp) WRITE(numout,*) '       PO4  mean : ', ztrasum
+         trn(:,:,:,jppo4) = trn(:,:,:,jppo4) * po4mean / ztrasum
+        
+         ! Nitrates          
+         ztrasum = 0.e0
+         DO jk = 1, jpk
+            DO jj = 1, jpj
+               DO ji = 1, jpi
+                  ztrasum = ztrasum + trn(ji,jj,jk,jpno3) * tmask(ji,jj,jk) * tmask_i(ji,jj)  &
+#  if defined key_off_degrad
+                     &              * facvol(ji,jj,jk)   &
+#  endif
+                     &              * e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk)
+               END DO
+            END DO
+         END DO
+         IF( lk_mpp )   CALL mpp_sum( ztrasum )     ! sum over the global domain  
+         
+         ztrasum = ztrasum / areatot * 1.e6 / 7.6
+         IF(lwp) WRITE(numout,*) '       NO3  mean : ', ztrasum
+         trn(:,:,:,jpno3) = trn(:,:,:,jpno3) * no3mean / ztrasum
+         
+         ! Silicate
+         ztrasum = 0.e0
+         DO jk = 1, jpk
+            DO jj = 1, jpj
+               DO ji = 1, jpi
+                  ztrasum = ztrasum + trn(ji,jj,jk,jpsil) * tmask(ji,jj,jk) * tmask_i(ji,jj)   &
+#  if defined key_off_degrad
+                     &              * facvol(ji,jj,jk)   &
+#  endif
+                     &              * e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk)
+               END DO
+            END DO
+         END DO
+         IF( lk_mpp )   CALL mpp_sum( ztrasum )     ! sum over the global domain  
+         ztrasum = ztrasum / areatot * 1.e6
+         IF(lwp) WRITE(numout,*) '       SiO3 mean : ', ztrasum
+         trn(:,:,:,jpsil) = MIN( 400.e-6,trn(:,:,:,jpsil) * siomean / ztrasum ) 
+         !
+      ENDIF
+
+!#if defined key_kriest
+!     !! Initialize number of particles from a standart restart file
+!     !! The name of big organic particles jpgoc has been only change
+!     !! and replace by jpnum but the values here are concentration
+!     trn(:,:,:,jppoc) = trn(:,:,:,jppoc) + trn(:,:,:,jpnum)
+!     trn(:,:,:,jpnum) = trn(:,:,:,jppoc) / ( 6. * xkr_massp )
+!#endif
+      !!  Set hi (???) from  total alcalinity, borat (???), akb3 (???) and ak23 (???)
+      !!  ---------------------------------------------------------------------
+      DO jk = 1, jpk
+         DO jj = 1, jpj
+            DO ji = 1,jpi
+               caralk = trn(ji,jj,jk,jptal) - borat(ji,jj,jk) / ( 1. + 1.e-8 / ( rtrn + akb3(ji,jj,jk) ) )
+               co3    = ( caralk - trn(ji,jj,jk,jpdic) ) *       tmask(ji,jj,jk)   &
+                  &   +             0.5e-3               * ( 1.- tmask(ji,jj,jk) )
+               bicarb = 2.* trn(ji,jj,jk,jpdic) - caralk
+               hi(ji,jj,jk) = ( ak23(ji,jj,jk) * bicarb / co3 )   *       tmask(ji,jj,jk)   &
+                  &         +             1.0e-9                  * ( 1.- tmask(ji,jj,jk) )
+            END DO
+         END DO
+      END DO
+
+   END SUBROUTINE trc_rst_ini
+
+#endif
+      !!----------------------------------------------------------------------
+
+   SUBROUTINE trc_rst_stat
+      !!----------------------------------------------------------------------
+      !!                    ***  trc_rst_stat  ***
+      !!
+      !! ** purpose  :   Compute tracers statistics
+      !!----------------------------------------------------------------------
+
+      INTEGER  :: ji, jj, jk, jn
+      REAL(wp) :: zdiag_var, zdiag_varmin, zdiag_varmax, zdiag_tot
+      REAL(wp) :: zder
+      !!----------------------------------------------------------------------
+
+
+      IF( lwp ) THEN
+         WRITE(numout,*) 
+         WRITE(numout,*) '           ----TRACER STAT----             '
+         WRITE(numout,*) 
+      ENDIF
+      
+      zdiag_tot = 0.e0
+      DO jn = 1, jptra
+         zdiag_var    = 0.e0
+         zdiag_varmin = 0.e0
+         zdiag_varmax = 0.e0
+         DO ji = 1, jpi
+            DO jj = 1, jpj
+               DO jk = 1,jpk
+                  zdiag_var = zdiag_var + trn(ji,jj,jk,jn) * tmask(ji,jj,jk) * tmask_i(ji,jj)   &
+#if defined key_off_degrad
+                     &   * facvol(ji,jj,jk)   &
+#endif
+                     &   * e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk)
+               END DO
+            END DO
+         END DO
+         
+         zdiag_varmin = MINVAL( trn(:,:,:,jn), mask= ((tmask*SPREAD(tmask_i,DIM=3,NCOPIES=jpk).NE.0.)) )
+         zdiag_varmax = MAXVAL( trn(:,:,:,jn), mask= ((tmask*SPREAD(tmask_i,DIM=3,NCOPIES=jpk).NE.0.)) )
+         IF( lk_mpp ) THEN
+            CALL mpp_min( zdiag_varmin )      ! min over the global domain
+            CALL mpp_max( zdiag_varmax )      ! max over the global domain
+            CALL mpp_sum( zdiag_var    )      ! sum over the global domain
+         END IF
+         zdiag_tot = zdiag_tot + zdiag_var
+         zdiag_var = zdiag_var / areatot
+         IF(lwp) WRITE(numout,*) '   MEAN NO ', jn, ctrcnm(jn), ' = ', zdiag_var,   &
+            &                    ' MIN = ', zdiag_varmin, ' MAX = ', zdiag_varmax
+      END DO
+      
+      zder = ( ( zdiag_tot - trai ) / ( trai + 1.e-12 )  ) * 100._wp
+      IF(lwp) WRITE(numout,*) '   Integral of all tracers over the full domain  = ', zdiag_tot
+      IF(lwp) WRITE(numout,*) '   Drift of the sum of all tracers =', zder, ' %'
+      
+   END SUBROUTINE trc_rst_stat
 
 #else
