Index: LMDZ5/trunk/libf/dyn3d/comdissnew.h
===================================================================
--- LMDZ5/trunk/libf/dyn3d/comdissnew.h	(revision 1696)
+++ LMDZ5/trunk/libf/dyn3d/comdissnew.h	(revision 1697)
@@ -12,8 +12,14 @@
 
       COMMON/comdissnew/ lstardis,nitergdiv,nitergrot,niterh,tetagdiv,  &
-     &                   tetagrot,tetatemp,coefdis 
+     &                   tetagrot,tetatemp,coefdis, vert_prof_dissip
 
       LOGICAL lstardis
       INTEGER nitergdiv, nitergrot, niterh
+
+      integer vert_prof_dissip ! vertical profile of horizontal dissipation
+!     Allowed values:
+!     0: fractional function of pressure
+!     1: tanh of altitude
+
       REAL     tetagdiv, tetagrot,  tetatemp, coefdis
 
Index: LMDZ5/trunk/libf/dyn3d/conf_gcm.F
===================================================================
--- LMDZ5/trunk/libf/dyn3d/conf_gcm.F	(revision 1696)
+++ LMDZ5/trunk/libf/dyn3d/conf_gcm.F	(revision 1697)
@@ -14,4 +14,6 @@
 #endif
       USE infotrac, ONLY : type_trac
+      use assert_m, only: assert
+
       IMPLICIT NONE
 c-----------------------------------------------------------------------
@@ -93,5 +95,6 @@
       CALL getin('lunout', lunout)
       IF (lunout /= 5 .and. lunout /= 6) THEN
-        OPEN(lunout,FILE='lmdz.out')
+        OPEN(UNIT=lunout,FILE='lmdz.out',ACTION='write', 
+     &          STATUS='unknown',FORM='formatted')
       ENDIF
 
@@ -173,8 +176,4 @@
 
 !Config  Key  = nsplit_phys
-!Config  Desc = nombre de pas par jour
-!Config  Def  = 1 
-!Config  Help = nombre de pas par jour (multiple de iperiod) (
-!Config          ici pour  dt = 1 min ) 
        nsplit_phys = 1 
        CALL getin('nsplit_phys',nsplit_phys)
@@ -625,5 +624,4 @@
       CALL getin('ok_dyn_ave',ok_dyn_ave) 
 
-
       write(lunout,*)' #########################################'
       write(lunout,*)' Configuration des parametres du gcm: '
@@ -635,4 +633,5 @@
       write(lunout,*)' day_step = ', day_step
       write(lunout,*)' iperiod = ', iperiod
+      write(lunout,*)' nsplit_phys = ', nsplit_phys
       write(lunout,*)' iconser = ', iconser
       write(lunout,*)' iecri = ', iecri
@@ -805,8 +804,8 @@
 !Config  Desc = sortie des transports zonaux dans la dynamique
 !Config  Def  = n 
-!Config  Help =  
+!Config  Help = Permet de mettre en route le calcul des transports 
 !Config          
-       ok_dynzon = .FALSE.
-       CALL getin('ok_dynzon',ok_dynzon) 
+      ok_dynzon = .FALSE. 
+      CALL getin('ok_dynzon',ok_dynzon) 
 
 !Config  Key  = ok_dyn_ins
@@ -838,5 +837,5 @@
         write(lunout,*)'STOP !!!'
         write(lunout,*)'use_filtre_fft n est pas implemente dans dyn3d'
-        STOP
+        STOP 1
       ENDIF
       
@@ -848,4 +847,9 @@
       ok_strato=.FALSE.
       CALL getin('ok_strato',ok_strato)
+
+      vert_prof_dissip = merge(1, 0, ok_strato .and. llm==39)
+      CALL getin('vert_prof_dissip', vert_prof_dissip)
+      call assert(vert_prof_dissip == 0 .or. vert_prof_dissip ==  1,
+     $     "bad value for vert_prof_dissip")
 
 !Config  Key  = ok_gradsfile
Index: LMDZ5/trunk/libf/dyn3d/gcm.F
===================================================================
--- LMDZ5/trunk/libf/dyn3d/gcm.F	(revision 1696)
+++ LMDZ5/trunk/libf/dyn3d/gcm.F	(revision 1697)
@@ -405,5 +405,5 @@
 
       CALL inidissip( lstardis, nitergdiv, nitergrot, niterh   ,
-     *                tetagdiv, tetagrot , tetatemp              )
+     *                tetagdiv, tetagrot , tetatemp, vert_prof_dissip)
 
 c-----------------------------------------------------------------------
Index: LMDZ5/trunk/libf/dyn3d/inidissip.F90
===================================================================
--- LMDZ5/trunk/libf/dyn3d/inidissip.F90	(revision 1696)
+++ LMDZ5/trunk/libf/dyn3d/inidissip.F90	(revision 1697)
@@ -3,5 +3,5 @@
 !
 SUBROUTINE inidissip ( lstardis,nitergdiv,nitergrot,niterh  , &
-     tetagdiv,tetagrot,tetatemp             )
+     tetagdiv,tetagrot,tetatemp, vert_prof_dissip)
   !=======================================================================
   !   initialisation de la dissipation horizontale
@@ -25,4 +25,10 @@
   INTEGER,INTENT(in) :: nitergdiv,nitergrot,niterh
   REAL,INTENT(in) :: tetagdiv,tetagrot,tetatemp
+
+  integer, INTENT(in):: vert_prof_dissip
+  ! Vertical profile of horizontal dissipation
+  ! Allowed values:
+  ! 0: fractional function of pressure
+  ! 1: tanh of altitude
 
 ! Local variables:
@@ -167,5 +173,5 @@
   !   --------------------------------------------------
 
-  if (ok_strato .and. llm==39) then
+  if (vert_prof_dissip == 1) then
      do l=1,llm
         pseudoz=8.*log(preff/presnivs(l))
Index: LMDZ5/trunk/libf/dyn3dpar/comdissnew.h
===================================================================
--- LMDZ5/trunk/libf/dyn3dpar/comdissnew.h	(revision 1696)
+++ LMDZ5/trunk/libf/dyn3dpar/comdissnew.h	(revision 1697)
@@ -12,8 +12,14 @@
 
       COMMON/comdissnew/ lstardis,nitergdiv,nitergrot,niterh,tetagdiv,  &
-     &                   tetagrot,tetatemp,coefdis 
+     &                   tetagrot,tetatemp,coefdis, vert_prof_dissip
 
       LOGICAL lstardis
       INTEGER nitergdiv, nitergrot, niterh
+
+      integer vert_prof_dissip ! vertical profile of horizontal dissipation
+!     Allowed values:
+!     0: fractional function of pressure
+!     1: tanh of altitude
+
       REAL     tetagdiv, tetagrot,  tetatemp, coefdis
 
Index: LMDZ5/trunk/libf/dyn3dpar/conf_gcm.F
===================================================================
--- LMDZ5/trunk/libf/dyn3dpar/conf_gcm.F	(revision 1696)
+++ LMDZ5/trunk/libf/dyn3dpar/conf_gcm.F	(revision 1697)
@@ -6,4 +6,5 @@
       SUBROUTINE conf_gcm( tapedef, etatinit, clesphy0 )
 c
+      USE control_mod
 #ifdef CPP_IOIPSL
       use IOIPSL
@@ -16,6 +17,7 @@
       use mod_hallo, ONLY : use_mpi_alloc
       use parallel, ONLY : omp_chunk
-      USE control_mod
       USE infotrac, ONLY : type_trac
+      use assert_m, only: assert
+
       IMPLICIT NONE
 c-----------------------------------------------------------------------
@@ -43,10 +45,10 @@
 #include "serre.h"
 #include "comdissnew.h"
-!#include "clesphys.h"
-#include "iniprint.h"
 #include "temps.h"
 #include "comconst.h"
 
 ! FH 2008/05/09 On elimine toutes les clefs physiques dans la dynamique
+! #include "clesphys.h"
+#include "iniprint.h"
 c
 c
@@ -105,5 +107,4 @@
         OPEN(UNIT=lunout,FILE='lmdz.out_0000',ACTION='write', 
      &          STATUS='unknown',FORM='formatted')
-
       ENDIF
 
@@ -185,8 +186,4 @@
 
 !Config  Key  = nsplit_phys
-!Config  Desc = nombre d'iteration de la physique
-!Config  Def  = 240 
-!Config  Help = nombre d'itration de la physique
-!
        nsplit_phys = 1 
        CALL getin('nsplit_phys',nsplit_phys)
@@ -325,5 +322,4 @@
        CALL getin('tau_top_bound',tau_top_bound)
 
-!
 !Config  Key  = coefdis
 !Config  Desc = coefficient pour gamdissip
@@ -608,5 +604,4 @@
       type_trac = 'lmdz'
       CALL getin('type_trac',type_trac)
-
 
 !Config  Key  = config_inca
@@ -830,5 +825,5 @@
 
 !Config  Key  = ok_dynzon 
-!Config  Desc = calcul et sortie des transports 
+!Config  Desc = sortie des transports zonaux dans la dynamique
 !Config  Def  = n 
 !Config  Help = Permet de mettre en route le calcul des transports 
@@ -865,5 +860,5 @@
         write(lunout,*)"Le zoom en longitude est incompatible",
      &                 " avec l'utilisation du filtre FFT ",
-     &                 "---> filtre FFT dÃ©sactivÃ© "
+     &                 "---> FFT filter not active"
        use_filtre_fft=.FALSE.
       ENDIF
@@ -898,4 +893,9 @@
       ok_strato=.FALSE.
       CALL getin('ok_strato',ok_strato)
+
+      vert_prof_dissip = merge(1, 0, ok_strato .and. llm==39)
+      CALL getin('vert_prof_dissip', vert_prof_dissip)
+      call assert(vert_prof_dissip == 0 .or. vert_prof_dissip ==  1,
+     $     "bad value for vert_prof_dissip")
 
 !Config  Key  = ok_gradsfile
@@ -968,5 +968,5 @@
       write(lunout,*)' type_trac = ', type_trac
       write(lunout,*)' config_inca = ', config_inca
-      write(lunout,*)' ok_dynzon = ', ok_dynzon 
+      write(lunout,*)' ok_dynzon = ', ok_dynzon
       write(lunout,*)' ok_dyn_ins = ', ok_dyn_ins 
       write(lunout,*)' ok_dyn_ave = ', ok_dyn_ave 
Index: LMDZ5/trunk/libf/dyn3dpar/gcm.F
===================================================================
--- LMDZ5/trunk/libf/dyn3dpar/gcm.F	(revision 1696)
+++ LMDZ5/trunk/libf/dyn3dpar/gcm.F	(revision 1697)
@@ -418,5 +418,5 @@
 
       CALL inidissip( lstardis, nitergdiv, nitergrot, niterh   ,
-     *                tetagdiv, tetagrot , tetatemp              )
+     *                tetagdiv, tetagrot , tetatemp, vert_prof_dissip)
 
 c-----------------------------------------------------------------------
Index: LMDZ5/trunk/libf/dyn3dpar/inidissip.F90
===================================================================
--- LMDZ5/trunk/libf/dyn3dpar/inidissip.F90	(revision 1696)
+++ LMDZ5/trunk/libf/dyn3dpar/inidissip.F90	(revision 1697)
@@ -3,5 +3,5 @@
 !
 SUBROUTINE inidissip ( lstardis,nitergdiv,nitergrot,niterh  , &
-     tetagdiv,tetagrot,tetatemp             )
+     tetagdiv,tetagrot,tetatemp, vert_prof_dissip)
   !=======================================================================
   !   initialisation de la dissipation horizontale
@@ -25,4 +25,10 @@
   INTEGER,INTENT(in) :: nitergdiv,nitergrot,niterh
   REAL,INTENT(in) :: tetagdiv,tetagrot,tetatemp
+
+  integer, INTENT(in):: vert_prof_dissip
+  ! Vertical profile of horizontal dissipation
+  ! Allowed values:
+  ! 0: fractional function of pressure
+  ! 1: tanh of altitude
 
 ! Local variables:
@@ -167,5 +173,5 @@
   !   --------------------------------------------------
 
-  if (ok_strato .and. llm==39) then
+  if (vert_prof_dissip == 1) then
      do l=1,llm
         pseudoz=8.*log(preff/presnivs(l))
