Index: trunk/LMDZ.COMMON/libf/dyn3d/conf_gcm.F
===================================================================
--- trunk/LMDZ.COMMON/libf/dyn3d/conf_gcm.F	(revision 492)
+++ trunk/LMDZ.COMMON/libf/dyn3d/conf_gcm.F	(revision 495)
@@ -338,4 +338,8 @@
        CALL getin('mode_top_bound',mode_top_bound)
        CALL getin('tau_top_bound',tau_top_bound)
+
+! FOR TITAN: tidal forces
+       tidal=.TRUE.
+       CALL getin('tidal',tidal)
 
 !Config  Key  = coefdis
Index: trunk/LMDZ.COMMON/libf/dyn3d/leapfrog.F
===================================================================
--- trunk/LMDZ.COMMON/libf/dyn3d/leapfrog.F	(revision 492)
+++ trunk/LMDZ.COMMON/libf/dyn3d/leapfrog.F	(revision 495)
@@ -106,4 +106,7 @@
       REAL dtetatop(ip1jmp1,llm)
       REAL dqtop(ip1jmp1,llm,nqtot),dptop(ip1jmp1)
+
+c   TITAN : tendances due au forces de marees */s
+      REAL dvtidal(ip1jm,llm),dutidal(ip1jmp1,llm)
 
 c   tendances physiques */s
@@ -396,4 +399,13 @@
      $              finvmaold                                    )
 
+       IF ((planet_type.eq.titan).and.(tidal)) then
+c-----------------------------------------------------------------------
+c   Marées gravitationnelles causées par Saturne
+c   B. Charnay (28/10/2010)
+c   ----------------------------------------------------------
+            CALL tidal_forces(rdaym_ini, dutidal, dvtidal)
+            ucov=ucov+dutidal*dt
+            vcov=vcov+dvtidal*dt
+       ENDIF
 
 c .P.Le Van (26/04/94  ajout de  finvpold dans l'appel d'integrd)
Index: trunk/LMDZ.COMMON/libf/dyn3d/logic.h
===================================================================
--- trunk/LMDZ.COMMON/libf/dyn3d/logic.h	(revision 492)
+++ trunk/LMDZ.COMMON/libf/dyn3d/logic.h	(revision 495)
@@ -10,5 +10,5 @@
       COMMON/logicl/ purmats,forward,leapf,apphys,                      &
      &  statcl,conser,apdiss,apdelq,saison,ecripar,fxyhypb,ysinus       &
-     &  ,read_start,ok_guide,ok_strato,ok_gradsfile                     &
+     &  ,read_start,ok_guide,ok_strato,tidal,ok_gradsfile               &
      &  ,ok_limit,ok_etat0,grilles_gcm_netcdf,hybrid
 
@@ -17,5 +17,5 @@
       LOGICAL purmats,forward,leapf,apphys,statcl,conser,               &
      & apdiss,apdelq,saison,ecripar,fxyhypb,ysinus                      &
-     &  ,read_start,ok_guide,ok_strato,ok_gradsfile                     &
+     &  ,read_start,ok_guide,ok_strato,tidal,ok_gradsfile               &
      &  ,ok_limit,ok_etat0,grilles_gcm_netcdf
       logical hybrid ! vertical coordinate is hybrid if true (sigma otherwise)
Index: trunk/LMDZ.COMMON/libf/dyn3d/tidal_forces.F
===================================================================
--- trunk/LMDZ.COMMON/libf/dyn3d/tidal_forces.F	(revision 495)
+++ trunk/LMDZ.COMMON/libf/dyn3d/tidal_forces.F	(revision 495)
@@ -0,0 +1,109 @@
+      SUBROUTINE tidal_forces (t, du, dv)
+
+      IMPLICIT NONE
+c
+c=======================================================================
+c
+c   Auteur:  B. Charnay  (10/2010)
+c   -------
+c
+c   Objet:
+c   ------
+c
+c   *****************************************************************
+c   ..... calcul du gradient horizontal du potentiel gravitationnel du aux forces de marees causees par Saturne
+c   ..... Formule tiree de Tokano 2002
+c   *****************************************************************
+c          Ces termes sont ajoutes a  d(ucov)/dt et a d(vcov)/dt  ..
+c
+c
+c    du et dv          sont des arguments de sortie pour le s-pg  ....
+c
+c=======================================================================
+c
+#include "dimensions.h"
+#include "paramet.h"
+#include "logic.h"
+#include "comvert.h"
+#include "comconst.h"
+#include "comgeom.h"
+!#include "comorbit.h"
+      REAL t        ! jour de l'annee
+      REAL du( ip1jmp1,llm ),  dv( ip1jm,llm )
+
+c     variables locales
+      REAL Vo
+      PARAMETER (Vo=-4.691e-6)
+      INTEGER  l,ij,i,k
+      REAL n                ! 2pi/periode de rotation siderale (en jours)
+      REAL a0               ! angle à l'instant initial entre Titan et le perihelie
+      PARAMETER (a0=0.)      
+
+c     cos et sin de la latitude et longitude, calcules au premiers appel
+      REAL coslonv(ip1jm),sinlonv(ip1jm)
+      REAL sinlatv(ip1jm),coslatv(ip1jm)
+      REAL coslonu(ip1jmp1),sinlonu(ip1jmp1)
+      REAL sinlatu(ip1jmp1),coslatu(ip1jmp1)      
+
+      LOGICAl first      
+
+      SAVE coslonv,coslonu,sinlonu,sinlonv
+      SAVE coslatv,coslatu,sinlatu,sinlatv
+      SAVE first, n
+
+      DATA first /.true./
+
+! Calcul des sin et cos aux points consideres
+
+      IF(first) THEN
+         first=.false.
+         n=2*3.145!*(1+1/673.)
+         do i=1,iip1
+          do k=1,jjm
+            coslonv(i+(k-1)*iip1)=cos(rlonv(i))
+            sinlonv(i+(k-1)*iip1)=sin(rlonv(i))
+            coslatv(i+(k-1)*iip1)=cos(rlatv(k))
+            sinlatv(i+(k-1)*iip1)=sin(rlatv(k))
+          ENDDO
+         ENDDO
+
+
+
+         do i=1,iip1
+          do k=1,jjp1
+            coslonu(i+(k-1)*iip1)=cos(rlonu(i))
+            sinlonu(i+(k-1)*iip1)=sin(rlonu(i))
+            coslatu(i+(k-1)*iip1)=cos(rlatu(k))
+            sinlatu(i+(k-1)*iip1)=sin(rlatu(k))
+          ENDDO
+         ENDDO
+
+
+
+      ENDIF
+
+
+! Tendance du aux forces de maree
+
+      DO l = 1,llm
+
+      DO ij  = 1, ip1jmp1 
+
+       du(ij,l) = cu(ij)*Vo
+     $    *(3*sinlonu(ij)*coslonu(ij)*coslatu(ij)*cos(n*t+a0) 
+     $    -2*coslatu(ij)*(2*coslonu(ij)**2-1)*sin(n*t+a0))        
+      ENDDO
+
+      DO ij  = 1, ip1jm 
+       dv(ij,l) = cv(ij)*Vo
+     $    *(3*sinlatv(ij)*coslatv(ij)*coslonv(ij)**2*cos(n*t+a0) 
+     $    + 4*coslatv(ij)*sinlatv(ij)*sinlonv(ij)*coslonv(ij)
+     $    *sin(n*t+a0))      
+      ENDDO
+
+      ENDDO
+
+
+c
+      RETURN
+      END
Index: trunk/LMDZ.COMMON/libf/dyn3dpar/conf_gcm.F
===================================================================
--- trunk/LMDZ.COMMON/libf/dyn3dpar/conf_gcm.F	(revision 492)
+++ trunk/LMDZ.COMMON/libf/dyn3dpar/conf_gcm.F	(revision 495)
@@ -352,5 +352,8 @@
        CALL getin('tau_top_bound',tau_top_bound)
 
-!
+! FOR TITAN: tidal forces
+       tidal=.TRUE.
+       CALL getin('tidal',tidal)
+
 !Config  Key  = coefdis
 !Config  Desc = coefficient pour gamdissip
Index: trunk/LMDZ.COMMON/libf/dyn3dpar/leapfrog_p.F
===================================================================
--- trunk/LMDZ.COMMON/libf/dyn3dpar/leapfrog_p.F	(revision 492)
+++ trunk/LMDZ.COMMON/libf/dyn3dpar/leapfrog_p.F	(revision 495)
@@ -117,4 +117,7 @@
       REAL,SAVE :: dptop(ip1jmp1)
       REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: dqtop
+
+c   TITAN : tendances due au forces de marees */s
+      REAL,SAVE :: dvtidal(ip1jm,llm),dutidal(ip1jmp1,llm)
 
 c   variables pour le fichier histoire
@@ -696,4 +699,14 @@
      $              finvmaold                                    )
 
+       IF ((planet_type.eq.titan).and.(tidal)) then
+c-----------------------------------------------------------------------
+c   Marées gravitationnelles causées par Saturne
+c   B. Charnay (28/10/2010)
+c   ----------------------------------------------------------
+            CALL tidal_forces(rdaym_ini, dutidal, dvtidal)
+            ucov=ucov+dutidal*dt
+            vcov=vcov+dvtidal*dt
+       ENDIF
+
 !       CALL FTRACE_REGION_END("integrd")
 c$OMP BARRIER
Index: trunk/LMDZ.COMMON/libf/dyn3dpar/logic.h
===================================================================
--- trunk/LMDZ.COMMON/libf/dyn3dpar/logic.h	(revision 492)
+++ trunk/LMDZ.COMMON/libf/dyn3dpar/logic.h	(revision 495)
@@ -10,5 +10,5 @@
       COMMON/logicl/ purmats,forward,leapf,apphys,                      &
      &  statcl,conser,apdiss,apdelq,saison,ecripar,fxyhypb,ysinus       &
-     &  ,read_start,ok_guide,ok_strato,ok_gradsfile                     &
+     &  ,read_start,ok_guide,ok_strato,tidal,ok_gradsfile               &
      &  ,ok_limit,ok_etat0,grilles_gcm_netcdf,hybrid
 
@@ -17,5 +17,5 @@
       LOGICAL purmats,forward,leapf,apphys,statcl,conser,               &
      & apdiss,apdelq,saison,ecripar,fxyhypb,ysinus                      &
-     &  ,read_start,ok_guide,ok_strato,ok_gradsfile                     &
+     &  ,read_start,ok_guide,ok_strato,tidal,ok_gradsfile               &
      &  ,ok_limit,ok_etat0,grilles_gcm_netcdf
       logical hybrid ! vertical coordinate is hybrid if true (sigma otherwise)
Index: trunk/LMDZ.COMMON/libf/dyn3dpar/tidal_forces.F
===================================================================
--- trunk/LMDZ.COMMON/libf/dyn3dpar/tidal_forces.F	(revision 495)
+++ trunk/LMDZ.COMMON/libf/dyn3dpar/tidal_forces.F	(revision 495)
@@ -0,0 +1,109 @@
+      SUBROUTINE tidal_forces (t, du, dv)
+
+      IMPLICIT NONE
+c
+c=======================================================================
+c
+c   Auteur:  B. Charnay  (10/2010)
+c   -------
+c
+c   Objet:
+c   ------
+c
+c   *****************************************************************
+c   ..... calcul du gradient horizontal du potentiel gravitationnel du aux forces de marees causees par Saturne
+c   ..... Formule tiree de Tokano 2002
+c   *****************************************************************
+c          Ces termes sont ajoutes a  d(ucov)/dt et a d(vcov)/dt  ..
+c
+c
+c    du et dv          sont des arguments de sortie pour le s-pg  ....
+c
+c=======================================================================
+c
+#include "dimensions.h"
+#include "paramet.h"
+#include "logic.h"
+#include "comvert.h"
+#include "comconst.h"
+#include "comgeom.h"
+!#include "comorbit.h"
+      REAL t        ! jour de l'annee
+      REAL du( ip1jmp1,llm ),  dv( ip1jm,llm )
+
+c     variables locales
+      REAL Vo
+      PARAMETER (Vo=-4.691e-6)
+      INTEGER  l,ij,i,k
+      REAL n                ! 2pi/periode de rotation siderale (en jours)
+      REAL a0               ! angle à l'instant initial entre Titan et le perihelie
+      PARAMETER (a0=0.)      
+
+c     cos et sin de la latitude et longitude, calcules au premiers appel
+      REAL coslonv(ip1jm),sinlonv(ip1jm)
+      REAL sinlatv(ip1jm),coslatv(ip1jm)
+      REAL coslonu(ip1jmp1),sinlonu(ip1jmp1)
+      REAL sinlatu(ip1jmp1),coslatu(ip1jmp1)      
+
+      LOGICAl first      
+
+      SAVE coslonv,coslonu,sinlonu,sinlonv
+      SAVE coslatv,coslatu,sinlatu,sinlatv
+      SAVE first, n
+
+      DATA first /.true./
+
+! Calcul des sin et cos aux points consideres
+
+      IF(first) THEN
+         first=.false.
+         n=2*3.145!*(1+1/673.)
+         do i=1,iip1
+          do k=1,jjm
+            coslonv(i+(k-1)*iip1)=cos(rlonv(i))
+            sinlonv(i+(k-1)*iip1)=sin(rlonv(i))
+            coslatv(i+(k-1)*iip1)=cos(rlatv(k))
+            sinlatv(i+(k-1)*iip1)=sin(rlatv(k))
+          ENDDO
+         ENDDO
+
+
+
+         do i=1,iip1
+          do k=1,jjp1
+            coslonu(i+(k-1)*iip1)=cos(rlonu(i))
+            sinlonu(i+(k-1)*iip1)=sin(rlonu(i))
+            coslatu(i+(k-1)*iip1)=cos(rlatu(k))
+            sinlatu(i+(k-1)*iip1)=sin(rlatu(k))
+          ENDDO
+         ENDDO
+
+
+
+      ENDIF
+
+
+! Tendance du aux forces de maree
+
+      DO l = 1,llm
+
+      DO ij  = 1, ip1jmp1 
+
+       du(ij,l) = cu(ij)*Vo
+     $    *(3*sinlonu(ij)*coslonu(ij)*coslatu(ij)*cos(n*t+a0) 
+     $    -2*coslatu(ij)*(2*coslonu(ij)**2-1)*sin(n*t+a0))        
+      ENDDO
+
+      DO ij  = 1, ip1jm 
+       dv(ij,l) = cv(ij)*Vo
+     $    *(3*sinlatv(ij)*coslatv(ij)*coslonv(ij)**2*cos(n*t+a0) 
+     $    + 4*coslatv(ij)*sinlatv(ij)*sinlonv(ij)*coslonv(ij)
+     $    *sin(n*t+a0))      
+      ENDDO
+
+      ENDDO
+
+
+c
+      RETURN
+      END
