Index: LMDZ4/trunk/libf/dyn3d/conf_gcm.F
===================================================================
--- LMDZ4/trunk/libf/dyn3d/conf_gcm.F	(revision 997)
+++ LMDZ4/trunk/libf/dyn3d/conf_gcm.F	(revision 999)
@@ -675,4 +675,12 @@
       CALL getin('config_inca',config_inca)
 
+!Config key = ok_strato
+!Config  Desc = activation de la version strato
+!Config  Def  = .FALSE.
+!Config  Help = active la version stratosphérique de LMDZ de F. Lott
+
+      ok_strato=.FALSE.
+      CALL getin('ok_strato',ok_strato)
+
       write(lunout,*)' #########################################'
       write(lunout,*)' Configuration des parametres du gcm: '
@@ -708,4 +716,5 @@
       write(lunout,*)' offline = ', offline
       write(lunout,*)' config_inca = ', config_inca
+      write(lunout,*)' ok_strato = ', ok_strato
 c
       RETURN
Index: LMDZ4/trunk/libf/dyn3d/disvert.F
===================================================================
--- LMDZ4/trunk/libf/dyn3d/disvert.F	(revision 997)
+++ LMDZ4/trunk/libf/dyn3d/disvert.F	(revision 999)
@@ -11,4 +11,5 @@
 #include "paramet.h"
 #include "iniprint.h"
+#include "logic.h"
 c
 c=======================================================================
@@ -99,5 +100,12 @@
       DO l = 1, llm
          x = 2.*asin(1.) * (FLOAT(l)-0.5) / float(llm+1)
-         dsig(l) = 1.0 + 7.0 * SIN(x)**2
+
+         IF (ok_strato) THEN
+           dsig(l) =(1.0 + 7.0 * SIN(x)**2)
+     &            *(0.5*(1.-tanh(1.*(x-asin(1.))/asin(1.))))**2        
+         ELSE
+           dsig(l) = 1.0 + 7.0 * SIN(x)**2
+         ENDIF
+
          snorm = snorm + dsig(l)
       ENDDO
Index: LMDZ4/trunk/libf/dyn3d/disvert0.F
===================================================================
--- LMDZ4/trunk/libf/dyn3d/disvert0.F	(revision 997)
+++ LMDZ4/trunk/libf/dyn3d/disvert0.F	(revision 999)
@@ -13,4 +13,5 @@
 #include "paramet.h"
 #include "iniprint.h"
+#include "logic.h"
 c
 c=======================================================================
@@ -104,5 +105,12 @@
       DO l = 1, llm
          x = 2.*asin(1.) * (FLOAT(l)-0.5) / float(llm+1)
-         dsig(l) = 1.0 + 7.0 * SIN(x)**2
+
+         IF (ok_strato) THEN
+           dsig(l) =(1.0 + 7.0 * SIN(x)**2)
+     &            *(0.5*(1.-tanh(1.*(x-asin(1.))/asin(1.))))**2        
+         ELSE
+           dsig(l) = 1.0 + 7.0 * SIN(x)**2
+         ENDIF
+
          snorm = snorm + dsig(l)
       ENDDO
Index: LMDZ4/trunk/libf/dyn3d/leapfrog.F
===================================================================
--- LMDZ4/trunk/libf/dyn3d/leapfrog.F	(revision 997)
+++ LMDZ4/trunk/libf/dyn3d/leapfrog.F	(revision 999)
@@ -184,4 +184,7 @@
       PARAMETER (testita = 9)
 
+      logical , parameter :: flag_verif = .true.
+      
+
       integer itau_w   ! pas de temps ecriture = itap + itau_phy
 
@@ -377,4 +380,8 @@
      $               clesphy0, dufi,dvfi,dtetafi,dqfi,dpfi  )
 
+       IF (ok_strato) THEN
+         CALL top_bound( vcov,ucov,teta, dufi,dvfi,dtetafi)
+       ENDIF
+       
 c      ajout des tendances physiques:
 c      ------------------------------
@@ -502,11 +509,13 @@
 
             IF( itau. EQ. itaufinp1 ) then  
-c              write(79,*) 'ucov',ucov
-c              write(80,*) 'vcov',vcov
-c              write(81,*) 'teta',teta
-c              write(82,*) 'ps',ps
-c              write(83,*) 'q',q
-c              WRITE(85,*) 'q1 = ',q(:,:,1)
-c              WRITE(86,*) 'q3 = ',q(:,:,3)
+              if (flag_verif) then
+                write(79,*) 'ucov',ucov
+                write(80,*) 'vcov',vcov
+                write(81,*) 'teta',teta
+                write(82,*) 'ps',ps
+                write(83,*) 'q',q
+                WRITE(85,*) 'q1 = ',q(:,:,1)
+                WRITE(86,*) 'q3 = ',q(:,:,3)
+              endif
 
               abort_message = 'Simulation finished'
Index: LMDZ4/trunk/libf/dyn3d/logic.h
===================================================================
--- LMDZ4/trunk/libf/dyn3d/logic.h	(revision 997)
+++ LMDZ4/trunk/libf/dyn3d/logic.h	(revision 999)
@@ -2,17 +2,17 @@
 ! $Header$
 !
-c
-c
-c-----------------------------------------------------------------------
-c INCLUDE 'logic.h'
+!
+!
+!-----------------------------------------------------------------------
+! INCLUDE 'logic.h'
 
-      COMMON/logic/ purmats,iflag_phys,forward,leapf,apphys,
-     .  statcl,conser,apdiss,apdelq,saison,ecripar,fxyhypb,ysinus
-     .  ,read_start,ok_guide
+      COMMON/logic/ purmats,iflag_phys,forward,leapf,apphys,            &
+     &  statcl,conser,apdiss,apdelq,saison,ecripar,fxyhypb,ysinus       &
+     &  ,read_start,ok_guide,ok_strato
 
-      LOGICAL purmats,forward,leapf,apphys,statcl,conser,
-     . apdiss,apdelq,saison,ecripar,fxyhypb,ysinus
-     .  ,read_start,ok_guide
+      LOGICAL purmats,forward,leapf,apphys,statcl,conser,               &
+     & apdiss,apdelq,saison,ecripar,fxyhypb,ysinus                      &
+     &  ,read_start,ok_guide,ok_strato
 
       INTEGER iflag_phys
-c-----------------------------------------------------------------------
+!-----------------------------------------------------------------------
Index: LMDZ4/trunk/libf/dyn3d/top_bound.F
===================================================================
--- LMDZ4/trunk/libf/dyn3d/top_bound.F	(revision 999)
+++ LMDZ4/trunk/libf/dyn3d/top_bound.F	(revision 999)
@@ -0,0 +1,95 @@
+      SUBROUTINE top_bound( vcov,ucov,teta, du,dv,dh )
+      IMPLICIT NONE
+c
+#include "dimensions.h"
+#include "paramet.h"
+#include "comconst.h"
+CC#include "comgeom2.h"
+
+
+c ..  DISSIPATION LINEAIRE A HAUT NIVEAU, RUN MESO,
+C     F. LOTT DEC. 2006
+c                                 (  10/12/06  )
+
+c=======================================================================
+c
+c   Auteur:  F. LOTT  
+c   -------
+c
+c   Objet:
+c   ------
+c
+c   Dissipation linéaire (ex top_bound de la physique)
+c
+c=======================================================================
+c-----------------------------------------------------------------------
+c   Declarations:
+c   -------------
+
+#include "comgeom.h"
+#include "comdissipn.h"
+
+c   Arguments:
+c   ----------
+
+      REAL ucov(iip1,jjp1,llm),vcov(iip1,jjm,llm),teta(iip1,jjp1,llm)
+      REAL dv(iip1,jjm,llm),du(iip1,jjp1,llm),dh(iip1,jjp1,llm)
+
+c   Local:
+c   ------
+
+      REAL uzon(jjp1,llm),vzon(jjm,llm),tzon(jjp1,llm)
+      
+      INTEGER NDAMP
+      PARAMETER (NDAMP=4)
+      integer i	
+      REAL :: rdamp(llm) = 
+     &   (/(0., i =1,llm-NDAMP),0.125E-5,.25E-5,.5E-5,1.E-5/) 
+
+      INTEGER j,l
+
+
+C  CALCUL DES CHAMPS EN MOYENNE ZONALE:
+      
+      do l=1,llm
+        do j=1,jjm
+          vzon(j,l)=0.
+          do i=1,iim
+            vzon(j,l)=vzon(j,l)+vcov(i,j,l)/float(iim)
+          enddo
+        enddo
+      enddo
+
+      do l=1,llm
+        do i=1,iip1
+          do j=1,jjm
+            dv(i,j,l)=dv(i,j,l)-rdamp(l)*(vcov(i,j,l)-vzon(j,l))
+          enddo
+        enddo
+      enddo
+
+      do l=1,llm
+        do j=2,jjm
+          uzon(j,l)=0.
+          tzon(j,l)=0.
+          do i=1,iim
+            uzon(j,l)=uzon(j,l)+ucov(i,j,l)/float(iim)
+            tzon(j,l)=tzon(j,l)+teta(i,j,l)/float(iim)
+          enddo
+        enddo
+      enddo
+
+C   AMORTISSEMENTS LINEAIRES:
+
+      do l=1,llm
+        do i=1,iip1
+          do j=2,jjm
+            du(i,j,l)=du(i,j,l)-rdamp(l)*(ucov(i,j,l)-uzon(j,l))
+            dh(i,j,l)=dh(i,j,l)-rdamp(l)*(teta(i,j,l)-tzon(j,l))
+          enddo
+        enddo
+      enddo
+      
+
+      RETURN
+      END
