Index: /trunk/libf/dyn3d/ce0l.F90
===================================================================
--- /trunk/libf/dyn3d/ce0l.F90	(revision 100)
+++ /trunk/libf/dyn3d/ce0l.F90	(revision 101)
@@ -27,4 +27,5 @@
 #endif
   IMPLICIT NONE
+#include "iniprint.h"
 #ifndef CPP_EARTH
   WRITE(lunout,*)'limit_netcdf: Earth-specific routine, needs Earth physics'
@@ -36,5 +37,4 @@
 #include "paramet.h"
 #include "indicesol.h"
-#include "iniprint.h"
 #include "temps.h"
 #include "logic.h"
Index: /trunk/libf/dyn3d/gcm.F
===================================================================
--- /trunk/libf/dyn3d/gcm.F	(revision 100)
+++ /trunk/libf/dyn3d/gcm.F	(revision 101)
@@ -22,7 +22,9 @@
 ! dynamique -> physique pour l'initialisation
 ! Ehouarn: for now these only apply to Earth:
-#ifdef CPP_EARTH
+#ifdef CPP_PHYS
       USE dimphy
       USE comgeomphy
+#endif
+#ifdef CPP_EARTH
       USE mod_phys_lmdz_para, ONLY : klon_mpi_para_nb
 #endif
@@ -180,6 +182,6 @@
 !#ifdef CPP_EARTH
 #ifdef CPP_PHYS
-      CALL Init_Phys_lmdz(iim,jjp1,llm,1,(/(jjm-1)*iim+2/))
-      call InitComgeomphy
+      CALL init_phys_lmdz(iim,jjp1,llm,1,(/(jjm-1)*iim+2/))
+      call initcomgeomphy
 #endif
 !      endif
@@ -482,5 +484,5 @@
       else
 ! A voir pour Titan et Venus
-      write(lunout,*)'A VOIR POUR VENUS ET TITAN: separation en annees...'
+      write(lunout,*)'A VOIR POUR VENUS/TITAN: separation en annees...'
       endif ! planet_type
 
Index: /trunk/libf/dyn3d/leapfrog.F
===================================================================
--- /trunk/libf/dyn3d/leapfrog.F	(revision 100)
+++ /trunk/libf/dyn3d/leapfrog.F	(revision 101)
@@ -196,4 +196,9 @@
       real,external :: cpdet
       real :: ztetaec(ip1jmp1,llm)
+
+c dummy: sinon cette routine n'est jamais compilee...
+      if(1.eq.0) then
+        CALL init_phys_lmdz(iim,jjp1,llm,1,(/(jjm-1)*iim+2/))
+      endif
 
       itaufin   = nday*day_step
Index: /trunk/libf/dyn3d/logic.h
===================================================================
--- /trunk/libf/dyn3d/logic.h	(revision 100)
+++ /trunk/libf/dyn3d/logic.h	(revision 101)
@@ -10,10 +10,10 @@
      &  statcl,conser,apdiss,apdelq,saison,ecripar,fxyhypb,ysinus       &
      &  ,read_start,ok_guide,ok_strato,ok_gradsfile                     &
-     &  ,ok_limit,ok_etat0
+     &  ,ok_limit,ok_etat0,iflag_trac
 
       LOGICAL purmats,forward,leapf,apphys,statcl,conser,               &
      & apdiss,apdelq,saison,ecripar,fxyhypb,ysinus                      &
      &  ,read_start,ok_guide,ok_strato,ok_gradsfile                     &
-     &  ,ok_limit,ok_etat0
+     &  ,ok_limit,ok_etat0,iflag_trac
 
       INTEGER iflag_phys
Index: /trunk/libf/dyn3d/sortvarc.F
===================================================================
--- /trunk/libf/dyn3d/sortvarc.F	(revision 100)
+++ /trunk/libf/dyn3d/sortvarc.F	(revision 101)
@@ -5,4 +5,6 @@
      $(itau,ucov,teta,ps,masse,pk,phis,vorpot,phi,bern,dp,time ,
      $ vcov )
+
+      use control_mod,only:resetvarc 
       IMPLICIT NONE
 
Index: /trunk/libf/dyn3dpar/ce0l.F90
===================================================================
--- /trunk/libf/dyn3dpar/ce0l.F90	(revision 100)
+++ /trunk/libf/dyn3dpar/ce0l.F90	(revision 101)
@@ -30,4 +30,5 @@
 #endif
   IMPLICIT NONE
+#include "iniprint.h"
 #ifndef CPP_EARTH
   WRITE(lunout,*)'limit_netcdf: Earth-specific routine, needs Earth physics'
@@ -39,5 +40,4 @@
 #include "paramet.h"
 #include "indicesol.h"
-#include "iniprint.h"
 #include "temps.h"
 #include "logic.h"
Index: /trunk/libf/dyn3dpar/gcm.F
===================================================================
--- /trunk/libf/dyn3dpar/gcm.F	(revision 100)
+++ /trunk/libf/dyn3dpar/gcm.F	(revision 101)
@@ -188,5 +188,5 @@
 !#ifdef CPP_EARTH
 #ifdef CPP_PHYS
-        CALL Init_Phys_lmdz(iim,jjp1,llm,mpi_size,distrib_phys)
+        CALL init_phys_lmdz(iim,jjp1,llm,mpi_size,distrib_phys)
 #endif
 !      endif ! of if (planet_type.eq."earth")
@@ -210,5 +210,5 @@
 #ifdef CPP_PHYS
 c$OMP PARALLEL
-      call InitComgeomphy
+      call initcomgeomphy
 c$OMP END PARALLEL 
 #endif
@@ -513,5 +513,5 @@
       else
 ! A voir pour Titan et Venus
-      write(lunout,*)'A VOIR POUR VENUS ET TITAN: separation en annees...'
+      write(lunout,*)'A VOIR POUR VENUS/TITAN: separation en annees...'
       endif ! planet_type
 
Index: /trunk/libf/dyn3dpar/leapfrog_p.F
===================================================================
--- /trunk/libf/dyn3dpar/leapfrog_p.F	(revision 100)
+++ /trunk/libf/dyn3dpar/leapfrog_p.F	(revision 101)
@@ -203,4 +203,9 @@
       LOGICAL :: ok_start_timer=.FALSE.
       LOGICAL, SAVE :: firstcall=.TRUE.
+
+c dummy: sinon cette routine n'est jamais compilee...
+      if(1.eq.0) then
+        CALL init_phys_lmdz(iim,jjp1,llm,1,(/(jjm-1)*iim+2/))
+      endif
 
 c$OMP MASTER
Index: /trunk/libf/dyn3dpar/logic.h
===================================================================
--- /trunk/libf/dyn3dpar/logic.h	(revision 100)
+++ /trunk/libf/dyn3dpar/logic.h	(revision 101)
@@ -10,10 +10,10 @@
      &  statcl,conser,apdiss,apdelq,saison,ecripar,fxyhypb,ysinus       &
      &  ,read_start,ok_guide,ok_strato,ok_gradsfile                     &
-     &  ,ok_limit,ok_etat0
+     &  ,ok_limit,ok_etat0,iflag_trac
 
       LOGICAL purmats,forward,leapf,apphys,statcl,conser,               &
      & apdiss,apdelq,saison,ecripar,fxyhypb,ysinus                      &
      &  ,read_start,ok_guide,ok_strato,ok_gradsfile                     &
-     &  ,ok_limit,ok_etat0
+     &  ,ok_limit,ok_etat0,iflag_trac
 
       INTEGER iflag_phys
Index: /trunk/libf/dyn3dpar/sortvarc.F
===================================================================
--- /trunk/libf/dyn3dpar/sortvarc.F	(revision 100)
+++ /trunk/libf/dyn3dpar/sortvarc.F	(revision 101)
@@ -5,4 +5,6 @@
      $(itau,ucov,teta,ps,masse,pk,phis,vorpot,phi,bern,dp,time ,
      $ vcov )
+
+      use control_mod,only:resetvarc 
       IMPLICIT NONE
 
Index: /trunk/libf/phyvenus/YOMCST.h
===================================================================
--- /trunk/libf/phyvenus/YOMCST.h	(revision 100)
+++ /trunk/libf/phyvenus/YOMCST.h	(revision 101)
@@ -10,9 +10,9 @@
       REAL RDAY,REA,REPSM,RSIYEA,RSIDAY,ROMEGA
 ! A1.1.bis Constantes concernant l'orbite de la Terre:
-      REAL :: R_ecc, R_peri, R_incl
+      REAL R_ecc, R_peri, R_incl
 ! A1.2 Geoide
       REAL RA,RG,R1SA
 ! A1.3 Radiation
-!     REAL :: RSIGMA,RI0
+!     REAL RSIGMA,RI0
       REAL RSIGMA
 ! A1.4 Thermodynamic gas phase
@@ -31,5 +31,5 @@
 !
       COMMON/YOMCST/RPI ,RCLUM, RHPLA, RKBOL, RNAVO ,RDAY  ,REA         &
-     & ,REPSM ,RSIYEA,RSIDAY,ROMEGA , R_ecc, R_peri, R_incl,            &
+     & ,REPSM ,RSIYEA,RSIDAY,ROMEGA , R_ecc, R_peri, R_incl             &
      & ,RA    ,RG ,R1SA                                                 &
      & ,RSIGMA,R ,RMD   ,RMV   ,RD    ,RV    ,RCPD ,RCPV,RCVD           &
Index: /trunk/libf/phyvenus/aaam_bud.F
===================================================================
--- /trunk/libf/phyvenus/aaam_bud.F	(revision 100)
+++ /trunk/libf/phyvenus/aaam_bud.F	(revision 101)
@@ -6,4 +6,5 @@
      i                   p, u, v)
 c
+      use dimphy
       implicit none
 c======================================================================
@@ -78,5 +79,4 @@
 
 #include "dimensions.h"
-#include "dimphy.h"
 c
 c ARGUMENTS
Index: /trunk/libf/phyvenus/ajsec.F
===================================================================
--- /trunk/libf/phyvenus/ajsec.F	(revision 100)
+++ /trunk/libf/phyvenus/ajsec.F	(revision 101)
@@ -5,4 +5,6 @@
       SUBROUTINE ajsec(paprs, pplay, ppk, tfi, ufi, vfi, nq, qfi, 
      .                             d_tfi, d_ufi, d_vfi, d_qfi)
+
+      use dimphy
       IMPLICIT none
 c======================================================================
@@ -25,5 +27,4 @@
 c======================================================================
 #include "dimensions.h"
-#include "dimphy.h"
 #include "YOMCST.h"
       REAL paprs(klon,klev+1), pplay(klon,klev)
@@ -35,7 +36,5 @@
       REAL qfi(klon,klev,nq), d_qfi(klon,klev,nq)
 c
-      INTEGER limbas, limhau ! les couches a ajuster
-ccc      PARAMETER (limbas=klev-3, limhau=klev)
-      PARAMETER (limbas=1, limhau=klev)
+      INTEGER,save :: limbas, limhau ! les couches a ajuster
 c
       REAL zh(klon,klev)
@@ -50,4 +49,7 @@
 c Initialisation:
 c
+      limbas=1
+      limhau=klev
+
       DO k = 1, klev
       DO i = 1, klon
Index: /trunk/libf/phyvenus/ballon.F
===================================================================
--- /trunk/libf/phyvenus/ballon.F	(revision 100)
+++ /trunk/libf/phyvenus/ballon.F	(revision 101)
@@ -2,4 +2,5 @@
      i                   temp, p, u, v, geop)
 
+      use dimphy
       implicit none
 
@@ -94,5 +95,4 @@
 
 #include "dimensions.h"
-#include "dimphy.h"
 #include "YOMCST.h"
 c
@@ -256,4 +256,5 @@
      .                       phi,lam,ubal,vbal,abal)
 
+      use dimphy
       implicit none
 
@@ -284,5 +285,4 @@
 
 #include "dimensions.h"
-#include "dimphy.h"
 #include "YOMCST.h"
 c
@@ -355,4 +355,5 @@
       subroutine pos_implem(phi,lam,ubal,vbal,dt)
 
+      use dimphy
       implicit none
 
@@ -371,5 +372,4 @@
 
 #include "dimensions.h"
-#include "dimphy.h"
 #include "YOMCST.h"
 c
Index: /trunk/libf/phyvenus/clmain.F
===================================================================
--- /trunk/libf/phyvenus/clmain.F	(revision 100)
+++ /trunk/libf/phyvenus/clmain.F	(revision 101)
@@ -34,4 +34,5 @@
       USE ioipsl
       USE interface_surf
+      use dimphy
       IMPLICIT none
 c======================================================================
@@ -65,5 +66,4 @@
 c======================================================================
 #include "dimensions.h"
-#include "dimphy.h"
 c$$$ PB ajout pour soil
 #include "dimsoil.h"
@@ -488,4 +488,5 @@
 
       USE interface_surf
+      use dimphy
 
       IMPLICIT none
@@ -495,5 +496,4 @@
 c======================================================================
 #include "dimensions.h"
-#include "dimphy.h"
 #include "YOMCST.h"
 #include "dimsoil.h"
@@ -766,4 +766,6 @@
      e                  paprs,pplay,delp,
      s                  d_ven,flux_v)
+
+      use dimphy
       IMPLICIT none
 c======================================================================
@@ -789,5 +791,4 @@
 c======================================================================
 #include "dimensions.h"
-#include "dimphy.h"
 #include "iniprint.h"
       INTEGER knon
@@ -894,4 +895,6 @@
      .                  ts,u,v,t,
      .                  pcfm, pcfh)
+
+      use dimphy
       IMPLICIT none
 c======================================================================
@@ -914,5 +917,4 @@
 c======================================================================
 #include "dimensions.h"
-#include "dimphy.h"
 #include "YOMCST.h"
 #include "iniprint.h"
@@ -949,7 +951,4 @@
       PARAMETER (prandtl=0.4)
       INTEGER isommet ! le sommet de la couche limite
-c TEST VENUS
-      PARAMETER (isommet=klev)
-c     PARAMETER (isommet=5)
 
       LOGICAL tvirtu ! calculer Ri d'une maniere plus performante
@@ -995,4 +994,6 @@
       DATA appel1er /.TRUE./
 c
+      isommet=klev
+
       IF (appel1er) THEN
         if (prt_level > 9) THEN
@@ -1177,4 +1178,6 @@
       SUBROUTINE coefkz2(knon, paprs, pplay,t,
      .                  pcfm, pcfh)
+
+      use dimphy
       IMPLICIT none
 c======================================================================
@@ -1193,5 +1196,4 @@
 c======================================================================
 #include "dimensions.h"
-#include "dimphy.h"
 #include "YOMCST.h"
 #include "iniprint.h"
Index: /trunk/libf/phyvenus/clmain.classic
===================================================================
--- /trunk/libf/phyvenus/clmain.classic	(revision 100)
+++ /trunk/libf/phyvenus/clmain.classic	(revision 101)
@@ -34,4 +34,5 @@
       USE ioipsl
       USE interface_surf
+      use dimphy
       IMPLICIT none
 c======================================================================
@@ -65,5 +66,4 @@
 c======================================================================
 #include "dimensions.h"
-#include "dimphy.h"
 c$$$ PB ajout pour soil
 #include "dimsoil.h"
@@ -488,4 +488,5 @@
 
       USE interface_surf
+      use dimphy
 
       IMPLICIT none
@@ -495,5 +496,4 @@
 c======================================================================
 #include "dimensions.h"
-#include "dimphy.h"
 #include "YOMCST.h"
 #include "dimsoil.h"
@@ -766,4 +766,6 @@
      e                  paprs,pplay,delp,
      s                  d_ven,flux_v)
+
+      use dimphy
       IMPLICIT none
 c======================================================================
@@ -789,5 +791,4 @@
 c======================================================================
 #include "dimensions.h"
-#include "dimphy.h"
 #include "iniprint.h"
       INTEGER knon
@@ -894,4 +895,6 @@
      .                  ts,u,v,t,
      .                  pcfm, pcfh)
+
+      use dimphy
       IMPLICIT none
 c======================================================================
@@ -914,5 +917,4 @@
 c======================================================================
 #include "dimensions.h"
-#include "dimphy.h"
 #include "YOMCST.h"
 #include "iniprint.h"
@@ -1177,4 +1179,6 @@
       SUBROUTINE coefkz2(knon, paprs, pplay,t,
      .                  pcfm, pcfh)
+
+      use dimphy
       IMPLICIT none
 c======================================================================
@@ -1193,5 +1197,4 @@
 c======================================================================
 #include "dimensions.h"
-#include "dimphy.h"
 #include "YOMCST.h"
 #include "iniprint.h"
Index: /trunk/libf/phyvenus/clmain.simple
===================================================================
--- /trunk/libf/phyvenus/clmain.simple	(revision 100)
+++ /trunk/libf/phyvenus/clmain.simple	(revision 101)
@@ -28,4 +28,5 @@
 c---------------------------------------------------------------
       USE ioipsl
+      use dimphy
       IMPLICIT none
 c======================================================================
@@ -59,5 +60,4 @@
 c======================================================================
 #include "dimensions.h"
-#include "dimphy.h"
 c$$$ PB ajout pour soil
 #include "dimsoil.h"
@@ -359,4 +359,5 @@
 
       USE interface_surf
+      use dimphy
 
       IMPLICIT none
@@ -366,5 +367,4 @@
 c======================================================================
 #include "dimensions.h"
-#include "dimphy.h"
 #include "YOMCST.h"
 #include "dimsoil.h"
@@ -637,4 +637,6 @@
      e                  paprs,pplay,delp,
      s                  d_ven,flux_v)
+
+      use dimphy
       IMPLICIT none
 c======================================================================
@@ -660,5 +662,4 @@
 c======================================================================
 #include "dimensions.h"
-#include "dimphy.h"
 #include "iniprint.h"
       INTEGER knon
@@ -765,4 +766,6 @@
      .                  ts,u,v,t,
      .                  pcfm, pcfh)
+
+      use dimphy
       IMPLICIT none
 c======================================================================
@@ -785,5 +788,4 @@
 c======================================================================
 #include "dimensions.h"
-#include "dimphy.h"
 #include "YOMCST.h"
 #include "iniprint.h"
@@ -1046,4 +1048,6 @@
       SUBROUTINE coefkz2(knon, paprs, pplay,t,
      .                  pcfm, pcfh)
+
+      use dimphy
       IMPLICIT none
 c======================================================================
@@ -1062,5 +1066,4 @@
 c======================================================================
 #include "dimensions.h"
-#include "dimphy.h"
 #include "YOMCST.h"
 #include "iniprint.h"
Index: /trunk/libf/phyvenus/cltrac.F
===================================================================
--- /trunk/libf/phyvenus/cltrac.F	(revision 100)
+++ /trunk/libf/phyvenus/cltrac.F	(revision 101)
@@ -4,4 +4,6 @@
       SUBROUTINE cltrac(dtime,coef,t,tr,flux,paprs,pplay,delp,
      s                  d_tr)
+
+      use dimphy
       IMPLICIT none
 c======================================================================
@@ -26,5 +28,4 @@
 c======================================================================
 #include "dimensions.h"
-#include "dimphy.h"
       REAL dtime
       REAL coef(klon,klev)
Index: /trunk/libf/phyvenus/coefkzmin.F
===================================================================
--- /trunk/libf/phyvenus/coefkzmin.F	(revision 100)
+++ /trunk/libf/phyvenus/coefkzmin.F	(revision 101)
@@ -5,8 +5,9 @@
      .   ,km,kn)
 c      SUBROUTINE coefkzmin(ngrid,zlev,teta,ustar,km,kn)
+
+      use dimphy
       IMPLICIT NONE
 
 #include "dimensions.h"
-#include "dimphy.h"
 #include "YOMCST.h"
 
@@ -57,8 +58,4 @@
       integer l_mix,ngrid
 
-
-      integer nlay,nlev
-      PARAMETER (nlay=klev)
-      PARAMETER (nlev=klev+1)
 
       integer ig,k
Index: /trunk/libf/phyvenus/comcstVE.h
===================================================================
--- /trunk/libf/phyvenus/comcstVE.h	(revision 100)
+++ /trunk/libf/phyvenus/comcstVE.h	(revision 101)
@@ -2,6 +2,5 @@
 c INCLUDE comcstVE.h
 
-        integer nlve,nnuve,nbztopve,nbpsve,nbmat
-        parameter (nlve=kflev) ! fichiers Vincent: same grid than GCM
+        integer nnuve,nbztopve,nbpsve,nbmat
         parameter (nnuve=68)   ! fichiers Vincent et Bullock
         parameter (nbpsve=16)   ! number of psurf in Vincent's matrixes
Index: /trunk/libf/phyvenus/comgeomphy.F90
===================================================================
--- /trunk/libf/phyvenus/comgeomphy.F90	(revision 101)
+++ /trunk/libf/phyvenus/comgeomphy.F90	(revision 101)
@@ -0,0 +1,23 @@
+module comgeomphy
+   real,save,allocatable :: airephy(:)
+   real,save,allocatable :: cuphy(:)
+   real,save,allocatable :: cvphy(:)
+   real,save,allocatable :: rlatd(:)
+   real,save,allocatable :: rlond(:)
+!$OMP THREADPRIVATE(airephy,cuphy,cvphy,rlatd,rlond)
+contains
+  
+  subroutine initcomgeomphy
+  use dimphy
+  implicit none
+    
+ 
+    allocate(airephy(klon))
+    allocate(cuphy(klon))
+    allocate(cvphy(klon))
+    allocate(rlatd(klon))
+    allocate(rlond(klon))
+
+  end subroutine initcomgeomphy
+  
+end module comgeomphy
Index: /trunk/libf/phyvenus/diagphy.F
===================================================================
--- /trunk/libf/phyvenus/diagphy.F	(revision 100)
+++ /trunk/libf/phyvenus/diagphy.F	(revision 101)
@@ -48,8 +48,8 @@
 C======================================================================
 C 
+      use dimphy
       implicit none
 
 #include "dimensions.h"
-#include "dimphy.h"
 #include "YOMCST.h"
 C
@@ -208,8 +208,8 @@
 c======================================================================
  
+      use dimphy
       IMPLICIT NONE
 C
 #include "dimensions.h"
-#include "dimphy.h"
 #include "YOMCST.h"
 C
Index: /trunk/libf/phyvenus/dimphy.F90
===================================================================
--- /trunk/libf/phyvenus/dimphy.F90	(revision 101)
+++ /trunk/libf/phyvenus/dimphy.F90	(revision 101)
@@ -0,0 +1,40 @@
+MODULE dimphy
+  
+  INTEGER,SAVE :: klon
+  INTEGER,SAVE :: kdlon
+  INTEGER,SAVE :: kfdia
+  INTEGER,SAVE :: kidia
+  INTEGER,SAVE :: klev
+  INTEGER,SAVE :: klevp1
+  INTEGER,SAVE :: klevm1
+  INTEGER,SAVE :: kflev
+
+!$OMP THREADPRIVATE(klon,kfdia,kidia,kdlon)
+  REAL,save,allocatable,dimension(:) :: zmasq
+!$OMP THREADPRIVATE(zmasq)   
+
+CONTAINS
+  
+  SUBROUTINE init_dimphy(klon0,klev0)
+  IMPLICIT NONE
+  
+    INTEGER, INTENT(in) :: klon0
+    INTEGER, INTENT(in) :: klev0
+    
+    klon=klon0
+    
+    kdlon=klon
+    kidia=1
+    kfdia=klon
+!$OMP MASTER 
+    klev=klev0
+    klevp1=klev+1
+    klevm1=klev-1
+    kflev=klev
+!$OMP END MASTER    
+    ALLOCATE(zmasq(klon))    
+    
+  END SUBROUTINE init_dimphy
+
+  
+END MODULE dimphy
Index: /trunk/libf/phyvenus/drag_noro.F
===================================================================
--- /trunk/libf/phyvenus/drag_noro.F	(revision 100)
+++ /trunk/libf/phyvenus/drag_noro.F	(revision 101)
@@ -9,9 +9,9 @@
      s                   d_t, d_u, d_v)
 c
+      use dimphy
       IMPLICIT none
 
 #include "dimensions.h"
 #include "paramet.h"
-#include "dimphy.h"
 
 c======================================================================
Index: /trunk/libf/phyvenus/flott_gwd_ran.F
===================================================================
--- /trunk/libf/phyvenus/flott_gwd_ran.F	(revision 100)
+++ /trunk/libf/phyvenus/flott_gwd_ran.F	(revision 101)
@@ -12,9 +12,9 @@
 C 
 C
+      use dimphy
       implicit none
 
 #include "dimensions.h"
 #include "paramet.h"
-#include "dimphy.h"
 
 #include "YOEGWD.h"
@@ -40,7 +40,10 @@
 
 c ON CONSERVE LA MEMOIRE un certain temps AVEC UN SAVE ET UN COEF
-      real coef,d_u_sav(KLON,KLEV),d_v_sav(KLON,KLEV)
+      real coef
       parameter (coef = 0.986)
-      save d_u_sav,d_v_sav
+      real,save,allocatable :: d_u_sav(:,:),d_v_sav(:,:)
+      LOGICAL firstcall
+      SAVE firstcall
+      DATA firstcall/.true./
 
 C  GRAVITY-WAVES SPECIFICATIONS
@@ -85,4 +88,9 @@
 
 C  INITIALISATION
+
+      IF (firstcall) THEN
+        allocate(d_u_sav(klon,klev),d_v_sav(klon,klev))
+        firstcall=.false.
+      ENDIF
 
       BVSEC=1.E-6
Index: /trunk/libf/phyvenus/gwprofil.F
===================================================================
--- /trunk/libf/phyvenus/gwprofil.F	(revision 100)
+++ /trunk/libf/phyvenus/gwprofil.F	(revision 101)
@@ -36,9 +36,9 @@
 C     ntop.                                          
 C
+      use dimphy
       IMPLICIT NONE
 
 #include "dimensions.h"
 #include "paramet.h"
-#include "dimphy.h"
 
 #include "YOMCST.h"
Index: /trunk/libf/phyvenus/gwstress.F
===================================================================
--- /trunk/libf/phyvenus/gwstress.F	(revision 100)
+++ /trunk/libf/phyvenus/gwstress.F	(revision 101)
@@ -52,9 +52,9 @@
 c
 c-----------------------------------------------------------------------
+      use dimphy
       implicit none
 
 #include "dimensions.h"
 #include "paramet.h"
-#include "dimphy.h"
 
 #include "YOMCST.h"
Index: /trunk/libf/phyvenus/hgardfou.F
===================================================================
--- /trunk/libf/phyvenus/hgardfou.F	(revision 100)
+++ /trunk/libf/phyvenus/hgardfou.F	(revision 101)
@@ -3,4 +3,6 @@
 !
       SUBROUTINE hgardfou (t,tsol,text)
+
+      use dimphy
       IMPLICIT none
 c======================================================================
@@ -8,5 +10,4 @@
 c======================================================================
 #include "dimensions.h"
-#include "dimphy.h"
 #include "YOMCST.h"
       REAL t(klon,klev), tsol(klon)
Index: /trunk/libf/phyvenus/ini_histmth.h
===================================================================
--- /trunk/libf/phyvenus/ini_histmth.h	(revision 100)
+++ /trunk/libf/phyvenus/ini_histmth.h	(revision 101)
@@ -122,5 +122,5 @@
              IF (iq.LE.99) THEN
           WRITE(str2,'(i2.2)') iq
-          CALL histdef(nid_mth, tnom(iq), ttext(iq), "ppm",
+          CALL histdef(nid_mth, tname(iq), ttext(iq), "ppm",
      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
      .                "ave(X)", zsto,zout)
Index: /trunk/libf/phyvenus/inifis.F
===================================================================
--- /trunk/libf/phyvenus/inifis.F	(revision 100)
+++ /trunk/libf/phyvenus/inifis.F	(revision 101)
@@ -7,4 +7,6 @@
      $           plat,plon,parea,
      $           prad,pg,pr,pcpp)
+
+      use dimphy
       IMPLICIT NONE
 c
@@ -42,5 +44,4 @@
  
 #include "dimensions.h"
-#include "dimphy.h"
 
       REAL prad,pg,pr,pcpp,punjours
Index: /trunk/libf/phyvenus/iniphysiq.F
===================================================================
--- /trunk/libf/phyvenus/iniphysiq.F	(revision 100)
+++ /trunk/libf/phyvenus/iniphysiq.F	(revision 101)
@@ -9,4 +9,7 @@
      $           plat,plon,parea,pcu,pcv,
      $           prad,pg,pr,pcpp)
+
+      use dimphy
+      USE comgeomphy
       IMPLICIT NONE
 c
@@ -44,6 +47,4 @@
  
 #include "dimensions.h"
-#include "dimphy.h"
-#include "comgeomphy.h"
 
       REAL prad,pg,pr,pcpp,punjours
Index: /trunk/libf/phyvenus/init_phys_lmdz.F90
===================================================================
--- /trunk/libf/phyvenus/init_phys_lmdz.F90	(revision 101)
+++ /trunk/libf/phyvenus/init_phys_lmdz.F90	(revision 101)
@@ -0,0 +1,19 @@
+!
+!$Header$
+!
+SUBROUTINE init_phys_lmdz(iim,jjp1,llm,nb_proc,distrib)
+  USE mod_grid_phy_lmdz
+  USE dimphy
+  IMPLICIT NONE
+  
+    INTEGER,INTENT(in) :: iim
+    INTEGER,INTENT(in) :: jjp1
+    INTEGER,INTENT(in) :: llm
+    INTEGER,INTENT(in) :: nb_proc
+    INTEGER,INTENT(in) :: distrib(0:nb_proc-1)
+
+
+    CALL init_grid_phy_lmdz(iim,jjp1,llm)
+    CALL init_dimphy(klon,nbp_lev)
+ 
+END SUBROUTINE init_phys_lmdz  
Index: /trunk/libf/phyvenus/load_ksi.F
===================================================================
--- /trunk/libf/phyvenus/load_ksi.F	(revision 100)
+++ /trunk/libf/phyvenus/load_ksi.F	(revision 101)
@@ -1,9 +1,8 @@
       SUBROUTINE load_ksi(ksive)
       
+      use dimphy
       IMPLICIT none
 
 #include "dimensions.h"
-#include "dimphy.h"
-#include "raddim.h"
 #include "YOMCST.h"
 #include "comcstVE.h"
@@ -36,5 +35,5 @@
 
 c local variables
-      integer i,j,ig,band,pve
+      integer i,j,ig,band,pve,nlve
       integer mat,Nb,m,Nmat,nl_init,mat0
       parameter(nl_init=8)
@@ -45,9 +44,11 @@
       real   dlambda                  ! cm-1  
 
+      nlve = kflev
+
 c ------------------------
 c Loading the ksi file
 c ------------------------
- 
-       file = "ksi_global.txt"
+
+      file = "ksi_global.txt"
       open(10,file=file)
       
Index: /trunk/libf/phyvenus/load_psi.F
===================================================================
--- /trunk/libf/phyvenus/load_psi.F	(revision 100)
+++ /trunk/libf/phyvenus/load_psi.F	(revision 101)
@@ -3,9 +3,8 @@
      S              temp, psimap, deltapsimap)
       
+      use dimphy
       IMPLICIT none
 
 #include "dimensions.h"
-#include "dimphy.h"
-#include "raddim.h"
 #include "YOMCST.h"
 #include "comcstVE.h"
@@ -46,12 +45,14 @@
 
 c local variables
-      integer i,j,ig,band
+      integer i,j,ig,band,nlve
       integer mat,m,mat0
       character*100 file
-      real   bplck(0:nlve+1,nnuve)    ! Planck luminances in table layers
-      real   y(0:nlve,nnuve)          ! intermediaire Planck
-      real   zdblay(0:nlve+1,nnuve)   ! gradient en temperature de planck
+      real   bplck(0:kflev+1,nnuve)    ! Planck luminances in table layers
+      real   y(0:kflev,nnuve)          ! intermediaire Planck
+      real   zdblay(0:kflev+1,nnuve)   ! gradient en temperature de planck
       real   ksi
       real   factp,factz
+
+      nlve = kflev  ! (doit correspondre, pour bplck, y et zdblay)
 
 c -----------------------
Index: /trunk/libf/phyvenus/lw_venus_ve.F
===================================================================
--- /trunk/libf/phyvenus/lw_venus_ve.F	(revision 100)
+++ /trunk/libf/phyvenus/lw_venus_ve.F	(revision 101)
@@ -5,9 +5,8 @@
      S              ZFLNET)
       
+      use dimphy
       IMPLICIT none
 
 #include "dimensions.h"
-#include "dimphy.h"
-#include "raddim.h"
 #include "YOMCST.h"
 C
Index: /trunk/libf/phyvenus/lwi.F
===================================================================
--- /trunk/libf/phyvenus/lwi.F	(revision 100)
+++ /trunk/libf/phyvenus/lwi.F	(revision 101)
@@ -5,9 +5,9 @@
 c          differente des versions *.1mat  
 c !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+      use dimphy
       implicit none
 
 
 #include "dimensions.h"
-#include "dimphy.h"
 #include "comg1d.h"  !pour grads 1D
 #include "YOMCST.h"
Index: /trunk/libf/phyvenus/minmaxqfi.F
===================================================================
--- /trunk/libf/phyvenus/minmaxqfi.F	(revision 100)
+++ /trunk/libf/phyvenus/minmaxqfi.F	(revision 101)
@@ -3,8 +3,9 @@
 !
       SUBROUTINE minmaxqfi(zq,qmin,qmax,comment)
+
+      use dimphy
       IMPLICIT none
 
 #include "dimensions.h"
-#include "dimphy.h"
 
       CHARACTER*(*) comment
Index: /trunk/libf/phyvenus/mod_grid_phy_lmdz.F90
===================================================================
--- /trunk/libf/phyvenus/mod_grid_phy_lmdz.F90	(revision 101)
+++ /trunk/libf/phyvenus/mod_grid_phy_lmdz.F90	(revision 101)
@@ -0,0 +1,447 @@
+!
+!$Header$
+!
+MODULE mod_grid_phy_lmdz
+  INTEGER,SAVE :: nbp_lon  ! == iim
+  INTEGER,SAVE :: nbp_lat  ! == jjmp1
+  INTEGER,SAVE :: nbp_lev  ! == llm
+  INTEGER,SAVE :: klon_glo
+
+  INTERFACE grid1dTo2d_glo
+    MODULE PROCEDURE grid1dTo2d_glo_i,grid1dTo2d_glo_i1,grid1dTo2d_glo_i2,grid1dTo2d_glo_i3, &
+                     grid1dTo2d_glo_r,grid1dTo2d_glo_r1,grid1dTo2d_glo_r2,grid1dTo2d_glo_r3, &
+		     grid1dTo2d_glo_l,grid1dTo2d_glo_l1,grid1dTo2d_glo_l2,grid1dTo2d_glo_l3
+   END INTERFACE 
+
+   INTERFACE grid2dTo1d_glo
+    MODULE PROCEDURE grid2dTo1d_glo_i,grid2dTo1d_glo_i1,grid2dTo1d_glo_i2,grid2dTo1d_glo_i3, &
+                     grid2dTo1d_glo_r,grid2dTo1d_glo_r1,grid2dTo1d_glo_r2,grid2dTo1d_glo_r3, &
+		     grid2dTo1d_glo_l,grid2dTo1d_glo_l1,grid2dTo1d_glo_l2,grid2dTo1d_glo_l3
+   END INTERFACE 
+ 
+CONTAINS
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!! SUBROUTINE grid1dTo2d  !!  
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+
+  SUBROUTINE init_grid_phy_lmdz(iim,jjp1,llm)
+  IMPLICIT NONE
+  INTEGER, INTENT(in) :: iim
+  INTEGER, INTENT(in) :: jjp1
+  INTEGER, INTENT(in) :: llm
+  
+    nbp_lon=iim
+    nbp_lat=jjp1
+    nbp_lev=llm
+    klon_glo=(iim*jjp1)-2*(iim-1)
+  
+  END SUBROUTINE init_grid_phy_lmdz
+  
+  
+  SUBROUTINE grid1dTo2d_glo_i(VarIn,VarOut)  
+  IMPLICIT NONE  
+    INTEGER,INTENT(IN),DIMENSION(:)     :: VarIn
+    INTEGER,INTENT(OUT),DIMENSION(:,:)  :: VarOut
+    
+    CALL grid1dTo2d_glo_igen(VarIn,VarOut,1)
+  
+  END SUBROUTINE grid1dTo2d_glo_i
+  
+
+  SUBROUTINE grid1dTo2d_glo_i1(VarIn,VarOut)  
+  IMPLICIT NONE  
+    INTEGER,INTENT(IN),DIMENSION(:,:)     :: VarIn
+    INTEGER,INTENT(OUT),DIMENSION(:,:,:)  :: VarOut
+    
+    CALL grid1dTo2d_glo_igen(VarIn,VarOut,size(VarIn,2))
+  
+  END SUBROUTINE grid1dTo2d_glo_i1
+
+  SUBROUTINE grid1dTo2d_glo_i2(VarIn,VarOut)  
+  IMPLICIT NONE  
+    INTEGER,INTENT(IN),DIMENSION(:,:,:)     :: VarIn
+    INTEGER,INTENT(OUT),DIMENSION(:,:,:,:)  :: VarOut
+    
+    CALL grid1dTo2d_glo_igen(VarIn,VarOut,size(VarIn,2)*size(VarIn,3))
+  
+  END SUBROUTINE grid1dTo2d_glo_i2
+  
+  SUBROUTINE grid1dTo2d_glo_i3(VarIn,VarOut)  
+  IMPLICIT NONE  
+    INTEGER,INTENT(IN),DIMENSION(:,:,:,:)     :: VarIn
+    INTEGER,INTENT(OUT),DIMENSION(:,:,:,:,:)  :: VarOut
+    
+    CALL grid1dTo2d_glo_igen(VarIn,VarOut,size(VarIn,2)*size(VarIn,3)*size(VarIn,4))
+  
+  END SUBROUTINE grid1dTo2d_glo_i3
+
+
+  SUBROUTINE grid1dTo2d_glo_r(VarIn,VarOut)  
+  IMPLICIT NONE  
+    REAL,INTENT(IN),DIMENSION(:)     :: VarIn
+    REAL,INTENT(OUT),DIMENSION(:,:)  :: VarOut
+    
+    CALL grid1dTo2d_glo_rgen(VarIn,VarOut,1)
+  
+  END SUBROUTINE grid1dTo2d_glo_r
+  
+
+  SUBROUTINE grid1dTo2d_glo_r1(VarIn,VarOut)  
+  IMPLICIT NONE  
+    REAL,INTENT(IN),DIMENSION(:,:)     :: VarIn
+    REAL,INTENT(OUT),DIMENSION(:,:,:)  :: VarOut
+    
+    CALL grid1dTo2d_glo_rgen(VarIn,VarOut,size(VarIn,2))
+  
+  END SUBROUTINE grid1dTo2d_glo_r1
+
+  SUBROUTINE grid1dTo2d_glo_r2(VarIn,VarOut)  
+  IMPLICIT NONE  
+    REAL,INTENT(IN),DIMENSION(:,:,:)     :: VarIn
+    REAL,INTENT(OUT),DIMENSION(:,:,:,:)  :: VarOut
+    
+    CALL grid1dTo2d_glo_rgen(VarIn,VarOut,size(VarIn,2)*size(VarIn,3))
+  
+  END SUBROUTINE grid1dTo2d_glo_r2
+  
+  SUBROUTINE grid1dTo2d_glo_r3(VarIn,VarOut)  
+  IMPLICIT NONE  
+    REAL,INTENT(IN),DIMENSION(:,:,:,:)     :: VarIn
+    REAL,INTENT(OUT),DIMENSION(:,:,:,:,:)  :: VarOut
+    
+    CALL grid1dTo2d_glo_rgen(VarIn,VarOut,size(VarIn,2)*size(VarIn,3)*size(VarIn,4))
+  
+  END SUBROUTINE grid1dTo2d_glo_r3
+  
+  
+  
+  SUBROUTINE grid1dTo2d_glo_l(VarIn,VarOut)  
+  IMPLICIT NONE  
+    LOGICAL,INTENT(IN),DIMENSION(:)     :: VarIn
+    LOGICAL,INTENT(OUT),DIMENSION(:,:)  :: VarOut
+    
+    CALL grid1dTo2d_glo_lgen(VarIn,VarOut,1)
+  
+  END SUBROUTINE grid1dTo2d_glo_l
+  
+
+  SUBROUTINE grid1dTo2d_glo_l1(VarIn,VarOut)  
+  IMPLICIT NONE  
+    LOGICAL,INTENT(IN),DIMENSION(:,:)     :: VarIn
+    LOGICAL,INTENT(OUT),DIMENSION(:,:,:)  :: VarOut
+    
+    CALL grid1dTo2d_glo_lgen(VarIn,VarOut,size(VarIn,2))
+  
+  END SUBROUTINE grid1dTo2d_glo_l1
+
+  SUBROUTINE grid1dTo2d_glo_l2(VarIn,VarOut)  
+  IMPLICIT NONE  
+    LOGICAL,INTENT(IN),DIMENSION(:,:,:)     :: VarIn
+    LOGICAL,INTENT(OUT),DIMENSION(:,:,:,:)  :: VarOut
+    
+    CALL grid1dTo2d_glo_lgen(VarIn,VarOut,size(VarIn,2)*size(VarIn,3))
+  
+  END SUBROUTINE grid1dTo2d_glo_l2
+  
+  SUBROUTINE grid1dTo2d_glo_l3(VarIn,VarOut)  
+  IMPLICIT NONE  
+    LOGICAL,INTENT(IN),DIMENSION(:,:,:,:)     :: VarIn
+    LOGICAL,INTENT(OUT),DIMENSION(:,:,:,:,:)  :: VarOut
+    
+    CALL grid1dTo2d_glo_lgen(VarIn,VarOut,size(VarIn,2)*size(VarIn,3)*size(VarIn,4))
+  
+  END SUBROUTINE grid1dTo2d_glo_l3  
+  
+    SUBROUTINE grid2dTo1d_glo_i(VarIn,VarOut)  
+  IMPLICIT NONE  
+    INTEGER,INTENT(IN),DIMENSION(:,:) :: VarIn
+    INTEGER,INTENT(OUT),DIMENSION(:)  :: VarOut
+    
+    CALL grid2dTo1d_glo_igen(VarIn,VarOut,1)
+  
+  END SUBROUTINE grid2dTo1d_glo_i
+  
+
+  SUBROUTINE grid2dTo1d_glo_i1(VarIn,VarOut)  
+  IMPLICIT NONE  
+    INTEGER,INTENT(IN),DIMENSION(:,:,:) :: VarIn
+    INTEGER,INTENT(OUT),DIMENSION(:,:)  :: VarOut
+    
+    CALL grid2dTo1d_glo_igen(VarIn,VarOut,size(VarIn,3))
+  
+  END SUBROUTINE grid2dTo1d_glo_i1
+
+  SUBROUTINE grid2dTo1d_glo_i2(VarIn,VarOut)  
+  IMPLICIT NONE  
+    INTEGER,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn
+    INTEGER,INTENT(OUT),DIMENSION(:,:,:)  :: VarOut
+    
+    CALL grid2dTo1d_glo_igen(VarIn,VarOut,size(VarIn,3)*size(VarIn,4))
+  
+  END SUBROUTINE grid2dTo1d_glo_i2
+  
+  SUBROUTINE grid2dTo1d_glo_i3(VarIn,VarOut)  
+  IMPLICIT NONE  
+    INTEGER,INTENT(IN),DIMENSION(:,:,:,:,:) :: VarIn
+    INTEGER,INTENT(OUT),DIMENSION(:,:,:,:)  :: VarOut
+    
+    CALL grid2dTo1d_glo_igen(VarIn,VarOut,size(VarIn,3)*size(VarIn,4)*size(VarIn,5))
+  
+  END SUBROUTINE grid2dTo1d_glo_i3
+ 
+
+
+
+  SUBROUTINE grid2dTo1d_glo_r(VarIn,VarOut)  
+  IMPLICIT NONE  
+    REAL,INTENT(IN),DIMENSION(:,:) :: VarIn
+    REAL,INTENT(OUT),DIMENSION(:)  :: VarOut
+    
+    CALL grid2dTo1d_glo_rgen(VarIn,VarOut,1)
+  
+  END SUBROUTINE grid2dTo1d_glo_r
+  
+
+  SUBROUTINE grid2dTo1d_glo_r1(VarIn,VarOut)  
+  IMPLICIT NONE  
+    REAL,INTENT(IN),DIMENSION(:,:,:) :: VarIn
+    REAL,INTENT(OUT),DIMENSION(:,:)  :: VarOut
+    
+    CALL grid2dTo1d_glo_rgen(VarIn,VarOut,size(VarIn,3))
+  
+  END SUBROUTINE grid2dTo1d_glo_r1
+
+  SUBROUTINE grid2dTo1d_glo_r2(VarIn,VarOut)  
+  IMPLICIT NONE  
+    REAL,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn
+    REAL,INTENT(OUT),DIMENSION(:,:,:)  :: VarOut
+    
+    CALL grid2dTo1d_glo_rgen(VarIn,VarOut,size(VarIn,3)*size(VarIn,4))
+  
+  END SUBROUTINE grid2dTo1d_glo_r2
+  
+  SUBROUTINE grid2dTo1d_glo_r3(VarIn,VarOut)  
+  IMPLICIT NONE  
+    REAL,INTENT(IN),DIMENSION(:,:,:,:,:) :: VarIn
+    REAL,INTENT(OUT),DIMENSION(:,:,:,:)  :: VarOut
+    
+    CALL grid2dTo1d_glo_rgen(VarIn,VarOut,size(VarIn,3)*size(VarIn,4)*size(VarIn,5))
+  
+  END SUBROUTINE grid2dTo1d_glo_r3
+
+
+
+  SUBROUTINE grid2dTo1d_glo_l(VarIn,VarOut)  
+  IMPLICIT NONE  
+    LOGICAL,INTENT(IN),DIMENSION(:,:) :: VarIn
+    LOGICAL,INTENT(OUT),DIMENSION(:)  :: VarOut
+    
+    CALL grid2dTo1d_glo_lgen(VarIn,VarOut,1)
+  
+  END SUBROUTINE grid2dTo1d_glo_l
+  
+
+  SUBROUTINE grid2dTo1d_glo_l1(VarIn,VarOut)  
+  IMPLICIT NONE  
+    LOGICAL,INTENT(IN),DIMENSION(:,:,:) :: VarIn
+    LOGICAL,INTENT(OUT),DIMENSION(:,:)  :: VarOut
+    
+    CALL grid2dTo1d_glo_lgen(VarIn,VarOut,size(VarIn,3))
+  
+  END SUBROUTINE grid2dTo1d_glo_l1
+
+  SUBROUTINE grid2dTo1d_glo_l2(VarIn,VarOut)  
+  IMPLICIT NONE  
+    LOGICAL,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn
+    LOGICAL,INTENT(OUT),DIMENSION(:,:,:)  :: VarOut
+    
+    CALL grid2dTo1d_glo_lgen(VarIn,VarOut,size(VarIn,3)*size(VarIn,4))
+  
+  END SUBROUTINE grid2dTo1d_glo_l2
+  
+  SUBROUTINE grid2dTo1d_glo_l3(VarIn,VarOut)  
+  IMPLICIT NONE  
+    LOGICAL,INTENT(IN),DIMENSION(:,:,:,:,:) :: VarIn
+    LOGICAL,INTENT(OUT),DIMENSION(:,:,:,:)  :: VarOut
+    
+    CALL grid2dTo1d_glo_lgen(VarIn,VarOut,size(VarIn,3)*size(VarIn,4)*size(VarIn,5))
+  
+  END SUBROUTINE grid2dTo1d_glo_l3
+
+END MODULE mod_grid_phy_lmdz
+
+
+  
+  SUBROUTINE grid1dTo2d_glo_igen(VarIn,VarOut,dimsize)
+    USE mod_grid_phy_lmdz
+    IMPLICIT NONE
+
+    INTEGER,INTENT(IN) :: dimsize
+    INTEGER,INTENT(IN) ,DIMENSION(klon_glo,dimsize)       :: VarIn
+    INTEGER,INTENT(OUT),DIMENSION(nbp_lon*nbp_lat,dimsize)  :: VarOut
+    INTEGER :: i,ij,Offset
+
+    
+    Offset=nbp_lon
+        
+    DO i=1,dimsize
+      DO ij=1,klon_glo
+        VarOut(ij+offset-1,i)=VarIn(ij,i)
+      ENDDO
+    ENDDO
+    
+    
+    DO i=1,dimsize
+      DO ij=1,nbp_lon
+       VarOut(ij,i)=VarIn(1,i)
+      ENDDO
+    ENDDO
+    
+    
+    DO i=1,dimsize
+      DO ij=nbp_lon*(nbp_lat-1)+1,nbp_lat*nbp_lon
+       VarOut(ij,i)=VarIn(klon_glo,i)
+      ENDDO
+    ENDDO
+
+  END SUBROUTINE grid1dTo2d_glo_igen   
+
+
+  SUBROUTINE grid1dTo2d_glo_rgen(VarIn,VarOut,dimsize)
+    USE mod_grid_phy_lmdz
+    IMPLICIT NONE
+
+    INTEGER,INTENT(IN) :: dimsize
+    REAL,INTENT(IN) ,DIMENSION(klon_glo,dimsize)       :: VarIn
+    REAL,INTENT(OUT),DIMENSION(nbp_lon*nbp_lat,dimsize)  :: VarOut
+    INTEGER :: i,ij,Offset
+
+   
+    Offset=nbp_lon
+        
+    DO i=1,dimsize
+      DO ij=1,klon_glo
+        VarOut(ij+offset-1,i)=VarIn(ij,i)
+      ENDDO
+    ENDDO
+    
+    
+    DO i=1,dimsize
+      DO ij=1,nbp_lon
+       VarOut(ij,i)=VarIn(1,i)
+      ENDDO
+    ENDDO
+    
+    
+    DO i=1,dimsize
+      DO ij=nbp_lon*(nbp_lat-1)+1,nbp_lat*nbp_lon
+       VarOut(ij,i)=VarIn(klon_glo,i)
+      ENDDO
+    ENDDO
+
+  END SUBROUTINE grid1dTo2d_glo_rgen   
+
+  SUBROUTINE grid1dTo2d_glo_lgen(VarIn,VarOut,dimsize)
+    USE mod_grid_phy_lmdz
+    IMPLICIT NONE
+    
+    INTEGER,INTENT(IN) :: dimsize
+    LOGICAL,INTENT(IN) ,DIMENSION(klon_glo,dimsize)       :: VarIn
+    LOGICAL,INTENT(OUT),DIMENSION(nbp_lon*nbp_lat,dimsize)  :: VarOut
+    INTEGER :: i,ij,Offset
+
+    Offset=nbp_lon
+        
+    DO i=1,dimsize
+      DO ij=1,klon_glo
+        VarOut(ij+offset-1,i)=VarIn(ij,i)
+      ENDDO
+    ENDDO
+    
+    
+    DO i=1,dimsize
+      DO ij=1,nbp_lon
+       VarOut(ij,i)=VarIn(1,i)
+      ENDDO
+    ENDDO
+    
+    
+    DO i=1,dimsize
+      DO ij=nbp_lon*(nbp_lat-1)+1,nbp_lat*nbp_lon
+       VarOut(ij,i)=VarIn(klon_glo,i)
+      ENDDO
+    ENDDO
+
+  END SUBROUTINE grid1dTo2d_glo_lgen     
+  
+  
+  SUBROUTINE grid2dTo1d_glo_igen(VarIn,VarOut,dimsize)
+    USE mod_grid_phy_lmdz
+    IMPLICIT NONE
+
+    INTEGER,INTENT(IN) :: dimsize
+    INTEGER,INTENT(IN) ,DIMENSION(nbp_lon*nbp_lat,dimsize) :: VarIn
+    INTEGER,INTENT(OUT),DIMENSION(klon_glo,dimsize)      :: VarOut
+    INTEGER :: i,ij,offset
+
+    offset=nbp_lon
+
+    DO i=1,dimsize
+      DO ij=1,klon_glo
+        VarOut(ij,i)=VarIn(ij+offset-1,i)
+      ENDDO
+    ENDDO
+
+    DO i=1,dimsize
+      VarOut(1,i)=VarIn(1,i)
+    ENDDO
+    
+  END SUBROUTINE grid2dTo1d_glo_igen   
+  
+  SUBROUTINE grid2dTo1d_glo_rgen(VarIn,VarOut,dimsize)
+    USE mod_grid_phy_lmdz
+    IMPLICIT NONE
+
+    INTEGER,INTENT(IN) :: dimsize
+    REAL,INTENT(IN) ,DIMENSION(nbp_lon*nbp_lat,dimsize) :: VarIn
+    REAL,INTENT(OUT),DIMENSION(klon_glo,dimsize)      :: VarOut
+    INTEGER :: i,ij,offset
+
+    offset=nbp_lon
+
+    DO i=1,dimsize
+      DO ij=1,klon_glo
+        VarOut(ij,i)=VarIn(ij+offset-1,i)
+      ENDDO
+    ENDDO
+
+    DO i=1,dimsize
+      VarOut(1,i)=VarIn(1,i)
+    ENDDO
+    
+  END SUBROUTINE grid2dTo1d_glo_rgen 
+    
+  SUBROUTINE grid2dTo1d_glo_lgen(VarIn,VarOut,dimsize)
+    USE mod_grid_phy_lmdz
+    IMPLICIT NONE
+
+    INTEGER,INTENT(IN) :: dimsize
+    LOGICAL,INTENT(IN) ,DIMENSION(nbp_lon*nbp_lat,dimsize) :: VarIn
+    LOGICAL,INTENT(OUT),DIMENSION(klon_glo,dimsize)      :: VarOut
+    INTEGER :: i,ij,offset
+
+    offset=nbp_lon
+
+    DO i=1,dimsize
+      DO ij=1,klon_glo
+        VarOut(ij,i)=VarIn(ij+offset-1,i)
+      ENDDO
+    ENDDO
+
+    DO i=1,dimsize
+      VarOut(1,i)=VarIn(1,i)
+    ENDDO
+    
+  END SUBROUTINE grid2dTo1d_glo_lgen   
Index: /trunk/libf/phyvenus/orodrag.F
===================================================================
--- /trunk/libf/phyvenus/orodrag.F	(revision 100)
+++ /trunk/libf/phyvenus/orodrag.F	(revision 101)
@@ -8,9 +8,9 @@
      r                 , pvom,pvol,pte )
       
+      use dimphy
       IMPLICIT NONE
 
 #include "dimensions.h"
 #include "paramet.h"
-#include "dimphy.h"
 
 c
Index: /trunk/libf/phyvenus/orosetup.F
===================================================================
--- /trunk/libf/phyvenus/orosetup.F	(revision 100)
+++ /trunk/libf/phyvenus/orosetup.F	(revision 101)
@@ -95,9 +95,9 @@
 c
 c-----------------------------------------------------------------------
+      use dimphy
       implicit none
 
 #include "dimensions.h"
 #include "paramet.h"
-#include "dimphy.h"
 
 #include "YOMCST.h"
Index: /trunk/libf/phyvenus/phyetat0.F
===================================================================
--- /trunk/libf/phyvenus/phyetat0.F	(revision 100)
+++ /trunk/libf/phyvenus/phyetat0.F	(revision 101)
@@ -11,4 +11,6 @@
      .           tabcntr0,
      .           t_ancien,ancien_ok)
+
+      use dimphy
       IMPLICIT none
 c======================================================================
@@ -17,5 +19,4 @@
 c======================================================================
 #include "dimensions.h"
-#include "dimphy.h"
 #include "netcdf.inc"
 #include "dimsoil.h"
Index: /trunk/libf/phyvenus/phyredem.F
===================================================================
--- /trunk/libf/phyvenus/phyredem.F	(revision 100)
+++ /trunk/libf/phyvenus/phyredem.F	(revision 101)
@@ -12,4 +12,5 @@
 
       USE control_mod
+      use dimphy
       IMPLICIT none
 c======================================================================
@@ -18,5 +19,4 @@
 c======================================================================
 #include "dimensions.h"
-#include "dimphy.h"
 #include "netcdf.inc"
 #include "dimsoil.h"
@@ -78,5 +78,4 @@
       IF( cycle_diurne ) tab_cntrl( 7 ) = 1.
       IF(   soil_model ) tab_cntrl( 8 ) = 1.
-      IF(     new_oliq ) tab_cntrl( 9 ) = 1.
       IF(     ok_orodr ) tab_cntrl(10 ) = 1.
       IF(     ok_orolf ) tab_cntrl(11 ) = 1.
Index: /trunk/libf/phyvenus/physiq.F
===================================================================
--- /trunk/libf/phyvenus/physiq.F	(revision 100)
+++ /trunk/libf/phyvenus/physiq.F	(revision 101)
@@ -10,9 +10,4 @@
      .            d_u, d_v, d_t, d_qx, d_ps)
 
-      USE ioipsl
-      USE histcom
-      USE infotrac
-      USE control_mod
-      IMPLICIT none
 c======================================================================
 c
@@ -28,12 +23,4 @@
 cAA                  -  stockage des moyennes des champs necessaires
 cAA                     en mode traceur off-line 
-c======================================================================
-c   CLEFS CPP POUR LES IO
-c   =====================
-c#define histhf
-#define histday
-#define histmth
-#define histins
-c======================================================================
 c    modif   ( P. Le Van ,  12/10/98 )
 c
@@ -67,14 +54,26 @@
 c d_ps----output-R-tendance physique de la pression au sol
 c======================================================================
+      USE ioipsl
+      USE histcom
+      USE infotrac
+      USE control_mod
+      use dimphy
+      USE comgeomphy
+      IMPLICIT none
+c======================================================================
+c   CLEFS CPP POUR LES IO
+c   =====================
+c#define histhf
+#define histday
+#define histmth
+#define histins
+c======================================================================
 #include "dimensions.h"
       integer jjmp1
       parameter (jjmp1=jjm+1-1/jjm)
-#include "dimphy.h"
 #include "dimsoil.h"
 #include "clesphys.h"
 #include "temps.h"
-#include "comgeomphy.h"
 #include "iniprint.h"
-#include "raddim.h"
 #include "timerad.h" 
 #include "logic.h"
@@ -117,7 +116,6 @@
       REAL qx(klon,klev,nqmax)
 
-      REAL t_ancien(klon,klev)
-      REAL u_ancien(klon,klev)
-      SAVE t_ancien, u_ancien
+      REAL,save,allocatable :: t_ancien(:,:)
+      REAL,save,allocatable :: u_ancien(:,:)
       LOGICAL ancien_ok
       SAVE ancien_ok
@@ -134,15 +132,6 @@
       REAL d_ps(klon)
 
-      INTEGER klevp1, klevm1
-      PARAMETER(klevp1=klev+1,klevm1=klev-1)
-c
-      REAL swnet(klon,klevp1)
-      SAVE swnet
-c
-      REAL lwnet(klon,klevp1)
-      SAVE lwnet 
-c
-      REAL LWdnTOA(klon)
-      SAVE LWdnTOA
+      REAL,save,allocatable :: swnet(:,:)
+      REAL,save,allocatable :: lwnet(:,:)
 c
       logical ok_hf
@@ -165,22 +154,10 @@
       SAVE radpas                 ! frequence d'appel rayonnement
 c
-      REAL radsol(klon)
-      SAVE radsol               ! bilan radiatif au sol calcule par code radiatif
-c
-      REAL rlev(klon,klev+1)      ! altitude a chaque niveau (interface inferieure de la couche) 
-      SAVE rlev      
-ci  
-      INTEGER itap
-      SAVE itap                   ! compteur pour la physique
-c
-      REAL ftsol(klon)
-      SAVE ftsol                  ! temperature du sol
-c
-      REAL ftsoil(klon,nsoilmx)
-      SAVE ftsoil                 ! temperature dans le sol
-c
-      REAL falbe(klon)
-      SAVE falbe                  ! albedo 
-
+      REAL,save,allocatable :: radsol(:) ! bilan radiatif au sol calcule par code radiatif
+      REAL,save,allocatable :: rlev(:,:) ! altitude a chaque niveau (interface inferieure de la couche) 
+      INTEGER,save :: itap        ! compteur pour la physique
+      REAL,save,allocatable :: ftsol(:)    ! temperature du sol
+      REAL,save,allocatable :: ftsoil(:,:) ! temperature dans le sol
+      REAL,save,allocatable :: falbe(:)    ! albedo 
       REAL delp(klon,klev)        ! epaisseur d'une couche
       
@@ -189,27 +166,12 @@
 c  Parametres de l'Orographie a l'Echelle Sous-Maille (OESM):
 c
-      REAL zmea(klon)
-      SAVE zmea                   ! orographie moyenne
-c
-      REAL zstd(klon)
-      SAVE zstd                   ! deviation standard de l'OESM
-c
-      REAL zsig(klon)
-      SAVE zsig                   ! pente de l'OESM
-c
-      REAL zgam(klon)
-      save zgam                   ! anisotropie de l'OESM
-c
-      REAL zthe(klon)
-      SAVE zthe                   ! orientation de l'OESM
-c
-      REAL zpic(klon)
-      SAVE zpic                   ! Maximum de l'OESM
-c
-      REAL zval(klon)
-      SAVE zval                   ! Minimum de l'OESM
-c
-      REAL rugoro(klon)
-      SAVE rugoro                 ! longueur de rugosite de l'OESM
+      REAL,save,allocatable :: zmea(:)   ! orographie moyenne
+      REAL,save,allocatable :: zstd(:)   ! deviation standard de l'OESM
+      REAL,save,allocatable :: zsig(:)   ! pente de l'OESM
+      REAL,save,allocatable :: zgam(:)   ! anisotropie de l'OESM
+      REAL,save,allocatable :: zthe(:)   ! orientation de l'OESM
+      REAL,save,allocatable :: zpic(:)   ! Maximum de l'OESM
+      REAL,save,allocatable :: zval(:)   ! Minimum de l'OESM
+      REAL,save,allocatable :: rugoro(:) ! longueur de rugosite de l'OESM
 
       INTEGER igwd,idx(klon),itest(klon)
@@ -241,8 +203,5 @@
 
       REAL zustrph(klon),zvstrph(klon) 
-c
-      REAL zuthe(klon),zvthe(klon)
-      SAVE zuthe
-      SAVE zvthe
+      REAL,save,allocatable :: zuthe(:),zvthe(:)
 
 c Variables locales:
@@ -259,10 +218,6 @@
 
       REAL sens(klon), dsens(klon) ! chaleur sensible et sa derivee
-      REAL dlw(klon)    ! derivee infra rouge
-cym
-      SAVE dlw
-cym
-      REAL fder(klon) ! Derive de flux (sensible et latente) 
-      save fder
+      REAL,save,allocatable :: dlw(:)  ! derivee infra rouge
+      REAL,save,allocatable :: fder(:) ! Derive de flux (sensible et latente) 
       REAL ve(klon) ! integr. verticale du transport meri. de l'energie
       REAL vq(klon) ! integr. verticale du transport meri. de l'eau
@@ -307,15 +262,14 @@
       REAL flux_ec(klon,klev)   ! flux de chaleur Ec
 c
-      REAL heat(klon,klev)    ! chauffage solaire
-      REAL cool(klon,klev)    ! refroidissement infrarouge
-      REAL dtrad(klon,klev)   ! K s-1 
-      REAL tmpout(klon,klev)  ! K s-1 
-      REAL topsw(klon), toplw(klon), solsw(klon), sollw(klon)
-      real sollwdown(klon)    ! downward LW flux at surface
-
 c Le rayonnement n'est pas calcule tous les pas, il faut donc
 c                      sauvegarder les sorties du rayonnement
-      SAVE  heat,cool,dtrad,topsw,toplw,solsw,sollw,sollwdown
-c
+      REAL,save,allocatable :: heat(:,:)    ! chauffage solaire
+      REAL,save,allocatable :: cool(:,:)    ! refroidissement infrarouge
+      REAL,save,allocatable :: dtrad(:,:)   ! K s-1 
+      REAL,save,allocatable :: topsw(:), toplw(:)
+      REAL,save,allocatable :: solsw(:), sollw(:)
+      REAL,save,allocatable :: sollwdown(:) ! downward LW flux at surface
+      REAL tmpout(klon,klev)  ! K s-1 
+
       INTEGER itaprad
       SAVE itaprad
@@ -453,4 +407,14 @@
 c========================
       IF (debut) THEN
+         allocate(t_ancien(klon,klev),u_ancien(klon,klev))
+         allocate(swnet(klon,klevp1),lwnet(klon,klevp1))
+         allocate(radsol(klon),ftsol(klon),falbe(klon))
+         allocate(rlev(klon,klevp1),ftsoil(klon,nsoilmx))
+         allocate(zmea(klon),zstd(klon),zsig(klon),zgam(klon))
+         allocate(zthe(klon),zpic(klon),zval(klon),rugoro(klon))
+         allocate(zuthe(klon),zvthe(klon),dlw(klon),fder(klon))
+         allocate(heat(klon,klev),cool(klon,klev))
+         allocate(dtrad(klon,klev),topsw(klon),toplw(klon))
+         allocate(solsw(klon),sollw(klon),sollwdown(klon))
 
          CALL suphec ! initialiser constantes et parametres phys.
@@ -576,5 +540,5 @@
          ENDIF
 
-         ecrit_ins = NINT(RDAY/dtime/*ecritphy)  ! Fraction de jour reglable
+         ecrit_ins = NINT(RDAY/dtime*ecritphy)  ! Fraction de jour reglable
          IF (ok_instan) THEN
          WRITE(lunout,*)'La frequence de sortie instant. est de ', 
@@ -852,4 +816,9 @@
 
       if (iflag_trac.eq.1) then
+         DO k = 1, klev
+         DO i = 1, klon
+            delp(i,k) = paprs(i,k)-paprs(i,k+1)
+         ENDDO
+         ENDDO
          DO iq=1, nqmax
              CALL cltrac(dtime,ycoefh,t_seri,
Index: /trunk/libf/phyvenus/phytrac.F
===================================================================
--- /trunk/libf/phyvenus/phytrac.F	(revision 100)
+++ /trunk/libf/phyvenus/phytrac.F	(revision 101)
@@ -25,24 +25,23 @@
      O                    tr_seri)
 
+c======================================================================
+c Auteur(s) FH
+c Objet: Moniteur general des tendances traceurs
+c
+cAA Remarques en vrac:
+cAA--------------------
+cAA 1/ le call phytrac se fait avec nqmax 
+c======================================================================
       USE ioipsl
       USE infotrac
       USE control_mod
-
+      use dimphy
+      USE comgeomphy
       IMPLICIT none
-c======================================================================
-c Auteur(s) FH
-c Objet: Moniteur general des tendances traceurs
-c
-cAA Remarques en vrac:
-cAA--------------------
-cAA 1/ le call phytrac se fait avec nqmax 
-c======================================================================
 #include "YOMCST.h"
 #include "dimensions.h"
-#include "dimphy.h"
 #include "clesphys.h" !///utile?
 #include "temps.h"
 #include "paramet.h"
-#include "comgeomphy.h"
 c======================================================================
 
@@ -82,6 +81,4 @@
 c      REAL flxmass_w(nlon,nlev)
 
-cAA Rem : nqmax : nombre de vrais traceurs est defini dans dimphy.h
-
 cAA ----------------------------
 cAA  VARIABLES LOCALES TRACEURS
@@ -124,5 +121,4 @@
 c   k,i,it,tr_seri(klon,klev,nqmax),pplay(nlon,nlev), 
       integer nqCO_OCS
-      real zprof(klev,nqtot)
 c      real pzero,gamma
 c      parameter (pzero=85000.)
@@ -130,6 +126,6 @@
       REAL alpha
       real deltatr(klon,klev,nqtot) ! ecart au profil de ref zprof
-      real tau(klev,nqtot)          ! temps de relaxation vers le profil (s)
-      save zprof,tau
+      real,save,allocatable :: zprof(:,:)
+      real,save,allocatable :: tau(:,:) ! temps de relaxation vers le profil (s)
 c======================================================================
 c
@@ -151,4 +147,5 @@
       REAL d_tr_cv(klon,klev,nqmax) ! tendance de traceurs  conv pour chq traceur
 C
+      character*20 modname
       character*80 abort_message
 c
@@ -161,5 +158,12 @@
      s     /.true.,.false.,.false./
 
-c======================================================================
+      modname = 'phytrac'
+c======================================================================
+
+       if(first) then
+         allocate(zprof(klev,nqtot),tau(klev,nqtot))
+         first = .false.
+       endif
+
          ps(:)=paprs(:,1)
 c TRACEURS TYPE CO ET OCS
Index: /trunk/libf/phyvenus/printflag.F
===================================================================
--- /trunk/libf/phyvenus/printflag.F	(revision 100)
+++ /trunk/libf/phyvenus/printflag.F	(revision 101)
@@ -12,5 +12,5 @@
 
        REAL tabcntr0( 100 )
-       LOGICAL cycle_diurn0,soil_model0,new_oliq0,ok_orodr0
+       LOGICAL cycle_diurn0,soil_model0,ok_orodr0
        LOGICAL ok_orolf0,ok_gw_nonoro0
        LOGICAL ok_journe,ok_instan
@@ -32,6 +32,6 @@
        PRINT 100
 
-c      PRINT 11, new_oliq, ok_orodr, ok_orolf, ok_gw_nonoro  
-c      PRINT 100
+       PRINT 11, ok_orodr, ok_orolf, ok_gw_nonoro  
+       PRINT 100
 
        PRINT 12, nbapp_rad
@@ -48,5 +48,4 @@
         cycle_diurn0  = .FALSE.
         soil_model0   = .FALSE.
-        new_oliq0     = .FALSE.
         ok_orodr0     = .FALSE.
         ok_orolf0     = .FALSE.
@@ -55,5 +54,4 @@
         IF( tabcntr0( 7 ).EQ. 1. )   cycle_diurn0 = .TRUE.
         IF( tabcntr0( 8 ).EQ. 1. )    soil_model0 = .TRUE.
-        IF( tabcntr0( 9 ).EQ. 1. )      new_oliq0 = .TRUE.
         IF( tabcntr0(10 ).EQ. 1. )      ok_orodr0 = .TRUE.
         IF( tabcntr0(11 ).EQ. 1. )      ok_orolf0 = .TRUE.
@@ -82,10 +80,4 @@
      ,        soil_model )     THEN
         PRINT 14, soil_model0, soil_model
-        PRINT 100
-       ENDIF
-
-       IF( new_oliq0.AND..NOT.new_oliq.OR..NOT.new_oliq0.AND.
-     ,        new_oliq )     THEN
-        PRINT 16, new_oliq0, new_oliq
         PRINT 100
        ENDIF
@@ -127,5 +119,5 @@
 
 
- 11    FORMAT(2x,5(1H*),'  new_oliq = ',l3,3x,', Ok_orodr = ',
+ 11    FORMAT(2x,5(1H*),', Ok_orodr = ',
      , l3,3x,', Ok_orolf = ',l3,3x,5(1H*) )
 
@@ -141,7 +133,4 @@
 
  15    FORMAT(2x,'$$$$$$$$   Attention !!      ok_orodr  different  sur',
-     , /1x,10x,' startphy = ',l3,2x,' et  run.def = ',l3)
-
- 16    FORMAT(2x,'$$$$$$$$   Attention !!      new_oliq  different  sur',
      , /1x,10x,' startphy = ',l3,2x,' et  run.def = ',l3)
 
Index: /trunk/libf/phyvenus/radlwsw.1mat
===================================================================
--- /trunk/libf/phyvenus/radlwsw.1mat	(revision 100)
+++ /trunk/libf/phyvenus/radlwsw.1mat	(revision 101)
@@ -9,5 +9,4 @@
      .                  lwnet, swnet)
 c      
-      IMPLICIT none
 c======================================================================
 c Auteur(s): Z.X. Li (LMD/CNRS) date: 19960719
@@ -35,7 +34,7 @@
       
 c======================================================================
+      use dimphy
+      IMPLICIT none
 #include "dimensions.h"
-#include "dimphy.h"
-#include "raddim.h"
 c
       real rmu0(klon), fract(klon), dist
Index: /trunk/libf/phyvenus/radlwsw.F
===================================================================
--- /trunk/libf/phyvenus/radlwsw.F	(revision 100)
+++ /trunk/libf/phyvenus/radlwsw.F	(revision 101)
@@ -9,5 +9,4 @@
      .                  lwnet, swnet)
 c      
-      IMPLICIT none
 c======================================================================
 c Auteur(s): Z.X. Li (LMD/CNRS) date: 19960719
@@ -39,10 +38,10 @@
 
 c======================================================================
+      use dimphy
+      USE comgeomphy
+      IMPLICIT none
 #include "dimensions.h"
-#include "dimphy.h"
-#include "raddim.h"
 #include "YOMCST.h"
 #include "clesphys.h" 
-#include "comgeomphy.h"
 #include "comcstVE.h"
 c
@@ -71,13 +70,12 @@
       REAL   zsollwdown
 cIM END
-      real   ksive(0:kflev+1,0:kflev+1,nnuve,nbmat)  ! ksi matrixes in Vincent's file
+      real,save,allocatable :: ksive(:,:,:,:) ! ksi matrixes in Vincent's file
       real    psimap(0:kflev+1,0:kflev+1,klon)
       real    deltapsimap(0:kflev+1,0:kflev+1,klon)
       real    psi(0:kflev+1,0:kflev+1)
       real    deltapsi(0:kflev+1,0:kflev+1)
-      real    latdeg,ztop(klon) ! in km
+      real    latdeg
       real    pt0(klon,0:kflev+1)
-
-      save    ksive,ztop
+      real,save,allocatable :: ztop(:) ! in km
 
       logical firstcall
@@ -92,11 +90,13 @@
 
       if (firstcall) then
+
+c ---------- ksive --------------
+        allocate(ksive(0:kflev+1,0:kflev+1,nnuve,nbmat))
         call load_ksi(ksive)
-
 c ---------- ztop --------------
+        allocate(ztop(klon))
         DO i = 1, klon
              ztop(i) = 70.
         ENDDO !i
-
 c ztop: d'apres fit à figure 16 du papier Zavosa et al (tmp) traitant des
 c       donnees Venera
Index: /trunk/libf/phyvenus/radlwsw.NewtonCool
===================================================================
--- /trunk/libf/phyvenus/radlwsw.NewtonCool	(revision 100)
+++ /trunk/libf/phyvenus/radlwsw.NewtonCool	(revision 101)
@@ -9,5 +9,4 @@
      .                  lwnet, swnet)
 c      
-      IMPLICIT none
 c======================================================================
 c Auteur(s): Z.X. Li (LMD/CNRS) date: 19960719
@@ -38,10 +37,10 @@
 
 c======================================================================
+      use dimphy
+      USE comgeomphy
+      IMPLICIT none
 #include "dimensions.h"
-#include "dimphy.h"
-#include "raddim.h"
 #include "YOMCST.h"
 #include "clesphys.h" 
-#include "comgeomphy.h"
 c
       real rmu0(klon), fract(klon), dist
Index: /trunk/libf/phyvenus/radlwsw.multimat
===================================================================
--- /trunk/libf/phyvenus/radlwsw.multimat	(revision 100)
+++ /trunk/libf/phyvenus/radlwsw.multimat	(revision 101)
@@ -9,5 +9,4 @@
      .                  lwnet, swnet)
 c      
-      IMPLICIT none
 c======================================================================
 c Auteur(s): Z.X. Li (LMD/CNRS) date: 19960719
@@ -39,10 +38,10 @@
 
 c======================================================================
+      use dimphy
+      USE comgeomphy
+      IMPLICIT none
 #include "dimensions.h"
-#include "dimphy.h"
-#include "raddim.h"
 #include "YOMCST.h"
 #include "clesphys.h" 
-#include "comgeomphy.h"
 #include "comcstVE.h"
 c
Index: /trunk/libf/phyvenus/readstartphy.F
===================================================================
--- /trunk/libf/phyvenus/readstartphy.F	(revision 100)
+++ /trunk/libf/phyvenus/readstartphy.F	(revision 101)
@@ -9,11 +9,11 @@
      .           fder,radsol,
      .           tabcntr0)
-      IMPLICIT none
 c======================================================================
 c Auteur(s) Z.X. Li (LMD/CNRS) date: 19930818
 c Objet: Lecture de l'etat initial pour la physique
 c======================================================================
+      use dimphy
+      IMPLICIT none
 #include "dimensions.h"
-#include "dimphy.h"
 #include "netcdf.inc"
 #include "dimsoil.h"
Index: /trunk/libf/phyvenus/soil.F
===================================================================
--- /trunk/libf/phyvenus/soil.F	(revision 100)
+++ /trunk/libf/phyvenus/soil.F	(revision 101)
@@ -4,5 +4,4 @@
       SUBROUTINE soil(ptimestep, knon, ptsrf, ptsoil,
      s          pcapcal, pfluxgrd)
-      IMPLICIT NONE
 
 c=======================================================================
@@ -47,7 +46,8 @@
 c   -------------
 
+      use dimphy
+      IMPLICIT NONE
 #include "dimensions.h"
 #include "YOMCST.h"
-#include "dimphy.h"
 #include "dimsoil.h"
 #include "clesphys.h"
@@ -74,5 +74,5 @@
 c   ----------------------
       REAL dz1(nsoilmx),dz2(nsoilmx)
-      REAL zc(klon,nsoilmx),zd(klon,nsoilmx)
+      REAL,allocatable :: zc(:,:),zd(:,:)
       REAL lambda
       SAVE dz1,dz2,zc,zd,lambda
@@ -95,4 +95,6 @@
 
       IF (firstcall) THEN
+
+      allocate(zc(klon,nsoilmx),zd(klon,nsoilmx))
 
 c-----------------------------------------------------------------------
Index: /trunk/libf/phyvenus/sugwd.F
===================================================================
--- /trunk/libf/phyvenus/sugwd.F	(revision 100)
+++ /trunk/libf/phyvenus/sugwd.F	(revision 101)
@@ -74,9 +74,9 @@
 C        LAST:  99-07-09     (FRANCOIS LOTT,LMD)
 C     ------------------------------------------------------------------
+      use dimphy
       IMPLICIT NONE
 
 #include "dimensions.h"
 #include "paramet.h"
-#include "dimphy.h"
 
 #include "YOEGWD.h"
Index: /trunk/libf/phyvenus/sw_venus_dc.F
===================================================================
--- /trunk/libf/phyvenus/sw_venus_dc.F	(revision 100)
+++ /trunk/libf/phyvenus/sw_venus_dc.F	(revision 101)
@@ -4,9 +4,8 @@
      S              PTOPSW,PSOLSW,ZFSNET)
       
+      use dimphy
       IMPLICIT none
 
 #include "dimensions.h"
-#include "dimphy.h"
-#include "raddim.h"
 #include "YOMCST.h"
 C
@@ -71,7 +70,6 @@
       logical firstcall
       data    firstcall/.true./
-      REAL   zsolVE(KFLEV+1) ! net solar flux at ppb levels, fichiers VE
-      
-      save   solza,zsnet,presdc,tempdc,altdc,zsolVE
+      REAL,save,allocatable :: zsolVE(:) ! net solar flux at ppb levels, fichiers VE
+      save   solza,zsnet,presdc,tempdc,altdc
       save   firstcall
       
@@ -81,4 +79,6 @@
 
       if (firstcall) then
+       allocate(zsolVE(klevp1))
+
        open(11,file='dataDCrisp.dat')
        read(11,*) nullchar
Index: /trunk/libf/phyvenus/transp.F
===================================================================
--- /trunk/libf/phyvenus/transp.F	(revision 100)
+++ /trunk/libf/phyvenus/transp.F	(revision 101)
@@ -6,5 +6,4 @@
      s                   vtran_e, vtran_q, utran_e, utran_q)
 c
-      IMPLICIT none
 c======================================================================
 c Auteur(s): Z.X.Li (LMD/CNRS)
@@ -12,7 +11,7 @@
 c Objet: Calculer le transport de l'energie et de la vapeur d'eau
 c======================================================================
-c
+      use dimphy
+      IMPLICIT none
 #include "dimensions.h"
-#include "dimphy.h"
 #include "YOMCST.h"
 c
Index: /trunk/libf/phyvenus/ustarhb.F
===================================================================
--- /trunk/libf/phyvenus/ustarhb.F	(revision 100)
+++ /trunk/libf/phyvenus/ustarhb.F	(revision 101)
@@ -3,5 +3,4 @@
 !
       SUBROUTINE ustarhb(knon,u,v,cd_m, ustar)
-      IMPLICIT none
 c======================================================================
 c Laurent Li (LMD/CNRS), le 30 septembre 1998
@@ -17,6 +16,7 @@
 c model. J. of Climate, vol. 6, 1825-1842.
 c======================================================================
+      use dimphy
+      IMPLICIT none
 #include "dimensions.h"
-#include "dimphy.h"
 #include "YOMCST.h"
 c
Index: /trunk/libf/phyvenus/vdif_kcay.F
===================================================================
--- /trunk/libf/phyvenus/vdif_kcay.F	(revision 100)
+++ /trunk/libf/phyvenus/vdif_kcay.F	(revision 101)
@@ -5,8 +5,8 @@
      s   ,zlev,zlay,u,v,teta,cd,q2,q2diag,km,kn,ustar
      s   ,l_mix)
+c.......................................................................
+      use dimphy
       IMPLICIT NONE
-c.......................................................................
 #include "dimensions.h"
-#include "dimphy.h"
 c.......................................................................
 c
@@ -195,6 +195,4 @@
       PARAMETER (q2min=1.e-5)
       PARAMETER (q2max=1.E+2)
-      PARAMETER (nlay=klev)
-      PARAMETER (nlev=klev+1)
 c
       PARAMETER (
@@ -221,4 +219,7 @@
       save first
       data first/.true./
+
+      nlay=klev
+      nlev=klev+1
 c.......................................................................
 c  traitment des valeur de q2 en entree
Index: /trunk/libf/phyvenus/write_histmth.h
===================================================================
--- /trunk/libf/phyvenus/write_histmth.h	(revision 100)
+++ /trunk/libf/phyvenus/write_histmth.h	(revision 101)
@@ -109,5 +109,5 @@
        CALL gr_fi_ecrit(klev,klon,iim,jjmp1, qx(1,1,iq), zx_tmp_3d)
        WRITE(str2,'(i2.2)') iq
-       CALL histwrite(nid_mth,tnom(iq),itau_w,zx_tmp_3d,
+       CALL histwrite(nid_mth,tname(iq),itau_w,zx_tmp_3d,
      .                                   iim*jjmp1*klev,ndex3d)
           ELSE
Index: /trunk/libf/phyvenus/writerestartphy.F
===================================================================
--- /trunk/libf/phyvenus/writerestartphy.F	(revision 100)
+++ /trunk/libf/phyvenus/writerestartphy.F	(revision 101)
@@ -6,11 +6,11 @@
      .           t_ancien)
 
-      IMPLICIT none
 
 c======================================================================
 c Ecriture de l'etat de redemarrage pour la physique (pour newstart)
 c======================================================================
+      use dimphy
+      IMPLICIT none
 #include "dimensions.h"
-#include "dimphy.h"
 #include "netcdf.inc"
 #include "dimsoil.h"
Index: /trunk/libf/phyvenus/yamada.F
===================================================================
--- /trunk/libf/phyvenus/yamada.F	(revision 100)
+++ /trunk/libf/phyvenus/yamada.F	(revision 101)
@@ -5,8 +5,8 @@
      s   ,zlev,zlay,u,v,teta,cd,q2,km,kn,ustar
      s   ,l_mix)
+c.......................................................................
+      use dimphy
       IMPLICIT NONE
-c.......................................................................
 #include "dimensions.h"
-#include "dimphy.h"
 c.......................................................................
 c
@@ -46,13 +46,7 @@
       integer l_mix,ngrid
 
-
-      integer nlay,nlev
-      PARAMETER (nlay=klev)
-      PARAMETER (nlev=klev+1)
-
       logical first
       save first
       data first/.true./
-
 
       integer ig,k
@@ -98,6 +92,6 @@
 
 c  Correction d'un bug sauvage a verifier.
-c      do k=2,nlev
-      do k=2,nlay
+c      do k=2,klevp1
+      do k=2,klev
                                                           do ig=1,ngrid
          dz(ig,k)=zlay(ig,k)-zlay(ig,k-1)
Index: /trunk/libf/phyvenus/yamada4.F
===================================================================
--- /trunk/libf/phyvenus/yamada4.F	(revision 100)
+++ /trunk/libf/phyvenus/yamada4.F	(revision 101)
@@ -6,8 +6,8 @@
      s   ,zlev,zlay,u,v,teta,cd,km,kn,kq,ustar
      s   ,iflag_pbl)
+c.......................................................................
+      use dimphy
       IMPLICIT NONE
-c.......................................................................
 #include "dimensions.h"
-#include "dimphy.h"
 c.......................................................................
 c
@@ -50,5 +50,5 @@
       REAL teta(klon,klev)
       REAL cd(klon)
-      REAL q2(klon,klev+1),qpre
+      REAL qpre
       REAL unsdz(klon,klev)
       REAL unsdzdec(klon,klev+1)
@@ -65,6 +65,4 @@
 
       integer nlay,nlev
-      PARAMETER (nlay=klev)
-      PARAMETER (nlev=klev+1)
 
       logical first
@@ -83,9 +81,9 @@
       real dtetadz(klon,klev+1)
       real m2cstat,mcstat,kmcstat
-      real l(klon,klev+1),l0(klon)
-      save l0
+      real l(klon,klev+1)
+      real,save,allocatable :: l0(:)
 c  ATTENTION! mis ici car j'ai enlevé q2 des arguments...
 c   sinon, c'est au-dessus que ça se passe...
-      save q2 
+      REAL,save,allocatable :: q2(:,:)
 
       real sq(klon),sqz(klon),zz(klon,klev+1)
@@ -99,8 +97,7 @@
       real fl,zzz,zl0,zq2,zn2
 
-      real rino(klon,klev+1),smyam(klon,klev),styam(klon,klev)
-     s  ,lyam(klon,klev),knyam(klon,klev)
-     s  ,w2yam(klon,klev),t2yam(klon,klev)
-      common/pbldiag/rino,smyam,styam,lyam,knyam,w2yam,t2yam
+c     real rino(klon,klev+1),smyam(klon,klev),styam(klon,klev)
+c    s  ,lyam(klon,klev),knyam(klon,klev)
+c    s  ,w2yam(klon,klev),t2yam(klon,klev)
 
       frif(ri)=0.6588*(ri+0.1776-sqrt(ri*ri-0.3221*ri+0.03156))
@@ -116,6 +113,13 @@
 
 c===================================
-c INITIALISATIONS (surtout pour k=1, à cause diagnostiques...)
+c INITIALISATIONS 
+      nlay=klev
+      nlev=klev+1
+
       if (first) then
+        allocate(l0(klon))
+        allocate(q2(klon,klevp1))
+
+c (surtout pour k=1, à cause diagnostiques...)
         q2 = 0.
       endif
@@ -462,22 +466,15 @@
 
 c     print*,'YAMADA4 1'
-c   Diagnostique pour stockage
-
-      rino=rif
-      smyam(:,1:klev)=sm(:,1:klev)
-      styam=sm(:,1:klev)*alpha(:,1:klev)
-      lyam(1:klon,1:klev)=l(:,1:klev)
-      knyam(1:klon,1:klev)=kn(:,1:klev)
 
 c   Estimations de w'2 et T'2 d'apres Abdela et McFarlane
 
-        if(1.eq.0)then
-      w2yam=q2(:,1:klev)*0.24
-     s    +lyam(:,1:klev)*5.17*kn(:,1:klev)*n2(:,1:klev)
-     s   /sqrt(q2(:,1:klev))
-
-      t2yam=9.1*kn(:,1:klev)*dtetadz(:,1:klev)**2/sqrt(q2(:,1:klev))
-     s  *lyam(:,1:klev)
-	endif
+c     if(1.eq.0)then
+c      w2yam=q2(:,1:klev)*0.24
+c    s    +lyam(:,1:klev)*5.17*kn(:,1:klev)*n2(:,1:klev)
+c    s   /sqrt(q2(:,1:klev))
+c
+c      t2yam=9.1*kn(:,1:klev)*dtetadz(:,1:klev)**2/sqrt(q2(:,1:klev))
+c    s  *lyam(:,1:klev)
+c     endif
 
 c     print*,'OKFIN'
Index: /trunk/libf/phyvenus/zenang.F
===================================================================
--- /trunk/libf/phyvenus/zenang.F	(revision 100)
+++ /trunk/libf/phyvenus/zenang.F	(revision 101)
@@ -2,5 +2,4 @@
       SUBROUTINE zenang(longi,gmtime,pdtrad,lat,long,
      s                  pmu0,frac)
-      IMPLICIT none
 c=============================================================
 c Auteur : O. Boucher (LMD/CNRS)
@@ -25,6 +24,7 @@
 c frac-----OUTPUT: ensoleillement moyen entre gmtime et gmtime+pdtrad
 c================================================================
+      use dimphy
+      IMPLICIT none
 #include "dimensions.h"
-#include "dimphy.h"
 #include "YOMCST.h"
 c================================================================
Index: /trunk/makelmdz
===================================================================
--- /trunk/makelmdz	(revision 100)
+++ /trunk/makelmdz	(revision 101)
@@ -273,4 +273,9 @@
 if [[ "$physique" != "nophys" ]]
 then
+   CPP_KEY="$CPP_KEY CPP_PHYS"
+fi
+
+if [[ "$physique" == "lmd" ]]
+then
    #Default planet type is Earth
    CPP_KEY="$CPP_KEY CPP_EARTH"
