Index: branches/2011/dev_NOC_UKMO_MERGE/NEMOGCM/NEMO/TOP_SRC/TRP/trcldf.F90
===================================================================
--- branches/2011/dev_NOC_UKMO_MERGE/NEMOGCM/NEMO/TOP_SRC/TRP/trcldf.F90	(revision 3094)
+++ branches/2011/dev_NOC_UKMO_MERGE/NEMOGCM/NEMO/TOP_SRC/TRP/trcldf.F90	(revision 3101)
@@ -2,8 +2,8 @@
    !!======================================================================
    !!                       ***  MODULE  trcldf  ***
-   !! Ocean Passive tracers : lateral diffusive trends 
+   !! Ocean Passive tracers : lateral diffusive trends
    !!=====================================================================
    !! History :  9.0  ! 2005-11 (G. Madec)  Original code
-   !!       NEMO 3.0  ! 2008-01  (C. Ethe, G. Madec)  merge TRC-TRA 
+   !!       NEMO 3.0  ! 2008-01  (C. Ethe, G. Madec)  merge TRC-TRA
    !!----------------------------------------------------------------------
 #if defined key_top
@@ -23,4 +23,5 @@
    USE traldf_bilap    ! lateral mixing            (tra_ldf_bilap routine)
    USE traldf_iso      ! lateral mixing            (tra_ldf_iso routine)
+   USE traldf_iso_grif ! lateral mixing          (tra_ldf_iso_grif routine)
    USE traldf_lap      ! lateral mixing            (tra_ldf_lap routine)
    USE trdmod_oce
@@ -31,5 +32,5 @@
    PRIVATE
 
-   PUBLIC   trc_ldf    ! called by step.F90 
+   PUBLIC   trc_ldf    ! called by step.F90
    !                                                 !!: ** lateral mixing namelist (nam_trcldf) **
    INTEGER ::   nldf = 0   ! type of lateral diffusion used defined from ln_trcldf_... namlist logicals)
@@ -39,5 +40,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id$ 
+   !! $Id$
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -48,5 +49,5 @@
       !!----------------------------------------------------------------------
       !!                  ***  ROUTINE tra_ldf  ***
-      !! 
+      !!
       !! ** Purpose :   compute the lateral ocean tracer physics.
       !!
@@ -61,5 +62,5 @@
       IF( kt == nittrc000 )   CALL ldf_ctl          ! initialisation & control of options
 
-      IF( l_trdtrc )  THEN 
+      IF( l_trdtrc )  THEN
          ALLOCATE( ztrtrd(jpi,jpj,jpk,jptra) )  ! temporary save of trends
          ztrtrd(:,:,:,:)  = tra(:,:,:,:)
@@ -68,5 +69,10 @@
       SELECT CASE ( nldf )                       ! compute lateral mixing trend and add it to the general trend
       CASE ( 0 )   ;   CALL tra_ldf_lap   ( kt, nittrc000, 'TRC', gtru, gtrv, trb, tra, jptra            )  ! iso-level laplacian
-      CASE ( 1 )   ;   CALL tra_ldf_iso   ( kt, nittrc000, 'TRC', gtru, gtrv, trb, tra, jptra, rn_ahtb_0 )  ! rotated laplacian 
+      CASE ( 1 )                                                                                            ! rotated laplacian
+                       IF( ln_traldf_grif ) THEN
+                          CALL tra_ldf_iso_grif( kt, nittrc000, 'TRC', gtru, gtrv, trb, tra, jptra, rn_ahtb_0 )
+                       ELSE
+                          CALL tra_ldf_iso     ( kt, nittrc000, 'TRC', gtru, gtrv, trb, tra, jptra, rn_ahtb_0 )
+                       ENDIF
       CASE ( 2 )   ;   CALL tra_ldf_bilap ( kt, nittrc000, 'TRC', gtru, gtrv, trb, tra, jptra            )  ! iso-level bilaplacian
       CASE ( 3 )   ;   CALL tra_ldf_bilapg( kt, nittrc000, 'TRC',             trb, tra, jptra            )  ! s-coord. horizontal bilaplacian
@@ -76,5 +82,9 @@
          WRITE(charout, FMT="('ldf0 ')") ;  CALL prt_ctl_trc_info(charout)
                                             CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' )
-         CALL tra_ldf_iso   ( kt, nittrc000, 'TRC', gtru, gtrv, trb, tra, jptra, rn_ahtb_0 )
+         IF( ln_traldf_grif ) THEN
+            CALL tra_ldf_iso_grif( kt, nittrc000, 'TRC', gtru, gtrv, trb, tra, jptra, rn_ahtb_0 )
+         ELSE
+            CALL tra_ldf_iso     ( kt, nittrc000, 'TRC', gtru, gtrv, trb, tra, jptra, rn_ahtb_0 )
+         ENDIF
          WRITE(charout, FMT="('ldf1 ')") ;  CALL prt_ctl_trc_info(charout)
                                             CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' )
@@ -92,5 +102,5 @@
            CALL trd_tra( kt, 'TRC', jn, jptra_trd_ldf, ztrtrd(:,:,:,jn) )
         END DO
-        DEALLOCATE( ztrtrd ) 
+        DEALLOCATE( ztrtrd )
       ENDIF
       !                                          ! print mean trends (used for debugging)
@@ -106,9 +116,9 @@
       !!----------------------------------------------------------------------
       !!                  ***  ROUTINE ldf_ctl  ***
-      !! 
+      !!
       !! ** Purpose :   Choice of the operator for the lateral tracer diffusion
       !!
       !! ** Method  :   set nldf from the namtra_ldf logicals
-      !!      nldf == -2   No lateral diffusion  
+      !!      nldf == -2   No lateral diffusion
       !!      nldf == -1   ESOPA test: ALL operators are used
       !!      nldf ==  0   laplacian operator
@@ -117,10 +127,10 @@
       !!      nldf ==  3   Rotated bilaplacian
       !!----------------------------------------------------------------------
-      INTEGER ::   ioptio, ierr         ! temporary integers 
+      INTEGER ::   ioptio, ierr         ! temporary integers
       !!----------------------------------------------------------------------
 
       !  Define the lateral mixing oparator for tracers
       ! ===============================================
-    
+
       !                               ! control the input
       ioptio = 0
@@ -163,5 +173,5 @@
          ENDIF
          IF ( ln_zps ) THEN             ! z-coordinate
-            IF ( ln_trcldf_level )   ierr = 1      ! iso-level not allowed 
+            IF ( ln_trcldf_level )   ierr = 1      ! iso-level not allowed
             IF ( ln_trcldf_hor   )   nldf = 2      ! horizontal (no rotation)
             IF ( ln_trcldf_iso   )   ierr = 2      ! isoneutral (   rotation)
