Index: /branches/dev_001_GM/NEMO/TOP_SRC/LOBSTER/par_lobster.F90
===================================================================
--- /branches/dev_001_GM/NEMO/TOP_SRC/LOBSTER/par_lobster.F90	(revision 770)
+++ /branches/dev_001_GM/NEMO/TOP_SRC/LOBSTER/par_lobster.F90	(revision 771)
@@ -48,6 +48,6 @@
 
    ! Starting/ending LOBSTER do-loop indices (N.B. no LOBSTER : jpl_lob < jpf_lob the do-loop are never done)
-   INTEGER, PUBLIC, PARAMETER ::   jpf_lob =          1       !: First index of LOBSTER tracers
-   INTEGER, PUBLIC, PARAMETER ::   jpl_lob = 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
 
    !!======================================================================
Index: /branches/dev_001_GM/NEMO/TOP_SRC/LOBSTER/trcini_lobster.F90
===================================================================
--- /branches/dev_001_GM/NEMO/TOP_SRC/LOBSTER/trcini_lobster.F90	(revision 770)
+++ /branches/dev_001_GM/NEMO/TOP_SRC/LOBSTER/trcini_lobster.F90	(revision 771)
@@ -18,4 +18,6 @@
    USE par_trc         ! TOP parameters
    USE trccfc          ! CFC sms trends
+   USE sms             ! Source Minus Sink variables
+   USE oce_trc         ! ocean variables
 
    IMPLICIT NONE
@@ -28,5 +30,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 2.0 , LOCEAN-IPSL (2007) 
-   !! $Id:$ 
+   !! $Id$ 
    !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -40,5 +42,4 @@
       !!----------------------------------------------------------------------
       INTEGER  ::   ji, jj, jk, jn
-      REAL(wp) ::   zdm0(jpi,jpj,jpk), zrro(jpi,jpj), zfluo, zfluu
       REAL(wp) ::   ztest, zfluo, zfluu
       REAL(wp), DIMENSION(jpi,jpj)     ::   zrro
Index: /branches/dev_001_GM/NEMO/TOP_SRC/MY_TRC/par_my_trc.F90
===================================================================
--- /branches/dev_001_GM/NEMO/TOP_SRC/MY_TRC/par_my_trc.F90	(revision 770)
+++ /branches/dev_001_GM/NEMO/TOP_SRC/MY_TRC/par_my_trc.F90	(revision 771)
@@ -46,6 +46,6 @@
 
    ! Starting/ending PISCES do-loop indices (N.B. no PISCES : jpl_pcs < jpf_pcs the do-loop are never done)
-   INTEGER, PUBLIC, PARAMETER ::   jpf_myt = jp_lpc + 1           !: First index of CFC passive tracers
-   INTEGER, PUBLIC, PARAMETER ::   jpl_myt = jp_lpc + jp_my_trc   !: Last  index of CFC passive tracers
+   INTEGER, PUBLIC, PARAMETER ::   jp_myt0 = jp_lpc + 1           !: First index of CFC passive tracers
+   INTEGER, PUBLIC, PARAMETER ::   jp_myt1 = jp_lpc + jp_my_trc   !: Last  index of CFC passive tracers
 
    !!======================================================================
Index: /branches/dev_001_GM/NEMO/TOP_SRC/PISCES/par_pisces.F90
===================================================================
--- /branches/dev_001_GM/NEMO/TOP_SRC/PISCES/par_pisces.F90	(revision 770)
+++ /branches/dev_001_GM/NEMO/TOP_SRC/PISCES/par_pisces.F90	(revision 771)
@@ -107,6 +107,6 @@
 
    ! Starting/ending PISCES do-loop indices (N.B. no PISCES : jpl_pcs < jpf_pcs the do-loop are never done)
-   INTEGER, PUBLIC, PARAMETER ::   jpf_pcs = jp_l + 1           !: First index of CFC passive tracers
-   INTEGER, PUBLIC, PARAMETER ::   jpl_pcs = jp_l + jp_pisces   !: Last  index of CFC passive tracers
+   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
 
    !!======================================================================
Index: /branches/dev_001_GM/NEMO/TOP_SRC/PISCES/trcini_pisces.F90
===================================================================
--- /branches/dev_001_GM/NEMO/TOP_SRC/PISCES/trcini_pisces.F90	(revision 770)
+++ /branches/dev_001_GM/NEMO/TOP_SRC/PISCES/trcini_pisces.F90	(revision 771)
@@ -10,12 +10,13 @@
    !!             2.0  !  2007-12  (C. Ethe, G. Madec) from trcini.pisces.h90
    !!----------------------------------------------------------------------
-#if defined key_trc_pisces  &&  defined key_trc_kriest
-   !!---------------------------------------------------------------------
-   !!   'key_trc_pisces' & 'key_trc_kriest'         PISCES bio-model + ???
-   !!---------------------------------------------------------------------
+#if defined key_trc_pisces
+   !!----------------------------------------------------------------------
+   !!   'key_trc_pisces'                                   PISCES bio-model
+   !!----------------------------------------------------------------------
    !! trc_ini_pisces   : PISCES biochemical model initialisation
    !!----------------------------------------------------------------------
    USE par_trc         ! TOP parameters
    USE trccfc          ! CFC sms trends
+   USE sms             ! Source Minus Sink variables
    USE iom
 
@@ -29,5 +30,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 2.0 , LOCEAN-IPSL (2007) 
-   !! $Id:$ 
+   !! $Id$ 
    !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -41,12 +42,12 @@
       !! ** Purpose :   Initialisation of the PISCES biochemical model
       !!----------------------------------------------------------------------
-      INTEGER :: ji, jj, jk, jm
-      INTEGER :: ichl, iband
-      INTEGER , PARAMETER ::   jpmois = 12, jpan   = 1 
-
-      REAL(wp) :: zcoef
-      REAL(wp) :: ztoto,expide,denitide,ztra,zmaskt
-      REAL(wp) , DIMENSION (jpi,jpj) :: riverdoc,river,ndepo
-      REAL(wp) , DIMENSION (jpi,jpj,jpk) :: cmask
+      INTEGER ::   ji, jj, jk, jm
+      INTEGER ::   ichl, iband
+      INTEGER , PARAMETER ::   jpmois = 12, jpan = 1 
+
+      REAL(wp) ::   zcoef
+      REAL(wp) ::   ztoto, expide, denitide,zmaskt
+      REAL(wp) , DIMENSION (jpi,jpj)     ::   riverdoc, river, ndepo
+      REAL(wp) , DIMENSION (jpi,jpj,jpk) ::   cmask
 
       INTEGER :: numriv, numdust, numbath, numdep
@@ -56,5 +57,5 @@
       INTEGER  ::   jn, kiter
       REAL(wp) ::   znum, zdiv
-      REAL(wp) ::   zws,zwr, zwl,wmax, xnummax, &
+      REAL(wp) ::   zws, zwr, zwl,wmax, xnummax
       REAL(wp) ::   zmin, zmax, zl, zr, xacc
 #endif
@@ -201,5 +202,7 @@
 
 #if defined key_trc_kriest
-      !----------------------------------------------------------------------
+      !!---------------------------------------------------------------------
+      !!    'key_trc_kriest'                                              ???
+      !!---------------------------------------------------------------------
       !  COMPUTATION OF THE VERTICAL PROFILE OF MAXIMUM SINKING SPEED
       !  Search of the maximum number of particles in aggregates for each k-level.  
@@ -569,3 +572,2 @@
    !!======================================================================
 END MODULE trcini_pisces
-
Index: /branches/dev_001_GM/NEMO/TOP_SRC/TRP/trcrad.F90
===================================================================
--- /branches/dev_001_GM/NEMO/TOP_SRC/TRP/trcrad.F90	(revision 770)
+++ /branches/dev_001_GM/NEMO/TOP_SRC/TRP/trcrad.F90	(revision 771)
@@ -4,9 +4,13 @@
    !! Ocean passive tracers:  correction of negative concentrations
    !!======================================================================
+   !! History :   -   !  01-01  (O. Aumont & E. Kestenare)  Original code
+   !!            1.0  !  04-03  (C. Ethe)  free form F90
+   !!----------------------------------------------------------------------
 #if defined key_passivetrc
+   !!----------------------------------------------------------------------
+   !!   'key_passivetrc'                                    Passive tracers
    !!----------------------------------------------------------------------
    !!   trc_rad    : correction of negative concentrations
    !!----------------------------------------------------------------------
-   !! * Modules used
    USE oce_trc             ! ocean dynamics and tracers variables
    USE trc                 ! ocean passive tracers variables
@@ -17,13 +21,14 @@
    PRIVATE
 
-   !! * Routine accessibility
    PUBLIC trc_rad        ! routine called by trcstp.F90
+
    !! * Substitutions
 #  include "passivetrc_substitute.h90"
    !!----------------------------------------------------------------------
-   !!   TOP 1.0 , LOCEAN-IPSL (2005) 
-   !! $Header$ 
-   !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 
+   !! NEMO/TOP 1.0 , LOCEAN-IPSL (2005) 
+   !! $Id:$ 
+   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
+   
 CONTAINS
 
@@ -32,23 +37,20 @@
       !!                  ***  ROUTINE trc_rad  ***
       !!
-      !! ** Purpose : "crappy" routine to correct artificial negative
-      !!      concentrations due to isopycnal scheme
+      !! ** Purpose :   "crappy" routine to correct artificial negative
+      !!              concentrations due to isopycnal scheme
       !!
-      !! ** Method  : Set negative concentrations to zero
-      !!              compute the corresponding mass added to the tracers
-      !!              and remove it when possible 
+      !! ** Method  : - PISCES or LOBSTER: Set negative concentrations to zero
+      !!                while computing the corresponding tracer content that
+      !!                is added to the tracers. Then, adjust the tracer 
+      !!                concentration using a multiplicative factor so that 
+      !!                the total tracer concentration is preserved.
+      !!              - CFC: simply set to zero the negative CFC concentration
+      !!                (the total CFC content is not strictly preserved)
+      !!----------------------------------------------------------------------
+      INTEGER, INTENT( in ) ::   kt   ! ocean time-step index      
       !!
-      !! History :
-      !!   8.2  !  01-01  (O. Aumont & E. Kestenare)  Original code
-      !!   9.0  !  04-03  (C. Ethe)  free form F90
-      !!----------------------------------------------------------------------
-      !! * Arguments
-      INTEGER, INTENT( in ) ::   kt       ! ocean time-step index
-      
-      !! * Local declarations
-      INTEGER ::  ji, jj, jk, jn             ! dummy loop indices
-#if defined key_trc_pisces || defined key_trc_lobster1
-      REAL(wp) :: zvolk, trcorb, trmasb ,trcorn, trmasn  
-#endif
+      INTEGER  ::  ji, jj, jk, jn     ! dummy loop indices
+      REAL(wp) :: zvolk, ztrcorb, ztrmasb   ! temporary scalars
+      REAL(wp) :: zcoef, ztrcorn, ztrmasn   !    "         "
       CHARACTER (len=22) :: charout
       !!----------------------------------------------------------------------
@@ -60,94 +62,93 @@
       ENDIF
 
-
-#if defined key_cfc
-      DO jn = 1, jptra
-         DO jk = 1, jpkm1
-            DO jj = 1, jpj
-               DO ji = 1, jpi
-                  trn(ji,jj,jk,jn) = MAX( 0. , trn(ji,jj,jk,jn) )
-                  trb(ji,jj,jk,jn) = MAX( 0. , trb(ji,jj,jk,jn) )
-               END DO
-            END DO
-         END DO
-      END DO
-      
-#elif defined key_trc_pisces || defined key_trc_lobster1
-
-      DO jn = 1, jptra
-         trcorb = 0.
-         trmasb = 0.
-         trcorn = 0.
-         trmasn = 0.
-         DO jk = 1, jpkm1
-            DO jj = 1, jpj
-               DO ji = 1, jpi
-                  zvolk = e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) &
-#if defined key_off_degrad
-                  &  * facvol(ji,jj,jk) &
-#endif
-                  &  * tmask(ji,jj,jk) * tmask_i(ji,jj)
-
-                  trcorb = trcorb + MIN( 0., trb(ji,jj,jk,jn) )  * zvolk
-                  trcorn = trcorn + MIN( 0., trn(ji,jj,jk,jn) )  * zvolk
-
-                  trb(ji,jj,jk,jn) = MAX( 0. , trb(ji,jj,jk,jn) )
-                  trn(ji,jj,jk,jn) = MAX( 0. , trn(ji,jj,jk,jn) )
-
-                  trmasb = trmasb + trb(ji,jj,jk,jn) * zvolk
-                  trmasn = trmasn + trn(ji,jj,jk,jn) * zvolk
-               END DO
-            END DO
-         END DO
-
-         IF( lk_mpp ) THEN
-           CALL mpp_sum( trcorb )   ! sum over the global domain
-           CALL mpp_sum( trcorn )   ! sum over the global domain
-           CALL mpp_sum( trmasb )   ! sum over the global domain
-           CALL mpp_sum( trmasn )   ! sum over the global domain
-         ENDIF
-
-         IF( trcorb /= 0 ) THEN
-            DO jk = 1, jpkm1
-               DO jj = 1, jpj
-                  DO ji = 1, jpi
-                     trb(ji,jj,jk,jn) = MAX( 0. , trb(ji,jj,jk,jn) )
-                     trb(ji,jj,jk,jn) = trb(ji,jj,jk,jn) * ( 1. + trcorb/trmasb ) * tmask(ji,jj,jk)
-                  END DO
-               END DO
-            END DO
-         ENDIF
-
-         IF( trcorn /= 0) THEN
+      IF( lk_trc_cfc ) THEN                             ! CFC model
+         DO jn = 1, jptra
             DO jk = 1, jpkm1
                DO jj = 1, jpj
                   DO ji = 1, jpi
                      trn(ji,jj,jk,jn) = MAX( 0. , trn(ji,jj,jk,jn) )
-                     trn(ji,jj,jk,jn) = trn(ji,jj,jk,jn) * ( 1. + trcorn/trmasn ) * tmask(ji,jj,jk)
+                     trb(ji,jj,jk,jn) = MAX( 0. , trb(ji,jj,jk,jn) )
                   END DO
                END DO
             END DO
-         ENDIF
+         END DO
+      ENDIF 
 
-      END DO
-     
-#endif
+      IF( lk_trc_pisces .OR. lk_trc_lobster ) THEN      ! PISCES or LOBSTER bio-model
+         DO jn = 1, jptra
+            ztrcorb = 0.e0
+            ztrmasb = 0.e0
+            ztrcorn = 0.e0
+            ztrmasn = 0.e0
+            DO jk = 1, jpkm1
+               DO jj = 1, jpj
+                  DO ji = 1, jpi
+                     zvolk  = e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk)   &
+# if defined key_off_degrad
+                        &   * facvol(ji,jj,jk)   &
+# endif
+                        &   * tmask(ji,jj,jk) * tmask_i(ji,jj)
 
-      IF(ln_ctl)   THEN  ! print mean trends (used for debugging)
+                     ztrcorb = ztrcorb + MIN( 0., trb(ji,jj,jk,jn) )  * zvolk
+                     ztrcorn = ztrcorn + MIN( 0., trn(ji,jj,jk,jn) )  * zvolk
+
+                     trb(ji,jj,jk,jn) = MAX( 0. , trb(ji,jj,jk,jn) )
+                     trn(ji,jj,jk,jn) = MAX( 0. , trn(ji,jj,jk,jn) )
+
+                     ztrmasb = ztrmasb + trb(ji,jj,jk,jn) * zvolk
+                     ztrmasn = ztrmasn + trn(ji,jj,jk,jn) * zvolk
+                  END DO
+               END DO
+            END DO
+            IF( lk_mpp ) THEN
+               CALL mpp_sum( ztrcorb )      ! sum over the global domain
+               CALL mpp_sum( ztrcorn )      ! sum over the global domain
+               CALL mpp_sum( ztrmasb )      ! sum over the global domain
+               CALL mpp_sum( ztrmasn )      ! sum over the global domain
+            ENDIF
+
+            IF( ztrcorb /= 0 ) THEN
+               zcoef = 1. + ztrcorb / ztrmasb
+               DO jk = 1, jpkm1
+                  DO jj = 1, jpj
+                     DO ji = 1, jpi
+                         trb(ji,jj,jk,jn) = MAX( 0. , trb(ji,jj,jk,jn) )               !!gm bug already done just above
+                        trb(ji,jj,jk,jn) = trb(ji,jj,jk,jn) * zcoef * tmask(ji,jj,jk)
+                     END DO
+                  END DO
+               END DO
+            ENDIF
+
+            IF( ztrcorn /= 0 ) THEN
+               zcoef = 1. + ztrcorn / ztrmasn
+               DO jk = 1, jpkm1
+                  DO jj = 1, jpj
+                     DO ji = 1, jpi
+                        trn(ji,jj,jk,jn) = MAX( 0. , trn(ji,jj,jk,jn) )                !!gm bug already done just above
+                        trn(ji,jj,jk,jn) = trn(ji,jj,jk,jn) * zcoef * tmask(ji,jj,jk)
+                     END DO
+                  END DO
+               END DO
+            ENDIF
+            !
+         END DO
+         !
+      ENDIF
+      !
+      IF(ln_ctl) THEN      ! print mean trends (used for debugging)
          WRITE(charout, FMT="('rad')")
-         CALL prt_ctl_trc_info(charout)
-         CALL prt_ctl_trc(tab4d=trn, mask=tmask, clinfo=ctrcnm)
+         CALL prt_ctl_trc_info( charout )
+         CALL prt_ctl_trc( tab4d=trn, mask=tmask, clinfo=ctrcnm )
       ENDIF
-
-      
+      !
    END SUBROUTINE trc_rad
 
 #else
    !!----------------------------------------------------------------------
-   !!   Dummy module :                      NO passive tracer
+   !!   Dummy module :                                         NO TOP model
    !!----------------------------------------------------------------------
 CONTAINS
-   SUBROUTINE trc_rad (kt )              ! Empty routine
-      INTEGER, INTENT(in) :: kt
+   SUBROUTINE trc_rad( kt )              ! Empty routine
+      INTEGER, INTENT(in) ::   kt
       WRITE(*,*) 'trc_rad: You should not have seen this print! error?', kt
    END SUBROUTINE trc_rad
Index: /branches/dev_001_GM/NEMO/TOP_SRC/TRP/trctrp.F90
===================================================================
--- /branches/dev_001_GM/NEMO/TOP_SRC/TRP/trctrp.F90	(revision 770)
+++ /branches/dev_001_GM/NEMO/TOP_SRC/TRP/trctrp.F90	(revision 771)
@@ -4,13 +4,15 @@
    !! Ocean Physics    : manage the passive tracer transport
    !!======================================================================
+   !! History :   1.0  !  2004-03 (C. Ethe) Original code
+   !!----------------------------------------------------------------------
 #if defined key_passivetrc
+   !!----------------------------------------------------------------------
+   !!   'key_passivetrc'                                         TOP models
    !!----------------------------------------------------------------------
    !!   trc_trp        : passive tracer transport
    !!----------------------------------------------------------------------
-   !! * Modules used
    USE oce_trc         ! ocean dynamics and active tracers variables
    USE trc             ! ocean passive tracers variables 
-
-   USE trctrp_lec      ! passive tracers transport
+   USE trctrp_lec      ! passive tracers transport parameters
 
    USE trcbbl          ! bottom boundary layer               (trc_bbl routine)
@@ -40,17 +42,15 @@
    USE zpshde_trc      ! partial step: hor. derivative   (zps_hde_trc routine)
 
-
    IMPLICIT NONE
    PRIVATE
 
-   !! * Routine accessibility
-   PUBLIC trc_trp            ! called by trc_stp
+   PUBLIC   trc_trp    ! called by trc_stp
 
    !! * Substitutions
 #  include "domzgr_substitute.h90"
    !!----------------------------------------------------------------------
-   !!   TOP 1.0 , LOCEAN-IPSL (2005) 
-   !! $Header$ 
-   !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 
+   !! NEMO/TOP 1.0 , LOCEAN-IPSL (2005) 
+   !! $Id$ 
+   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
 
@@ -61,79 +61,75 @@
       !!                     ***  ROUTINE trc_trp  ***
       !!                      
-      !! ** Purpose : Management of passive tracers transport
+      !! ** Purpose :   Management of passive tracers transport
       !! 
-      !! ** Method  : 
-      !!              Compute the passive tracers trends 
-      !!              Update the passive tracers
-      !!
-      !! History :
-      !!   9.0  !  04-03  (C. Ethe)  Original
+      !! ** Method  : - Compute the passive tracers trends 
+      !!              - Update the passive tracers
       !!----------------------------------------------------------------------
-      !! * Arguments
       INTEGER, INTENT( in ) ::  kt  ! ocean time-step index
       !! ---------------------------------------------------------------------
 
-      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
-      ! Passitive tracers
-      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
-      !-----------------------------------------------------------------------
-
- 
                                CALL trc_sbc( kt )            ! surface boundary condition
 # if defined key_trcbbc
+!!gm bug : this should be control during the initialisation phase, not here!
        CALL ctl_stop( '  Bottom heat flux not yet implemented with passive tracer         ' &
            &          '  Check in trc_trp routine ' )
 # endif 
       !                                                      ! bottom boundary condition
-      IF( lk_trcbbl_dif    )   CALL trc_bbl_dif( kt )                ! diffusive bottom boundary layer scheme
-      IF( lk_trcbbl_adv    )   CALL trc_bbl_adv( kt )                ! advective (and/or diffusive) bottom boundary layer scheme
+      IF( lk_trcbbl_dif    )   CALL trc_bbl_dif( kt )            ! diffusive bottom boundary layer scheme
+      IF( lk_trcbbl_adv    )   CALL trc_bbl_adv( kt )            ! advective (and/or diffusive) bottom boundary layer scheme
 
       IF( lk_trcdmp        )   CALL trc_dmp( kt )            ! internal damping trends
 
       !                                                      ! horizontal & vertical advection
-      IF( ln_trcadv_cen2   )   CALL trc_adv_cen2  ( kt )             ! 2nd order centered scheme
-      IF( ln_trcadv_muscl  )   CALL trc_adv_muscl ( kt )             ! MUSCL scheme
-      IF( ln_trcadv_muscl2 )   CALL trc_adv_muscl2( kt )             ! MUSCL2 scheme
-      IF( ln_trcadv_tvd    )   CALL trc_adv_tvd   ( kt )             ! TVD scheme
-      IF( ln_trcadv_smolar )   CALL trc_adv_smolar( kt )             ! SMOLARKIEWICZ scheme
+      IF( ln_trcadv_cen2   )   CALL trc_adv_cen2  ( kt )         ! 2nd order centered scheme
+      IF( ln_trcadv_muscl  )   CALL trc_adv_muscl ( kt )         ! MUSCL scheme
+      IF( ln_trcadv_muscl2 )   CALL trc_adv_muscl2( kt )         ! MUSCL2 scheme
+      IF( ln_trcadv_tvd    )   CALL trc_adv_tvd   ( kt )         ! TVD scheme
+      IF( ln_trcadv_smolar )   CALL trc_adv_smolar( kt )         ! SMOLARKIEWICZ scheme
 
  
       IF( n_cla == 1   ) THEN
+!!gm bug : this should be control during the initialisation phase, not here!
          WRITE(ctmp1,*) ' Cross Land Advection not yet implemented with passive tracer n_cla = ',n_cla
-         CALL ctl_stop(ctmp1)
+         CALL ctl_stop( ctmp1 )
       ENDIF
 
       !                                                      ! lateral mixing 
-      IF( l_trcldf_bilapg  )   CALL trc_ldf_bilapg ( kt )            ! s-coord. horizontal bilaplacian
-      IF( l_trcldf_bilap   )   CALL trc_ldf_bilap  ( kt )            ! iso-level bilaplacian 
-      IF( l_trcldf_iso     )   CALL trc_ldf_iso    ( kt )            ! iso-neutral laplacian 
-      IF( l_trcldf_iso_zps )   CALL trc_ldf_iso_zps( kt )            ! partial step iso-neutral laplacian
-      IF( l_trcldf_lap     )   CALL trc_ldf_lap    ( kt )            ! iso-level laplacian
+      IF( l_trcldf_bilapg  )   CALL trc_ldf_bilapg ( kt )        ! s-coord. horizontal bilaplacian
+      IF( l_trcldf_bilap   )   CALL trc_ldf_bilap  ( kt )        ! iso-level bilaplacian 
+      IF( l_trcldf_iso     )   CALL trc_ldf_iso    ( kt )        ! iso-neutral laplacian 
+      IF( l_trcldf_iso_zps )   CALL trc_ldf_iso_zps( kt )        ! partial step iso-neutral laplacian
+      IF( l_trcldf_lap     )   CALL trc_ldf_lap    ( kt )        ! iso-level laplacian
  
       !                                                      ! vertical diffusion
-      IF( l_trczdf_exp     )   CALL trc_zdf_exp( kt )                ! explicit time stepping (time splitting scheme)
-      IF( l_trczdf_imp     )   CALL trc_zdf_imp( kt )                ! implicit time stepping (euler backward)
-      IF( l_trczdf_iso     )   CALL trc_zdf_iso( kt )                ! isopycnal
-      IF( l_trczdf_iso_vo  )   CALL trc_zdf_iso_vopt( kt )           ! vector opt. isopycnal
+      IF( l_trczdf_exp     )   CALL trc_zdf_exp     ( kt )       ! explicit time stepping (time splitting scheme)
+      IF( l_trczdf_imp     )   CALL trc_zdf_imp     ( kt )       ! implicit time stepping (euler backward)
+      IF( l_trczdf_iso     )   CALL trc_zdf_iso     ( kt )       ! isopycnal
+      IF( l_trczdf_iso_vo  )   CALL trc_zdf_iso_vopt( kt )       ! vector opt. isopycnal
 
                                CALL trc_nxt( kt )            ! tracer fields at next time step
  
-                               CALL trc_rad( kt )            ! Correct artificial negative concentrations for isopycnal scheme
+                               CALL trc_rad( kt )            ! Correct artificial negative concentrations
+      !                                                      ! especially useful when isopycnal mixing is used
       !                                                      
 
-      IF( ln_zps .AND. .NOT. lk_trccfg_1d ) &
-         &                     CALL zps_hde_trc( kt, trb, gtru, gtrv )  ! Partial steps: now horizontal gradient
-      !                                                                 ! of passive tracers at the bottom ocean level
-
-
-    END SUBROUTINE trc_trp
+      IF( ln_zps .AND. .NOT. lk_trccfg_1d )   &              ! Partial steps: now horizontal gradient of passive
+         &                     CALL zps_hde_trc( kt, trb, gtru, gtrv )       ! tracers at the bottom ocean level
+      !
+      IF(ln_ctl) THEN      ! print mean trends (used for debugging)
+         WRITE(charout, FMT="('TRP')")
+         CALL prt_ctl_trc_info( charout )
+         CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm )
+      ENDIF
+      !
+   END SUBROUTINE trc_trp
 
 #else
    !!----------------------------------------------------------------------
-   !!   Dummy module :                      NO passive tracers
+   !!   Dummy module :                                        No TOP models
    !!----------------------------------------------------------------------
 CONTAINS
-   SUBROUTINE trc_trp (kt )              ! Empty routine
-      INTEGER, INTENT(in) :: kt
+   SUBROUTINE trc_trp( kt )              ! Empty routine
+      INTEGER, INTENT(in) ::   kt
       WRITE(*,*) 'trc_trp: You should not have seen this print! error?', kt
    END SUBROUTINE trc_trp
Index: /branches/dev_001_GM/NEMO/TOP_SRC/TRP/trctrp_ctl.F90
===================================================================
--- /branches/dev_001_GM/NEMO/TOP_SRC/TRP/trctrp_ctl.F90	(revision 770)
+++ /branches/dev_001_GM/NEMO/TOP_SRC/TRP/trctrp_ctl.F90	(revision 771)
@@ -1,23 +1,28 @@
 MODULE trctrp_ctl
-   !!==============================================================================
+   !!======================================================================
    !!                       ***  MODULE  trctrp_ctl  ***
-   !! Ocean passive tracers:  transport option control
-   !!==============================================================================
+   !! TOP :   transport option control
+   !!======================================================================
+   !! History :   1.0  !  2004-03 (C. Ethe) Original code
+   !!----------------------------------------------------------------------
 #if defined key_passivetrc
    !!----------------------------------------------------------------------
+   !!   'key_passivetrc'                                         TOP models
+   !!----------------------------------------------------------------------
    !!   trc_trp_ctl  : control the different options of transport
-   !!----------------------------------------------------------------------
-   !! * Modules used
-   USE oce_trc             ! ocean dynamics and active tracers variables
-   USE trc                 ! ocean passive tracers variables
-   USE trctrp_lec          ! passive tracers transport
+   !!   trc_adv_ctl  : control the different options of the advection
+   !!   trc_ldf_ctl  : control the different options of the lateral diffusion
+   !!   trc_zdf_ctl  : control the different options of the vertical diffusion
+   !!   trc_dmp_ctl  : control the different options of the internal damping
+   !!----------------------------------------------------------------------
+   USE oce_trc       ! ocean dynamics and active tracers variables
+   USE trc           ! ocean passive tracers variables
+   USE trctrp_lec    ! passive tracers transport
 
    IMPLICIT NONE
    PRIVATE
 
-   !! * Accessibility
-   PUBLIC trc_trp_ctl   
-
-   !! * Module variable
+   PUBLIC   trc_trp_ctl   ! called by ???
+
 #if defined key_trcldf_eiv
       LOGICAL, PARAMETER ::   lk_trcldf_eiv   = .TRUE.   !: eddy induced velocity flag
@@ -25,9 +30,8 @@
       LOGICAL, PARAMETER ::   lk_trcldf_eiv   = .FALSE.  !: eddy induced velocity flag
 #endif
-
-   !!----------------------------------------------------------------------
-   !!   TOP 1.0 , LOCEAN-IPSL (2005) 
-   !! $Header$ 
-   !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 
+   !!----------------------------------------------------------------------
+   !! NEMO/TOP 1.0 , LOCEAN-IPSL (2005) 
+   !! $Id$ 
+   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
 
@@ -35,46 +39,32 @@
 
    SUBROUTINE trc_trp_ctl
-      !!---------------------------------------------------------------------
+      !!----------------------------------------------------------------------
       !!                  ***  ROUTINE trc_trp_ctl  ***
       !!                
       !! ** Purpose :   Control the consistency between cpp options for 
       !!                tracer transport
-      !!
-      !! History :
-      !!   9.0  !  04-0.  (C. Ethe) 
-      !!----------------------------------------------------------------------
-
-      !!----------------------------------------------------------------------
-      !!  TOP 1.0 , LOCEAN-IPSL (2005) 
-      !!----------------------------------------------------------------------
-
-      !! Control of Advection scheme options
-      CALL trc_adv_ctl
-
-      !! Control of Lateral diffusion scheme options
-      CALL trc_ldf_ctl
-
-      !! Control of Vertival diffusion scheme options
-      CALL trc_zdf_ctl
-
-      !! Control of Newtonian damping  options
+      !!----------------------------------------------------------------------
+      !!----------------------------------------------------------------------
+
+      CALL trc_adv_ctl      ! Control of Advection scheme options
+
+      CALL trc_ldf_ctl      ! Control of Lateral diffusion scheme options
+
+      CALL trc_zdf_ctl      ! Control of Vertival diffusion scheme options
+
+      !                     ! Control of Newtonian damping  options
       IF(lwp) THEN
+         WRITE(numout,*)
          WRITE(numout,*) ' *** Tracer damping option'
-         WRITE(numout,*)
-      ENDIF
-
+      ENDIF
 #if defined key_trcdmp
-      IF(lwp) THEN 
-         WRITE(numout,*)' key_trcdmp is defined'
-         WRITE(numout,*)' Check trcdmp ROUTINE '
-         WRITE(numout,*)'  '
-      ENDIF 
+      IF(lwp) WRITE(numout,*) '     key_trcdmp is defined:   Check trcdmp ROUTINE '
       CALL trc_dmp_ctl
 #else
-      IF (lwp) WRITE(numout,*) ' No tracer damping'
-#endif
-
-
+      IF(lwp) WRITE(numout,*) '     No tracer damping'
+#endif
+      !
    END SUBROUTINE trc_trp_ctl
+
 
    SUBROUTINE trc_adv_ctl
@@ -83,17 +73,7 @@
       !!                
       !! ** Purpose :   Control the consistency between cpp options for 
-      !!      tracer advection schemes
-      !!
-      !! History :
-      !!   8.5  !  02-11  (G. Madec)  Original code
-      !!   9.0  !  04-0.  (C. Ethe)  adapted for passive tracers
-      !!----------------------------------------------------------------------
-
-      !! * Local declarations
+      !!              tracer advection schemes
+      !!----------------------------------------------------------------------
       INTEGER ::   ioptio
-
-
-      !!----------------------------------------------------------------------
-      !!  TOP 1.0 , LOCEAN-IPSL (2005) 
       !!----------------------------------------------------------------------
 
@@ -127,6 +107,7 @@
             &    CALL ctl_stop( '    cross-land advection only with 2nd order advection scheme ' )
       ENDIF
-
+      !
    END SUBROUTINE trc_adv_ctl
+
 
    SUBROUTINE trc_ldf_ctl
@@ -136,14 +117,7 @@
       !! ** Purpose :   Control the consistency between cpp options for 
       !!      tracer lateral diffusion 
-      !!
-      !! History :
-      !!   9.0  !  03-04  (C. Ethe) 
-      !!----------------------------------------------------------------------
-      !! * Local declarations
+      !!----------------------------------------------------------------------
       INTEGER ::   ioptio               ! ???
       LOGICAL ::   ll_print = .FALSE.   ! =T print eddy coef. in numout      
-
-      !!----------------------------------------------------------------------
-      !!  TOP 1.0 , LOCEAN-IPSL (2005) 
       !!----------------------------------------------------------------------
 
@@ -161,6 +135,5 @@
          IF( ln_trcldf_lap   )   ioptio = ioptio + 1
          IF( ln_trcldf_bilap )   ioptio = ioptio + 1
-         IF( ioptio /= 1 )  &
-            &   CALL ctl_stop( '    use ONE of the 2 lap/bilap operator type on tracer' )
+         IF( ioptio /= 1 )   CALL ctl_stop( '    use ONE of the 2 lap/bilap operator type on tracer' )
          
          ioptio = 0
@@ -168,6 +141,5 @@
          IF( ln_trcldf_hor   )   ioptio = ioptio + 1
          IF( ln_trcldf_iso   )   ioptio = ioptio + 1
-         IF( ioptio /= 1 ) &
-            &   CALL ctl_stop( '   use only ONE direction (level/hor/iso)' )
+         IF( ioptio /= 1 )   CALL ctl_stop( '   use only ONE direction (level/hor/iso)' )
          
          ! ... Choice of the lateral scheme used
@@ -195,9 +167,9 @@
          l_trcldf_bilapg  =  ln_trcldf_bilap .AND. ln_trcldf_hor       ! geopotential bilap. (s-coord)
          l_trcldf_iso     =  ln_trcldf_lap   .AND.                  &  ! laplacian operator
-            &                   ( ln_trcldf_iso   .OR.  ln_trcldf_hor )  &  ! iso-neutral (z-coord) or horizontal (s-coord)
+            &              ( ln_trcldf_iso   .OR.  ln_trcldf_hor )  &  ! iso-neutral (z-coord) or horizontal (s-coord)
             &                                     .AND. .NOT.ln_zps
-         l_trcldf_iso_zps =       ln_trcldf_lap   .AND.                  &  ! laplacian operator
-            &                   ( ln_trcldf_iso   .OR.  ln_trcldf_hor )  &  ! iso-neutral (partial steps)
-            &                                     .AND. ln_zps              ! or geopotential in mixed partial steps/s-coord
+         l_trcldf_iso_zps =  ln_trcldf_lap   .AND.                  &  ! laplacian operator
+            &              ( ln_trcldf_iso   .OR.  ln_trcldf_hor )  &  ! iso-neutral (partial steps)
+            &                                .AND. ln_zps              ! or geopotential in mixed partial steps/s-coord
          l_trczdf_iso    = .FALSE.
          l_trczdf_iso_vo = .FALSE.
@@ -211,5 +183,4 @@
 #endif
          
-         
          ioptio = 0
          IF( l_trcldf_lap     )   ioptio = ioptio + 1
@@ -261,6 +232,7 @@
          ENDIF
       ENDIF
-
+      !
    END SUBROUTINE trc_ldf_ctl
+
 
    SUBROUTINE trc_zdf_ctl
@@ -268,13 +240,7 @@
       !!                  ***  ROUTINE trc_zdf_ctl  ***
       !! 
-      !! ** Purpose :     Control the consistency between cpp options for 
-      !!      tracer vertical diffusion
-      !!
-      !!   9.0  !  04-03  (C. Ethe)  
-      !!----------------------------------------------------------------------
-      !! * Local declarations
-
-      !!----------------------------------------------------------------------
-      !!  TOP 1.0 , LOCEAN-IPSL (2005) 
+      !! ** Purpose :   Control the consistency between cpp options for 
+      !!              tracer vertical diffusion
+      !!----------------------------------------------------------------------
       !!----------------------------------------------------------------------
 
@@ -305,7 +271,7 @@
       l_trczdf_imp = .TRUE.
 #endif
-
-
+      !
    END SUBROUTINE trc_zdf_ctl
+
 
    SUBROUTINE trc_dmp_ctl
@@ -314,51 +280,45 @@
       !! 
       !! ** Purpose :    Control the consistency between cpp options for 
-      !!      tracer newtonian damping 
-      !!
-      !!
-      !! History :
-      !!   9.0  !  04-03  (C. Ethe) 
+      !!              tracer newtonian damping 
       !!----------------------------------------------------------------------
 #if defined key_trcdmp
 
       SELECT CASE ( ndmptr )
-
+      !
       CASE ( -1 )               ! ORCA: damping in Red & Med Seas only
          IF(lwp) WRITE(numout,*) '          tracer damping in the Med & Red seas only'
-
+         !
       CASE ( 1:90 )             ! Damping poleward of 'ndmptr' degrees
          IF(lwp) WRITE(numout,*) '          tracer damping poleward of', ndmptr, ' degrees'
-
+         !
       CASE DEFAULT
-
          WRITE(ctmp1,*) '          bad flag value for nmldmp = ', ndmptr
          CALL ctl_stop(ctmp1)
-
+         !
       END SELECT
 
-
       SELECT CASE ( nmldmptr )
-
+      !
       CASE ( 0 )                ! newtonian damping throughout the water column
          IF(lwp) WRITE(numout,*) '          tracer damping throughout the water column'
-
+         !
       CASE ( 1 )                ! no damping in the turbocline (avt > 5 cm2/s)
          IF(lwp) WRITE(numout,*) '          no tracer damping in the turbocline'
-
+         !
       CASE ( 2 )                ! no damping in the mixed layer 
          IF(lwp) WRITE(numout,*) '          no tracer damping in the mixed layer'
-
+         !
       CASE DEFAULT
          WRITE(ctmp1,*) '          bad flag value for nmldmp = ', nmldmptr
          CALL ctl_stop(ctmp1)
-
+         !
       END SELECT
 #endif
- 
+      !
    END SUBROUTINE trc_dmp_ctl
 
 #else
    !!----------------------------------------------------------------------
-   !!   Dummy module :                      NO passive tracer
+   !!   Dummy module :                                        No TOP models
    !!----------------------------------------------------------------------
 CONTAINS
Index: /branches/dev_001_GM/NEMO/TOP_SRC/TRP/trctrp_lec.F90
===================================================================
--- /branches/dev_001_GM/NEMO/TOP_SRC/TRP/trctrp_lec.F90	(revision 770)
+++ /branches/dev_001_GM/NEMO/TOP_SRC/TRP/trctrp_lec.F90	(revision 771)
@@ -1,7 +1,7 @@
 MODULE trctrp_lec
-   !!==============================================================================
+   !!======================================================================
    !!                       ***  MODULE  trctrp_lec  ***
-   !! Ocean passive tracers:  namelist read options for transport
-   !!==============================================================================
+   !! TOP :   namelist read options for transport
+   !!======================================================================
    !! History :   1.0  !  2004-03  (C. Ethe)  Original code
    !!             2.0  !  2007-12  (C. Ethe, G. Madec)  revised architecture
@@ -9,5 +9,5 @@
 #if defined key_passivetrc
    !!----------------------------------------------------------------------
-   !!   'key_passivetrc'                                          TOP model
+   !!   'key_passivetrc'                                         TOP models
    !!----------------------------------------------------------------------
    !!   trc_trp_lec  : read the passive tracer namelist for transport
@@ -96,105 +96,82 @@
       !!----------------------------------------------------------------------
 
-      ! Read Namelist namtrcadv : tracer advection scheme
-      ! -------------------------
-      REWIND( numnat )
+      IF(lwp) WRITE(numout,*)
+      IF(lwp) WRITE(numout,*) ' trc_trp_lec: read namelist for tracer transport'
+      IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~'
+
+      !                                ! tracer advection scheme
+      REWIND( numnat )                 !   ! Read Namelist namtrcadv
       READ  ( numnat, namtrcadv )
 
-      ! Parameter control and print
-      ! ---------------------------
-      ! Control print
-      IF(lwp) THEN
+      IF(lwp) THEN                     !   ! Control print
          WRITE(numout,*)
-         WRITE(numout,*) 'choice/control of the tracer advection scheme'
-         WRITE(numout,*) '~~~~~~~~~~~'
-         WRITE(numout,*) '          Namelist namtrcadv : chose a advection scheme for tracers'
-         WRITE(numout,*)
-         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
+         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
       ENDIF
 
 #if  defined key_trcbbl_dif
-      ! Read Namelist namtrcbbl : Bottom boundary layer coef
-      ! --------------------------------------------------
-      REWIND( numnat )
+      !                                ! Bottom boundary layer 
+      REWIND( numnat )                 !   ! Read Namelist namtrcbbl
       READ  ( numnat, namtrcbbl )
 
-      ! Parameter control and print
-      ! ---------------------------
-      IF(lwp) THEN
-         WRITE(numout,*) ' Diffusive Bottom Boundary Layer'
-         WRITE(numout,*) '~~~~~~~~'
-         WRITE(numout,*) ' bottom boundary layer coef.    atrcbbl = ', atrcbbl
+      IF(lwp) THEN                     !   ! Control print
+         WRITE(numout,*)
+         WRITE(numout,*) '   Namelist namtrcbbl : set Diffusive Bottom Boundary Layer parameters'
+         WRITE(numout,*) '      bottom boundary layer coef.    atrcbbl = ', atrcbbl
 # if defined key_trcbbl_adv
-         WRITE(numout,*) ' * Advective Bottom Boundary Layer'
+         WRITE(numout,*) '   * Advective Bottom Boundary Layer'
 # endif
-         WRITE(numout,*)
       ENDIF
 #endif
 
-      !  Define the lateral tracer physics parameters
-      ! =============================================
-    
-      ! Read Namelist namtrcldf : Lateral physics on tracers
-      REWIND( numnat )
+      !                                ! Lateral physics on tracers   
+      REWIND( numnat )                 !   ! Read Namelist namtrcldf
       READ  ( numnat, namtrcldf )
 
-      IF(lwp) THEN
+      IF(lwp) THEN                     !   ! Control print
          WRITE(numout,*)
-         WRITE(numout,*) 'lateral passive tracer physics'
-         WRITE(numout,*) '~~~~~~~'
          WRITE(numout,*) '   Namelist namtrcldf : 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
-         WRITE(numout,*) '     bilaplacian operator                           ln_trcldf_bilap = ', ln_trcldf_bilap
-         WRITE(numout,*) '     iso-level                                      ln_trcldf_level = ', ln_trcldf_level
-         WRITE(numout,*) '     horizontal (geopotential)                      ln_trcldf_hor   = ', ln_trcldf_hor
-         WRITE(numout,*) '     iso-neutral                                    ln_trcldf_iso   = ', ln_trcldf_iso
-         WRITE(numout,*) '     lateral eddy diffusivity                              ahtrc0   = ', ahtrc0
-         WRITE(numout,*) '     background hor. diffusivity                            ahtrb0  = ', ahtrb0
-         WRITE(numout,*) '     eddy induced velocity coef.                           aeivtr0  = ', aeivtr0
-         WRITE(numout,*) '     ratio between passive and active tracer diffusion coef  trcrat = ', trcrat
+         WRITE(numout,*) '      perform lateral diffusion or not               ln_trcldf_diff  = ', ln_trcldf_diff
+         WRITE(numout,*) '      laplacian operator                             ln_trcldf_lap   = ', ln_trcldf_lap
+         WRITE(numout,*) '      bilaplacian operator                           ln_trcldf_bilap = ', ln_trcldf_bilap
+         WRITE(numout,*) '      iso-level                                      ln_trcldf_level = ', ln_trcldf_level
+         WRITE(numout,*) '      horizontal (geopotential)                      ln_trcldf_hor   = ', ln_trcldf_hor
+         WRITE(numout,*) '      iso-neutral                                    ln_trcldf_iso   = ', ln_trcldf_iso
+         WRITE(numout,*) '      lateral eddy diffusivity                              ahtrc0   = ', ahtrc0
+         WRITE(numout,*) '      background hor. diffusivity                            ahtrb0  = ', ahtrb0
+         WRITE(numout,*) '      eddy induced velocity coef.                           aeivtr0  = ', aeivtr0
+         WRITE(numout,*) '      ratio between passive and active tracer diffusion coef  trcrat = ', trcrat
       ENDIF
 
-      ! Read namtrczdf namelist : vertical mixing parameters
-      ! --------------------
-      REWIND( numnat )
+      !                                ! Vertical mixing
+      REWIND( numnat )                 !   ! Read namtrczdf namelist
       READ  ( numnat, namtrczdf )
 
-      ! Parameter print
-      ! ---------------
-      IF(lwp) THEN
+      IF(lwp) THEN                     !   ! Control print
          WRITE(numout,*)
-         WRITE(numout,*) 'vertical physics'
-         WRITE(numout,*) '~~~~~~~~'
-         WRITE(numout,*) '          Namelist namtrczdf : 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
+         WRITE(numout,*) '   Namelist namtrczdf : 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
       ENDIF
 
 # if defined key_trcdmp
-      ! Read Namelist namtdp : passive tracres damping term
-      ! --------------------
-      REWIND( numnat )
+      !                                ! passive tracres damping term
+      REWIND( numnat )                 !   ! Read Namelist namtdp
       READ  ( numnat, namtrcdmp )
-      IF( lzoom )   nmldmptr = 0      ! restoring to climatology at closed north or south boundaries
+      IF( lzoom )   nmldmptr = 0           ! restoring to climatology at closed north or south boundaries
 
-      ! Parameter control and print
-      ! ---------------------------
-      IF(lwp) THEN
+      IF(lwp) THEN                     !   ! Control print
          WRITE(numout,*)
-         WRITE(numout,*) 'newtonian damping'
-         WRITE(numout,*) '~~~~~~~'
-         WRITE(numout,*) '          Namelist namtrcdmp : set damping parameter'
-         WRITE(numout,*) '             tracers damping option         ndmptr   = ', ndmptr
-         WRITE(numout,*) '             create a damping.coeff file    ndmpftr  = ', ndmpftr
-         WRITE(numout,*) '             mixed layer damping option     nmldmptr = ', nmldmptr, '(zoom: forced to 0)'
-         WRITE(numout,*) '             surface time scale (days)      sdmptr   = ', sdmptr
-         WRITE(numout,*) '             bottom time scale (days)       bdmptr   = ', bdmptr
-         WRITE(numout,*) '             depth of transition (meters)   hdmptr   = ', hdmptr
-         WRITE(numout,*)
+         WRITE(numout,*) '   Namelist namtrcdmp : set damping parameter'
+         WRITE(numout,*) '      tracers damping option         ndmptr   = ', ndmptr
+         WRITE(numout,*) '      create a damping.coeff file    ndmpftr  = ', ndmpftr
+         WRITE(numout,*) '      mixed layer damping option     nmldmptr = ', nmldmptr, '(zoom: forced to 0)'
+         WRITE(numout,*) '      surface time scale (days)      sdmptr   = ', sdmptr
+         WRITE(numout,*) '      bottom time scale (days)       bdmptr   = ', bdmptr
+         WRITE(numout,*) '      depth of transition (meters)   hdmptr   = ', hdmptr
       ENDIF
 #endif
Index: /branches/dev_001_GM/NEMO/TOP_SRC/trcdit.F90
===================================================================
--- /branches/dev_001_GM/NEMO/TOP_SRC/trcdit.F90	(revision 770)
+++ /branches/dev_001_GM/NEMO/TOP_SRC/trcdit.F90	(revision 771)
@@ -197,5 +197,4 @@
    END SUBROUTINE trcdit_wr
 
-
 # if defined key_trc_diatrd
 
@@ -435,4 +434,9 @@
    END SUBROUTINE trcdid_wr
 
+# else
+   SUBROUTINE trcdid_wr( kt, kindic )                      ! Dummy routine
+      INTEGER, INTENT ( in ) ::   kt, kindic
+      WRITE(*,*) 'trcdid_wr: You should not have seen this print! error?', kt, kindic
+   END SUBROUTINE trcdid_wr
 # endif
 
@@ -580,4 +584,9 @@
 END SUBROUTINE trcdii_wr
 
+# else
+   SUBROUTINE trcdii_wr( kt, kindic )                      ! Dummy routine
+      INTEGER, INTENT ( in ) :: kt, kindic
+      WRITE(*,*) 'trcdii_wr: You should not have seen this print! error?', kt, kindic
+   END SUBROUTINE trcdii_wr
 # endif
 
@@ -701,4 +710,9 @@
    END SUBROUTINE trcdib_wr
 
+# else
+   SUBROUTINE trcdib_wr( kt, kindic )                      ! Dummy routine
+      INTEGER, INTENT ( in ) ::   kt, kindic
+      WRITE(*,*) 'trcdib_wr: You should not have seen this print! error?', kt, kindic
+   END SUBROUTINE trcdib_wr
 # endif 
 
Index: /branches/dev_001_GM/NEMO/TOP_SRC/trcrst.F90
===================================================================
--- /branches/dev_001_GM/NEMO/TOP_SRC/trcrst.F90	(revision 770)
+++ /branches/dev_001_GM/NEMO/TOP_SRC/trcrst.F90	(revision 771)
@@ -261,5 +261,5 @@
                   &   +             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)
+               hi(ji,jj,jk) = ( ak23(ji,jj,jk) * bicarb / co3 )   *       tmask(ji,jj,jk)   &
                   &         +             1.0e-9                  * ( 1.- tmask(ji,jj,jk) )
             END DO
Index: /branches/dev_001_GM/NEMO/TOP_SRC/trcsms.F90
===================================================================
--- /branches/dev_001_GM/NEMO/TOP_SRC/trcsms.F90	(revision 770)
+++ /branches/dev_001_GM/NEMO/TOP_SRC/trcsms.F90	(revision 771)
@@ -88,8 +88,8 @@
       ! ------------------------
 
-      CALL p4zprg(kt)      ! main program of PISCES 
+      CALL p4zprg( kt )      ! main program of PISCES 
 
 
-      !                    ! split in  SMS to be DONE here
+      !                      ! split in  SMS to be DONE here
 
 #elif defined key_cfc
@@ -102,8 +102,8 @@
 #endif
 
-      IF(ln_ctl)   THEN  ! print mean trends (used for debugging)
+      IF(ln_ctl) THEN      ! print mean trends (used for debugging)
          WRITE(charout, FMT="('SMS')")
-         CALL prt_ctl_trc_info(charout)
-         CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm)
+         CALL prt_ctl_trc_info( charout )
+         CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm )
       ENDIF
       !
Index: /branches/dev_001_GM/NEMO/TOP_SRC/trcstp.F90
===================================================================
--- /branches/dev_001_GM/NEMO/TOP_SRC/trcstp.F90	(revision 770)
+++ /branches/dev_001_GM/NEMO/TOP_SRC/trcstp.F90	(revision 771)
@@ -2,29 +2,32 @@
    !!======================================================================
    !!                       ***  MODULE trcstp  ***
-   !! Time-stepping    : time loop of opa for passive tracer
+   !! TOP :   time stepping of TOP models (passive tracers)
    !!======================================================================
+   !! History :   1.0  !  2004-03 (C. Ethe) Original code
+   !!----------------------------------------------------------------------
 #if defined key_passivetrc
    !!----------------------------------------------------------------------
-   !!   trc_stp      : passive tracer system time-stepping
+   !!   'key_passivetrc'                                         TOP models
    !!----------------------------------------------------------------------
-   !! * Modules used
-   USE oce_trc          ! ocean dynamics and active tracers variables
-   USE trc              ! ocean passive tracers variables 
-   USE trctrp           ! passive tracers transport
-   USE trcsms           ! passive tracers sources and sinks
-   USE prtctl_trc       ! Print control for debbuging
-   USE trcdia
-   USE trcdit
-   USE trcrst
+   !!   trc_stp       : passive tracer system time-stepping
+   !!----------------------------------------------------------------------
+   USE oce_trc        ! ocean dynamics and active tracers variables
+   USE trc            ! ocean passive tracers variables 
+   USE trctrp         ! passive tracers transport
+   USE trcsms         ! passive tracers sources and sinks
+   USE prtctl_trc     ! Print control for debbuging
+   USE trcdia         ! passive tracer diagnostics
+   USE trcdit         ! ???
+   USE trcrst         ! ???
 
    IMPLICIT NONE
    PRIVATE
 
-   !! * Routine accessibility
-   PUBLIC trc_stp           ! called by step
+   PUBLIC   trc_stp   ! called in step.F90 module
+
    !!----------------------------------------------------------------------
-   !!   TOP 1.0 , LOCEAN-IPSL (2005) 
-   !! $Header$ 
-   !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 
+   !! NEMO/TOP 1.0 , LOCEAN-IPSL (2005) 
+   !! $Id$ 
+   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
 
@@ -32,27 +35,19 @@
 
    SUBROUTINE trc_stp( kt, kindic )
-      !!-------------------------------------------------------------------
+      !!----------------------------------------------------------------------
       !!                     ***  ROUTINE trc_stp  ***
       !!                      
-      !! ** Purpose : Time loop of opa for passive tracer
+      !! ** Purpose :   Time loop of TOP passive tracer
       !! 
-      !! ** Method  : 
-      !!              Compute the passive tracers trends 
-      !!              Update the passive tracers
-      !!
-      !! History :
-      !!   9.0  !  04-03  (C. Ethe)  Original
-      !!-------------------------------------------------------------------
-      !! * Arguments
-      INTEGER, INTENT( in ) ::  kt  ! ocean time-step index
-      INTEGER, INTENT( in ) ::  kindic
+      !! ** Method  :   Compute the passive tracers trends 
+      !!                Update the passive tracers
+      !!----------------------------------------------------------------------
+      INTEGER, INTENT( in ) ::   kt       ! ocean time-step index
+      INTEGER, INTENT( in ) ::   kindic   ! ???
       CHARACTER (len=25) :: charout
+      !!----------------------------------------------------------------------
 
-      ! this ROUTINE is called only every ndttrc time step
-      IF( MOD( kt , ndttrc ) /= 0 ) RETURN
+      IF( MOD( kt, ndttrc ) /= 0 )   RETURN            ! routine called only every ndttrc time step
 
-      CALL trc_rst_opn( kt )      ! Open tracer restart file 
-
-       ! tracers: sink and source 
       IF(ln_ctl) THEN
          WRITE(charout,FMT="('kt =', I4,'  d/m/y =',I2,I2,I4)") kt, nday, nmonth, nyear
@@ -60,31 +55,19 @@
       ENDIF
 
-      CALL trc_sms( kt )
+                       CALL trc_rst_opn( kt )          ! Open tracer restart file 
 
-      IF(ln_ctl)   THEN  ! print mean trends (used for debugging)
-         WRITE(charout, FMT="('SMS')")
-         CALL prt_ctl_trc_info(charout)
-         CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm)
-      ENDIF
+                       CALL trc_sms( kt )              ! sink and source of passive tracers
 
-      ! transport of passive tracers
-      CALL trc_trp( kt )
+                       CALL trc_trp( kt )              ! transport of passive tracers
 
-      IF(ln_ctl)   THEN  ! print mean trends (used for debugging)
-         WRITE(charout, FMT="('TRP')")
-         CALL prt_ctl_trc_info(charout)
-         CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm)
-      ENDIF
+      IF( lrst_trc )   CALL trc_rst_wri( kt )          ! write tracer restart file
 
-      IF( lrst_trc ) CALL trc_rst_wri( kt )  ! write tracer restart file
-
-      CALL trc_dia( kt, kindic )     ! diagnostics
-
-
+                       CALL trc_dia( kt, kindic )      ! diagnostics
+      !
    END SUBROUTINE trc_stp
 
 #else
    !!----------------------------------------------------------------------
-   !!   Default key                                     NO passive tracers
+   !!   Dummy module                                          No TOP models
    !!----------------------------------------------------------------------
 CONTAINS
Index: /branches/dev_001_GM/NEMO/TOP_SRC/trp_trc.F90
===================================================================
--- /branches/dev_001_GM/NEMO/TOP_SRC/trp_trc.F90	(revision 770)
+++ /branches/dev_001_GM/NEMO/TOP_SRC/trp_trc.F90	(revision 771)
@@ -12,5 +12,5 @@
 #if defined key_passivetrc
    !!----------------------------------------------------------------------
-   !!   'key_passivetrc'                                    Passive tracers
+   !!   'key_passivetrc'                                          TOP model
    !!----------------------------------------------------------------------
 
