Index: /trunk/chantiers/commit_v8.log
===================================================================
--- /trunk/chantiers/commit_v8.log	(revision 8)
+++ /trunk/chantiers/commit_v8.log	(revision 8)
@@ -0,0 +1,60 @@
+** ADAPTATION DYNAMIQUE PARALLELE AU CP(T)
+------------------------------------------
+
+Remarques:
+----------
+- Modifs non testées par une compilation/exécution du code; finalement s'organiser un mode de fonctionnement ou on peut compiler le code (au moins sans physique) est assez impératif.
+- On pourrait peut-être faire de cpdet.F90 un module...
+
+Retour sur leapfrog.F: (version séquentielle, dans dyn3d):
+----------------------
+- On revient en arrière sur l'utilisation de dutop(),dvtop(),dtetatop() au lieu des dufi(),dvfi() et dtetafi() pour les appels à top_bound. Dans la version terrestre, différente du sponge Martien (et Vénusien), ces tendances sont liées.
+=> A 'hamoniser' plus tard.
+
+Modifications (dans dyn3dpar):
+------------------------------
+
+* infotrac.F90 : recopié à l'identique depuis dyn3d
+
+* comconst.h : recopié à l'identique depuis dyn3d
+
+* caldyn0.F : recopié à l'identique depuis dyn3d
+
+* cpdet.F :
+  - création des routines t2tpot_p et tpot2t_p , versions // de t2tpot et tpot2t
+
+* gcm.F :
+  - on encadre les appels à Init_Phys_lmdz et Init_interface_dyn_phys par des #ifdef CPP_PHYS (et non plus ifdef CPP_EARTH).
+  - ajout de l'appel à ini_cpdet pour Cp(T)
+  - appel de dynetat0 modulé selon planet_type (Mars est le cas pathologique)
+  - appel à iniphysiq encadré par un #ifdef CPP_PHYS
+  - appel de dynredem0_p modulé selon planet_type (Mars est le cas pathologique)
+  
+* leapfrog_p.F :
+  - ajout variables temp et tsurpk
+  - ajout des calculs des hallos pour temp() et tsurkp() (NOTE POUR PLUS TARD: vérifier que c'est bien nécessaire...)
+  - utilisation tpot2t_p et calcul de tsurkp() avant appel à geopot_p (sans oublier de modifier argument de geopot_p, teta => tsurpk). (3 fois)
+  - ajout argument tsurpk dans l'appel à caldyn_p.
+  - ajout des passages en (m/s)/s des dudis , dvdis et dtetadis.
+  - calcul de dtetaecdt en passant par la température.
+  - changement des arguments de l'appel à bilan_dyn_p.
+  - appel de dynredem1_p modulé selon planet_type (Mars est le cas pathologique).
+
+* calfis_p.F :
+  - utilisation de la clef CPP_PHYS (et non plus CPP_EARTH).
+  - ajout des variables locales zteta et zpk.
+  - ajout calcul de zteta et zpk.
+  - calcul de ztfi via tpot2t_p (NOTE POUR PLUS TARD: vérifier que la taille "physique" du champ ne pose pas pb par rapport au découpage //).
+  - appel de la routine physiq selon planet_type.
+  - modification calcul de pdhfi.
+  
+* caldyn_p.F :
+  - ajout de tsurpk dans les arguments.
+  - passage de tsurkp à la place de teta dans dudv2_p.
+  - passage de tsurkp à la place de teta dans sortvarc.
+  
+* vlspltqs_p.F :
+  - modification de la taille de tempe (tempe(ip1jmp1,llm) au lieu de tempe(ip1jmp1).
+  - calcul de tempe via tpot2t_p (NOTE POUR PLUS TARD: probablement à revoir! Etrangement vlspltqs_p ne contient aucune instruction OpenMP !?! Il y a là un truc qui m'échappe...)
+
+* bilan_dyn_p.F : A FAIRE... (mis de côté pour l'instant car pas sûr que l'ancien bilan_dyn_p fonctionne en mode mixte mpi/omp, à vérifier d'abord, avant de tenter des modifs...) 
Index: /trunk/chantiers/meschantiers-Ehouarn.txt
===================================================================
--- /trunk/chantiers/meschantiers-Ehouarn.txt	(revision 8)
+++ /trunk/chantiers/meschantiers-Ehouarn.txt	(revision 8)
@@ -0,0 +1,10 @@
+>>> choses à faire:
+
+- En priorité: faire qu'on puisse compiler un/des cas test (sans physique) pour pouvoir tester les modifs au fur et à mesure. 
+
+- Uniformiser les mises à jour dyn séq. et // (commencé avec la rev. 8)
+
+- Peut-être revoir l'interface dynamique/physique ?
+
+- Attention à la discrétisation verticale ...
+
Index: /trunk/libf/dyn3d/leapfrog.F
===================================================================
--- /trunk/libf/dyn3d/leapfrog.F	(revision 7)
+++ /trunk/libf/dyn3d/leapfrog.F	(revision 8)
@@ -433,5 +433,5 @@
 c      -------------------
          IF (ok_strato) THEN
-           CALL top_bound( vcov,ucov,teta,masse,dutop,dvtop,dtetatop)
+           CALL top_bound( vcov,ucov,teta,masse,dufi,dvfi,dtetafi)
          ENDIF
 c dqtop=0, dptop=0
@@ -441,5 +441,5 @@
           CALL addfi( dtphys, leapf, forward   ,
      $                  ucov, vcov, teta , q   ,ps ,
-     $                 dutop, dvtop, dtetatop , dqtop ,dptop  )
+     $                 dufi, dvfi, dtetafi , dqfi ,dpfi  )
 c
 c  Diagnostique de conservation de l'énergie : difference
Index: /trunk/libf/dyn3dpar/caldyn0.F
===================================================================
--- /trunk/libf/dyn3dpar/caldyn0.F	(revision 7)
+++ /trunk/libf/dyn3dpar/caldyn0.F	(revision 8)
@@ -36,5 +36,5 @@
       REAL vcov(ip1jm,llm),ucov(ip1jmp1,llm),teta(ip1jmp1,llm)
       REAL ps(ip1jmp1),phis(ip1jmp1)
-      REAL pk(iip1,jjp1,llm)
+      REAL pk(ip1jmp1,llm)
       REAL vcont(ip1jm,llm),ucont(ip1jmp1,llm)
       REAL phi(ip1jmp1,llm),masse(ip1jmp1,llm)
@@ -51,5 +51,5 @@
       REAL bern(ip1jmp1,llm)
       REAL massebxy(ip1jm,llm), dp(ip1jmp1)
-    
+      REAL temp(ip1jmp1,llm),tsurpk(ip1jmp1,llm)
 
       INTEGER   ij,l
@@ -83,6 +83,10 @@
       ENDDO
 
+! ADAPTATION GCM POUR CP(T)
+      CALL tpot2t(ip1jmp1*llm,teta,temp,pk)
+      tsurpk = cpp*temp/pk
+
         CALL sortvarc0
-     $ ( itau,ucov,teta,ps,masse,pk,phis,vorpot,phi,bern,dp,time,vcov )
+     $ (itau,ucov,tsurpk,ps,masse,pk,phis,vorpot,phi,bern,dp,time,vcov)
 
       RETURN
Index: /trunk/libf/dyn3dpar/caldyn_p.F
===================================================================
--- /trunk/libf/dyn3dpar/caldyn_p.F	(revision 7)
+++ /trunk/libf/dyn3dpar/caldyn_p.F	(revision 8)
@@ -8,5 +8,5 @@
 
       SUBROUTINE caldyn_p
-     $ (itau,ucov,vcov,teta,ps,masse,pk,pkf,phis ,
+     $ (itau,ucov,vcov,teta,ps,masse,pk,pkf,tsurpk,phis ,
      $  phi,conser,du,dv,dteta,dp,w,pbaru,pbarv,time )
       USE parallel
@@ -45,5 +45,6 @@
       REAL vcov(ip1jm,llm),ucov(ip1jmp1,llm),teta(ip1jmp1,llm)
       REAL ps(ip1jmp1),phis(ip1jmp1)
-      REAL pk(iip1,jjp1,llm),pkf(ip1jmp1,llm)
+      REAL pk(ip1jmp1,llm),pkf(ip1jmp1,llm)
+      REAL tsurpk(ip1jmp1,llm)
       REAL,SAVE :: vcont(ip1jm,llm),ucont(ip1jmp1,llm)
       REAL phi(ip1jmp1,llm),masse(ip1jmp1,llm)
@@ -66,4 +67,5 @@
       REAL,SAVE :: massebxy(ip1jm,llm)
       REAL,SAVE :: convm(ip1jmp1,llm)
+!      REAL,SAVE :: temp(ip1jmp1,llm)
       INTEGER   ij,l,ijb,ije,ierr
 
@@ -129,5 +131,5 @@
       CALL enercin_p ( vcov   , ucov  , vcont     , ucont  , ecin  )
       CALL bernoui_p ( ip1jmp1, llm   , phi       , ecin   , bern  )
-      CALL dudv2_p   ( teta   , pkf   , bern      , du     , dv    )
+      CALL dudv2_p   ( tsurpk , pkf   , bern      , du     , dv    )
 
 #ifdef DEBUG_IO
@@ -184,5 +186,5 @@
 c ym ---> exige communication collective ( aussi dans advect)
         CALL sortvarc
-     $ ( itau,ucov,teta,ps,masse,pk,phis,vorpot,phi,bern,dp,time,vcov )
+     $ (itau,ucov,tsurpk,ps,masse,pk,phis,vorpot,phi,bern,dp,time,vcov)
 
       ENDIF
Index: /trunk/libf/dyn3dpar/calfis_p.F
===================================================================
--- /trunk/libf/dyn3dpar/calfis_p.F	(revision 7)
+++ /trunk/libf/dyn3dpar/calfis_p.F	(revision 8)
@@ -27,5 +27,5 @@
      $                  pdqfi,
      $                  pdpsfi)
-#ifdef CPP_EARTH
+#ifdef CPP_PHYS
 ! Ehouarn: For now, calfis_p needs Earth physics
 c
@@ -86,5 +86,5 @@
 c        pdufi          tendency for the natural zonal velocity (ms-1)
 c        pdvfi          tendency for the natural meridional velocity 
-c        pdhfi          tendency for the potential temperature
+c        pdhfi          tendency for the potential temperature (K/s)
 c        pdtsfi         tendency for the surface temperature
 c
@@ -129,4 +129,7 @@
       REAL pducov(iip1,jjp1,llm)
       REAL pdteta(iip1,jjp1,llm)
+! commentaire SL: pdq ne sert que pour le calcul de pcvgq,
+! qui lui meme ne sert a rien dans la routine telle qu'elle est
+! ecrite, et que j'ai donc commente....
       REAL pdq(iip1,jjp1,llm,nqtot)
       REAL flxw(iip1,jjp1,llm)  ! Flux de masse verticale sur la grille dynamique
@@ -146,5 +149,5 @@
       REAL clesphy0( longcles )
 
-#ifdef CPP_EARTH
+#ifdef CPP_PHYS
 c    Local variables :
 c    -----------------
@@ -157,7 +160,12 @@
       REAL,ALLOCATABLE,SAVE :: zufi(:,:), zvfi(:,:)
       REAL,ALLOCATABLE,SAVE :: ztfi(:,:),zqfi(:,:,:)
-c
-      REAL,ALLOCATABLE,SAVE :: pcvgu(:,:), pcvgv(:,:)
-      REAL,ALLOCATABLE,SAVE :: pcvgt(:,:), pcvgq(:,:,:)
+! ADAPTATION GCM POUR CP(T)
+      REAL,ALLOCATABLE,SAVE :: zteta(:,:)
+      REAL,ALLOCATABLE,SAVE ::  zpk(:,:)
+c
+! Ces calculs ne servent pas. 
+! Si necessaire, decommenter ces variables et les calculs...
+!      REAL,ALLOCATABLE,SAVE :: pcvgu(:,:), pcvgv(:,:)
+!      REAL,ALLOCATABLE,SAVE :: pcvgt(:,:), pcvgq(:,:,:)
 c
       REAL,ALLOCATABLE,SAVE :: zdufi(:,:),zdvfi(:,:)
@@ -272,6 +280,6 @@
       ALLOCATE(zufi(klon,llm), zvfi(klon,llm))
       ALLOCATE(ztfi(klon,llm),zqfi(klon,llm,nqtot))
-      ALLOCATE(pcvgu(klon,llm), pcvgv(klon,llm))
-      ALLOCATE(pcvgt(klon,llm), pcvgq(klon,llm,2))
+!      ALLOCATE(pcvgu(klon,llm), pcvgv(klon,llm))
+!      ALLOCATE(pcvgt(klon,llm), pcvgq(klon,llm,2))
       ALLOCATE(zdufi(klon,llm),zdvfi(klon,llm))
       ALLOCATE(zdtfi(klon,llm),zdqfi(klon,llm,nqtot))
@@ -279,4 +287,7 @@
       ALLOCATE(zdufi2(klon+iim,llm),zdvfi2(klon+iim,llm))
       ALLOCATE(flxwfi(klon,llm))
+! ADAPTATION GCM POUR CP(T)
+      ALLOCATE(zteta(klon,llm)
+      ALLOCATE(zpk(klon,llm))
 c$OMP END MASTER
 c$OMP BARRIER	  
@@ -309,5 +320,5 @@
 
 
-c   42. pression intercouches :
+c   42. pression intercouches et fonction d'Exner:
 c
 c   -----------------------------------------------------------------
@@ -332,4 +343,17 @@
       ENDDO
 c$OMP END DO NOWAIT
+! ADAPTATION GCM POUR CP(T)
+      DO l=1,llm
+!CDIR ON_ADB(index_i)
+!CDIR ON_ADB(index_j) 
+        do ig0=1,klon
+          i=index_i(ig0)
+          j=index_j(ig0)
+          zpk(ig0,l)=ppk(i,j,l)
+          zteta(ig0,l)=pteta(i,j,l)
+        enddo
+      ENDDO
+c$OMP END DO NOWAIT
+
 c
 c
@@ -337,4 +361,8 @@
 c   43. temperature naturelle (en K) et pressions milieux couches .
 c   ---------------------------------------------------------------
+
+! ADAPTATION GCM POUR CP(T)
+         call tpot2t_p(ngridmx*llm,zteta,ztfi,zpk)
+
 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
       DO l=1,llm
@@ -346,5 +374,5 @@
           pksurcp        = ppk(i,j,l) / cpp
           zplay(ig0,l)   = preff * pksurcp ** unskap
-          ztfi(ig0,l)    = pteta(i,j,l)  * pksurcp
+!          ztfi(ig0,l)    = pteta(i,j,l)  * pksurcp
         enddo
 
@@ -352,5 +380,5 @@
 c$OMP END DO NOWAIT
 
-c   43.bis traceurs
+c   43.bis traceurs (tous intensifs)
 c   ---------------
 c
@@ -369,5 +397,5 @@
          ENDDO
 c$OMP END DO NOWAIT	 
-      ENDDO
+      ENDDO ! of DO iq=1,nqtot
 
 
@@ -504,4 +532,11 @@
 c   Appel de la physique:
 c   ---------------------
+
+! Appel de la physique: pose probleme quand on tourne 
+! SANS physique, car physiq.F est dans le repertoire phy[]... 
+! Il faut une cle CPP_PHYS
+
+! Le fait que les arguments de physiq soient differents selon les planetes 
+! ne pose pas de probleme a priori.
 
 
@@ -626,7 +661,4 @@
       
 c$OMP BARRIER
-      
-      if (planet_type=="earth") then
-#ifdef CPP_EARTH
 
 !$OMP MASTER
@@ -646,5 +678,6 @@
 
 
-      CALL physiq (klon,
+      if (planet_type=="earth") then
+        CALL physiq (klon,
      .             llm,
      .             debut_split,
@@ -674,5 +707,34 @@
      .             pducov,
      .             PVteta)
-
+      else ! a moduler pour Mars
+        CALL physiq (klon,
+     .             llm,
+     .             debut_split,
+     .             lafin_split,
+     .             jD_cur,
+     .             jH_cur_split,
+     .             zdt_split,
+     .             zplev_omp,
+     .             zplay_omp,
+     .             zphi_omp,
+     .             zphis_omp,
+     .             presnivs_omp,
+     .             clesphy0,
+     .             zufi_omp,
+     .             zvfi_omp,
+     .             ztfi_omp,
+     .             zqfi_omp,
+c#ifdef INCA
+     .             flxwfi_omp,
+c#endif
+     .             zdufi_omp,
+     .             zdvfi_omp,
+     .             zdtfi_omp,
+     .             zdqfi_omp,
+     .             zdpsrf_omp,
+cIM diagnostique PVteta, Amip2          
+     .             pducov,
+     .             PVteta)
+      endif ! planet_type
          zufi_omp(:,:)=zufi_omp(:,:)+zdufi_omp(:,:)*zdt_split
          zvfi_omp(:,:)=zvfi_omp(:,:)+zdvfi_omp(:,:)*zdt_split
@@ -692,6 +754,4 @@
       zdqfi_omp(:,:,:)=zdqfic_omp(:,:,:)/nsplit_phys
 
-#endif
-      endif !of if (planet_type=="earth")
 c$OMP BARRIER
 
@@ -891,5 +951,5 @@
 c   62. enthalpie potentielle
 c   ---------------------
-      
+
       kstart=1
       kend=klon
@@ -897,8 +957,16 @@
       if (is_north_pole) kstart=2
       if (is_south_pole)  kend=klon-1
+      
+! ADAPTATION GCM POUR CP(T)
+!$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
+      DO l=1,llm
+        ztfi(1:klon,l)=ztfi(1:klon,l)+zdtfi(1:klon,l)*dtphys
+      ENDDO
+!$OMP END DO
+      call t2tpot_p(ngridmx,llm,ztfi,zteta,zpk)
+
 
 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
       DO l=1,llm
-
 !CDIR ON_ADB(index_i)
 !CDIR ON_ADB(index_j) 
@@ -907,11 +975,16 @@
           i=index_i(ig0)
           j=index_j(ig0)
-          pdhfi(i,j,l) = cpp * zdtfi(ig0,l) / ppk(i,j,l)
-          if (i==1) pdhfi(iip1,j,l) =  cpp * zdtfi(ig0,l) / ppk(i,j,l)
+!          pdhfi(i,j,l) = cpp * zdtfi(ig0,l) / ppk(i,j,l)
+          pdhfi(i,j,l) = (zteta(ig0,l) - pteta(i,j,l))/dtphys
+!          if (i==1) pdhfi(iip1,j,l) =  cpp * zdtfi(ig0,l) / ppk(i,j,l)
+          if (i==1) then
+            pdhfi(iip1,j,l) = (zteta(ig0,l) - pteta(i,j,l))/dtphys
+          endif
          enddo          
 
         if (is_north_pole) then
             DO i=1,iip1
-              pdhfi(i,1,l)    = cpp *  zdtfi(1,l)      / ppk(i, 1  ,l)
+!              pdhfi(i,1,l)    = cpp *  zdtfi(1,l)      / ppk(i, 1  ,l)
+              pdhfi(i,1,l)    = (zteta(1,l) - pteta(i,1,l))/dtphys
             enddo
         endif
@@ -919,5 +992,6 @@
         if (is_south_pole) then
             DO i=1,iip1
-              pdhfi(i,jjp1,l) = cpp *  zdtfi(klon,l)/ ppk(i,jjp1,l)
+!              pdhfi(i,jjp1,l) = cpp *  zdtfi(klon,l)/ ppk(i,jjp1,l)
+              pdhfi(i,jjp1,l) = (zteta(klon,l) - pteta(i,jjp1,l))/dtphys
             ENDDO
         endif
@@ -954,5 +1028,5 @@
 !      ENDDO
 
-c   63. traceurs
+c   63. traceurs (tous en intensifs)
 c   ------------
 C     initialisation des tendances
@@ -1115,5 +1189,5 @@
       stop
 #endif
-! of #ifdef CPP_EARTH
+! of #ifdef CPP_PHYS
       RETURN
       END
Index: /trunk/libf/dyn3dpar/comconst.h
===================================================================
--- /trunk/libf/dyn3dpar/comconst.h	(revision 7)
+++ /trunk/libf/dyn3dpar/comconst.h	(revision 8)
@@ -12,5 +12,5 @@
      &                   ,tau_top_bound,                                &
      & daylen,year_day,molmass
-
+      COMMON/cpdetvenus/nu_venus,t0_venus
 
       INTEGER im,jm,lllm,imp1,jmp1,lllmm1,lllmp1,lcl
@@ -35,4 +35,6 @@
       REAL molmass ! (g/mol) molar mass of the atmosphere
 
+      REAL nu_venus,t0_venus ! coeffs needed for Cp(T), Venus atmosphere
+
 
 !-----------------------------------------------------------------------
Index: /trunk/libf/dyn3dpar/cpdet.F
===================================================================
--- /trunk/libf/dyn3dpar/cpdet.F	(revision 8)
+++ /trunk/libf/dyn3dpar/cpdet.F	(revision 8)
@@ -0,0 +1,216 @@
+! ADAPTATION GCM POUR CP(T)
+c======================================================================
+c S. Lebonnois, 10/2010
+c
+c Cp doit être calculé par cpdet(t) pour être valable partout
+c
+c La fonction d'Exner reste pk = RCPD*(play/pref)**RKAPPA
+c (RCPD=cpp, RKAPPA=kappa)
+c
+c On passe de T a teta (temperature potentielle) par t2tpot(t,teta,pk)
+c On passe de teta a T par tpot2t(teta,t,pk)
+c
+c======================================================================
+
+      SUBROUTINE ini_cpdet
+      IMPLICIT none
+c======================================================================
+c Initialisation de nu_venus et t0_venus
+c======================================================================
+
+! for planet_type:
+      USE control_mod
+
+! for cpp, nu_venus and t0_venus:
+#include "comconst.h"
+
+      if (planet_type.eq."venus") then
+          nu_venus=0.35
+          t0_venus=460.
+      else
+          nu_venus=0.
+          t0_venus=0.
+      endif
+
+      return
+      end
+
+c======================================================================
+c======================================================================
+
+      FUNCTION cpdet(t)
+      IMPLICIT none
+
+! for planet_type:
+      USE control_mod
+
+! for cpp, nu_venus and t0_venus:
+#include "comconst.h"
+
+      real cpdet,t
+
+      if (planet_type.eq."venus") then
+          cpdet = cpp*(t/t0_venus)**nu_venus
+      else
+          cpdet = cpp
+      endif
+
+      return
+      end
+      
+c======================================================================
+c======================================================================
+
+      SUBROUTINE t2tpot(npoints, yt, yteta, ypk)
+      IMPLICIT none
+c======================================================================
+c Arguments:
+c
+c yt   --------input-R- Temperature
+c yteta-------output-R- Temperature potentielle
+c ypk  --------input-R- Fonction d'Exner: RCPD*(pplay/pref)**RKAPPA
+c
+c======================================================================
+
+! for planet_type:
+      USE control_mod
+
+! for cpp, nu_venus and t0_venus:
+#include "comconst.h"
+
+      integer npoints
+      REAL    yt(npoints), yteta(npoints), ypk(npoints)
+      
+      if (planet_type.eq."venus") then
+          yteta = yt**nu_venus                                          &
+     &            - nu_venus * t0_venus**nu_venus * log(ypk/cpp)
+          yteta = yteta**(1./nu_venus)
+      else
+          yteta = yt * cpp/ypk
+      endif
+
+      return
+      end
+
+c======================================================================
+c======================================================================
+
+      SUBROUTINE t2tpot_p(ip1jmp1,llm, yt, yteta, ypk)
+! Parallel version of t2tpot
+      USE parallel
+      USE control_mod, only : planet_type
+      IMPLICIT none
+
+! for cpp, nu_venus and t0_venus:
+#include "comconst.h"
+
+      integer,intent(in) :: ip1jmp1,llm
+      real,intent(in) :: yt(ip1jmp1,llm)
+      real,intent(out) :: yteta(ip1jmp1,llm)
+      real,intent(in) :: ypk(ip1jmp1,llm)
+! local variable:
+      integer :: ij,l,ijb,ije
+      
+      ijb=ij_begin
+      ije=ij_end  
+      
+      if (planet_type.eq."venus") then
+!$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
+        do l=1,llm
+          yteta(ijb:ije,l)=yt(ijb:ije,l)**nu_venus                      &
+     &                     -nu_venus*t0_venus**nu_venus*                &
+     &                          log(ypk(ijb:ije,l)/cpp)
+          yteta(ijb:ije,l)=yteta(ijb:ije,l)**(1./nu_venus)
+        enddo
+!$OMP END DO 
+      else
+!$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
+        do l=1,llm
+          yteta(ijb:ije,l)=yt(ijb:ije,l)*cpp/ypk(ijb:ije,l)
+        enddo
+!$OMP END DO 
+      endif ! of if (planet_type.eq."venus")
+
+      END
+
+c======================================================================
+
+      SUBROUTINE tpot2t(npoints,yteta, yt, ypk)
+      IMPLICIT none
+c======================================================================
+c Arguments:
+c
+c yteta--------input-R- Temperature potentielle
+c yt   -------output-R- Temperature
+c ypk  --------input-R- Fonction d'Exner: RCPD*(pplay/pref)**RKAPPA
+c
+c======================================================================
+
+! for planet_type:
+      USE control_mod
+
+! for cpp, nu_venus and t0_venus:
+#include "comconst.h"
+
+      integer npoints
+      REAL    yt(npoints), yteta(npoints), ypk(npoints)
+      
+      if (planet_type.eq."venus") then
+         yt = yteta**nu_venus                                           &
+     &       + nu_venus * t0_venus**nu_venus * log(ypk/cpp)
+         yt = yt**(1./nu_venus)
+      else
+          yt = yteta * ypk/cpp
+      endif
+  
+      return
+      end
+
+c======================================================================
+c======================================================================
+      SUBROUTINE tpot2t_p(ip1jmp1,llm,yteta, yt, ypk)
+! Parallel version of tpot2t
+      USE parallel
+      USE control_mod, only : planet_type
+      IMPLICIT none
+! for cpp, nu_venus and t0_venus:
+#include "comconst.h"
+
+      integer,intent(in) :: ip1jmp1,llm
+      real,intent(out) :: yt(ip1jmp1,llm)
+      real,intent(in) :: yteta(ip1jmp1,llm)
+      real,intent(in) :: ypk(ip1jmp1,llm)
+! local variable:
+      integer :: ij,l,ijb,ije
+      
+      ijb=ij_begin
+      ije=ij_end  
+
+      if (planet_type.eq."venus") then
+!$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
+        do l=1,llm
+          yt(ijb:ije,l)=yteta(ijb:ije,l)**nu_venus                      &
+     &                  +nu_venus*t0_venus**nu_venus*                   &
+     &                       log(ypk(ijb:ije,l)/cpp)
+          yt(ijb:ije,l)=yt(ijb:ije,l)**(1./nu_venus)
+        enddo
+!$OMP END DO 
+      else
+!$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
+        do l=1,llm
+          yt(ijb:ije,l)=yteta(ijb:ije,l)*ypk(ijb:ije,l)/cpp
+        enddo
+!$OMP END DO 
+      endif ! of if (planet_type.eq."venus")
+      END
+
+c======================================================================
+c======================================================================
+c
+c ATTENTION
+c
+c Si un jour on a besoin, il faudra coder les routines 
+c    dt2dtpot / dtpto2dt 
+c
+c======================================================================
+c======================================================================
Index: /trunk/libf/dyn3dpar/gcm.F
===================================================================
--- /trunk/libf/dyn3dpar/gcm.F	(revision 7)
+++ /trunk/libf/dyn3dpar/gcm.F	(revision 8)
@@ -190,12 +190,13 @@
       call Read_Distrib
 ! Ehouarn : temporarily (?) keep this only for Earth
-      if (planet_type.eq."earth") then
-#ifdef CPP_EARTH
+!      if (planet_type.eq."earth") then
+!#ifdef CPP_EARTH
+#ifdef CPP_PHYS
         CALL Init_Phys_lmdz(iim,jjp1,llm,mpi_size,distrib_phys)
 #endif
-      endif ! of if (planet_type.eq."earth")
+!      endif ! of if (planet_type.eq."earth")
       CALL set_bands
-#ifdef CPP_EARTH
-! Ehouarn: For now only Earth physics is parallel
+#ifdef CPP_PHYS
+! Ehouarn: NB: For now only Earth physics is parallel
       CALL Init_interface_dyn_phys
 #endif
@@ -210,11 +211,15 @@
 
 ! Ehouarn : temporarily (?) keep this only for Earth
-      if (planet_type.eq."earth") then
-#ifdef CPP_EARTH
+!      if (planet_type.eq."earth") then
+!#ifdef CPP_EARTH
+#ifdef CPP_PHYS
 c$OMP PARALLEL
       call InitComgeomphy
 c$OMP END PARALLEL 
 #endif
-      endif ! of if (planet_type.eq."earth")
+!      endif ! of if (planet_type.eq."earth")
+
+c Initialisations pour Cp(T) Venus
+      call ini_cpdet
 
 c-----------------------------------------------------------------------
@@ -276,9 +281,12 @@
         endif
 
-!        if (planet_type.eq."earth") then
-! Load an Earth-format start file
+        if (planet_type.eq."mars") then
+! POUR MARS, METTRE UNE FONCTION A PART, genre dynetat0_mars
+         abort_message = 'dynetat0_mars A FAIRE'
+         call abort_gcm(modname,abort_message,0)
+        else
          CALL dynetat0("start.nc",vcov,ucov,
      &              teta,q,masse,ps,phis, time_0)
-!        endif ! of if (planet_type.eq."earth")
+        endif ! of if (planet_type.eq."mars")
 
 c       write(73,*) 'ucov',ucov
@@ -445,11 +453,11 @@
          WRITE(lunout,*)
      .       'GCM: WARNING!!! vitesse verticale nulle dans la physique'
-! Earth:
-         if (planet_type.eq."earth") then
-#ifdef CPP_EARTH
+! Initialisation de la physique: pose probleme quand on tourne 
+! SANS physique, car iniphysiq.F est dans le repertoire phy[]... 
+! Il faut une cle CPP_PHYS
+#ifdef CPP_PHYS
          CALL iniphysiq(ngridmx,llm,daysec,day_ini,dtphys/nsplit_phys ,
      ,                latfi,lonfi,airefi,zcufi,zcvfi,rad,g,r,cpp     )
-#endif
-         endif ! of if (planet_type.eq."earth")
+#endif ! CPP_PHYS
          call_iniphys=.false.
       ENDIF ! of IF (call_iniphys.and.(iflag_phys.eq.1))
@@ -486,8 +494,11 @@
 #endif
 
-!      if (planet_type.eq."earth") then
-! Write an Earth-format restart file
+      if (planet_type.eq."mars") then
+! POUR MARS, METTRE UNE FONCTION A PART, genre dynredem0_mars
+         abort_message = 'dynredem0_mars A FAIRE'
+         call abort_gcm(modname,abort_message,0)
+      else
         CALL dynredem0_p("restart.nc", day_end, phis)
-!      endif
+      endif ! of if (planet_type.eq."mars")
 
       ecripar = .TRUE.
Index: /trunk/libf/dyn3dpar/infotrac.F90
===================================================================
--- /trunk/libf/dyn3dpar/infotrac.F90	(revision 7)
+++ /trunk/libf/dyn3dpar/infotrac.F90	(revision 8)
@@ -65,5 +65,5 @@
     INTEGER :: nqtrue  ! number of tracers read from tracer.def, without higer order of moment
     INTEGER :: iq, new_iq, iiq, jq, ierr
-
+ 
     character(len=*),parameter :: modname="infotrac_init"
 !-----------------------------------------------------------------------
@@ -84,10 +84,13 @@
     descrq(30)='PRA'
     
-
-    IF (config_inca=='none') THEN
+    IF (planet_type=='earth') THEN
+     IF (config_inca=='none') THEN
        type_trac='lmdz'
+     ELSE
+       type_trac='inca'
+     END IF
     ELSE
-       type_trac='inca'
-    END IF
+     type_trac='plnt'  ! planets... May want to dissociate between each later.
+    ENDIF
 
 !-----------------------------------------------------------------------
@@ -97,31 +100,42 @@
 !
 !-----------------------------------------------------------------------
-    IF (type_trac == 'lmdz') THEN
+    IF (planet_type=='earth') THEN
+     IF (type_trac == 'lmdz') THEN
        OPEN(90,file='traceur.def',form='formatted',status='old', iostat=ierr)
        IF(ierr.EQ.0) THEN
-          WRITE(lunout,*) trim(modname),': Open traceur.def : ok'
+          WRITE(lunout,*) 'Open traceur.def : ok'
           READ(90,*) nqtrue
        ELSE 
-          WRITE(lunout,*) trim(modname),': Problem in opening traceur.def'
-          WRITE(lunout,*) trim(modname),': WARNING using defaut values'
+          WRITE(lunout,*) 'Problem in opening traceur.def'
+          WRITE(lunout,*) 'ATTENTION using defaut values'
           nqtrue=4 ! Defaut value
        END IF
-       if ( planet_type=='earth') then
-         ! For Earth, water vapour & liquid tracers are not in the physics
-         nbtr=nqtrue-2
-       else
-         ! Other planets (for now); we have the same number of tracers
-         ! in the dynamics than in the physics
-         nbtr=nqtrue
-       endif
-    ELSE
+       ! For Earth, water vapour & liquid tracers are not in the physics
+       nbtr=nqtrue-2
+     ELSE
        ! nbtr has been read from INCA by init_cont_lmdz() in gcm.F 
        nqtrue=nbtr+2
-    END IF
-
-    IF ((planet_type=="earth").and.(nqtrue < 2)) THEN
+     END IF
+
+     IF (nqtrue < 2) THEN
        WRITE(lunout,*) trim(modname),': nqtrue=',nqtrue, ' is not allowded. 2 tracers is the minimum'
        CALL abort_gcm('infotrac_init','Not enough tracers',1)
-    END IF
+     END IF
+
+    ELSE  ! not Earth
+       OPEN(90,file='traceur.def',form='formatted',status='old', iostat=ierr)
+       IF(ierr.EQ.0) THEN
+          WRITE(lunout,*) 'Open traceur.def : ok'
+          READ(90,*) nqtrue
+       ELSE 
+          WRITE(lunout,*) 'Problem in opening traceur.def'
+          WRITE(lunout,*) 'ATTENTION using defaut values: nqtrue=1'
+          nqtrue=1 ! Defaut value
+       END IF
+       ! Other planets (for now); we have the same number of tracers
+       ! in the dynamics than in the physics
+       nbtr=nqtrue
+     
+    ENDIF  ! planet_type
 !
 ! Allocate variables depending on nqtrue and nbtr
@@ -158,5 +172,6 @@
 !    Get choice of advection schema from file tracer.def or from INCA
 !---------------------------------------------------------------------
-    IF (type_trac == 'lmdz') THEN
+    IF (planet_type=='earth') THEN
+     IF (type_trac == 'lmdz') THEN
        IF(ierr.EQ.0) THEN
           ! Continue to read tracer.def
@@ -194,5 +209,5 @@
        END DO
 
-    ELSE  ! type_trac=inca : config_inca='aero' ou 'chem'
+     ELSE  ! type_trac=inca : config_inca='aero' ou 'chem'
 ! le module de chimie fournit les noms des traceurs
 ! et les schemas d'advection associes.
@@ -213,5 +228,26 @@
        END DO
 
-    END IF ! type_trac
+     END IF ! type_trac
+
+    ELSE  ! not Earth
+       IF(ierr.EQ.0) THEN
+          ! Continue to read tracer.def
+          DO iq=1,nqtrue
+             READ(90,999) hadv(iq),vadv(iq),tnom_0(iq)
+          END DO
+          CLOSE(90)  
+       ELSE ! Without tracer.def
+          hadv(1) = 10
+          vadv(1) = 10
+          tnom_0(1) = 'dummy'
+       END IF
+       
+       WRITE(lunout,*) trim(modname),': Valeur de traceur.def :'
+       WRITE(lunout,*) trim(modname),': nombre de traceurs ',nqtrue
+       DO iq=1,nqtrue
+          WRITE(lunout,*) hadv(iq),vadv(iq),tnom_0(iq)
+       END DO
+
+    ENDIF  ! planet_type
 
 !-----------------------------------------------------------------------
@@ -280,7 +316,7 @@
        tname(new_iq)= tnom_0(iq)
        IF (iadv(new_iq)==0) THEN
-          ttext(new_iq)=trim(str1)
+          ttext(new_iq)=str1(1:lnblnk(str1))
        ELSE
-          ttext(new_iq)=trim(tnom_0(iq))//descrq(iadv(new_iq))
+          ttext(new_iq)=str1(1:lnblnk(str1))//descrq(iadv(new_iq))
        END IF
 
Index: /trunk/libf/dyn3dpar/leapfrog_p.F
===================================================================
--- /trunk/libf/dyn3dpar/leapfrog_p.F	(revision 7)
+++ /trunk/libf/dyn3dpar/leapfrog_p.F	(revision 8)
@@ -90,4 +90,7 @@
       REAL,SAVE :: phi(ip1jmp1,llm)                  ! geopotentiel
       REAL,SAVE :: w(ip1jmp1,llm)                    ! vitesse verticale
+! ADAPTATION GCM POUR CP(T)
+      REAL,SAVE :: temp(ip1jmp1,llm)                 ! temperature  
+      REAL,SAVE :: tsurpk(ip1jmp1,llm)               ! cpp*T/pk  
 
 c variables dynamiques intermediaire pour le transport
@@ -475,4 +478,9 @@
      &                                jj_nb_caldyn,0,0,TestRequest)
         enddo
+! ADAPTATION GCM POUR CP(T)
+         call Register_SwapFieldHallo(temp,temp,ip1jmp1,llm,
+     &                                jj_Nb_caldyn,0,0,TestRequest)
+         call Register_SwapFieldHallo(tsurpk,tsurpk,ip1jmp1,llm,
+     &                                jj_Nb_caldyn,0,0,TestRequest)
 
          call SetDistrib(jj_nb_caldyn)
@@ -505,4 +513,7 @@
        call Register_Hallo(pks,ip1jmp1,1,1,1,1,1,TestRequest)
        call Register_Hallo(p,ip1jmp1,llmp1,1,1,1,1,TestRequest)
+! ADAPTATION GCM POUR CP(T)
+       call Register_Hallo(temp,ip1jmp1,llm,1,1,1,1,TestRequest)
+       call Register_Hallo(tsurpk,ip1jmp1,llm,1,1,1,1,TestRequest)
        
 c       do j=1,nqtot
@@ -543,5 +554,14 @@
       True_itau=True_itau+1
 
-c$OMP MASTER
+! ADAPTATION GCM POUR CP(T)
+      call tpot2t_p(ip1jmp1,llm,teta,temp,pk)
+      ijb=ij_begin
+      ije=ij_end
+!$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
+      do l=1,llm
+        tsurpk(ijb:ije,llm)=cpp*temp(ijb:ije,llm)/pk(ijb:ije,llm)
+      enddo
+!$OMP END DO
+
       IF (prt_level>9) THEN
         WRITE(lunout,*)"leapfrog_p: Iteration No",True_itau
@@ -551,6 +571,7 @@
       call start_timer(timer_caldyn)
 
-      CALL geopot_p  ( ip1jmp1, teta  , pk , pks,  phis  , phi   )
-
+! ADAPTATION GCM POUR CP(T)
+!      CALL geopot_p  ( ip1jmp1, teta  , pk , pks,  phis  , phi   )
+      CALL geopot_p  ( ip1jmp1, tsurpk  , pk , pks,  phis  , phi   )
       
       call VTb(VTcaldyn)
@@ -561,6 +582,10 @@
 !      CALL FTRACE_REGION_BEGIN("caldyn")
       time = jD_cur + jH_cur 
+! ADAPTATION GCM POUR CP(T)
+!      CALL caldyn_p 
+!     $  ( itau,ucov,vcov,teta,ps,masse,pk,pkf,phis ,
+!     $    phi,conser,du,dv,dteta,dp,w, pbaru,pbarv, time )
       CALL caldyn_p 
-     $  ( itau,ucov,vcov,teta,ps,masse,pk,pkf,phis ,
+     $  ( itau,ucov,vcov,teta,ps,masse,pk,pkf,tsurpk,phis,
      $    phi,conser,du,dv,dteta,dp,w, pbaru,pbarv, time )
 
@@ -701,5 +726,5 @@
 
 
-c   Inbterface avec les routines de phylmd (phymars ... )
+c   Interface avec les routines de phylmd (phymars ... )
 c   -----------------------------------------------------
 
@@ -1075,4 +1100,6 @@
 
 c   dissipation
+! ADAPTATION GCM POUR CP(T)
+        call tpot2t_p(ip1jmp1,llm,teta,temp,pk)
 
 !        CALL FTRACE_REGION_BEGIN("dissip")
@@ -1085,4 +1112,5 @@
         DO l=1,llm
           ucov(ijb:ije,l)=ucov(ijb:ije,l)+dudis(ijb:ije,l)
+          dudis(ijb:ije,l)=dudis(ijb:ije,l)/dtdiss   ! passage en (m/s)/s
         ENDDO
 c$OMP END DO NOWAIT        
@@ -1091,8 +1119,7 @@
         DO l=1,llm
           vcov(ijb:ije,l)=vcov(ijb:ije,l)+dvdis(ijb:ije,l)
+          dvdis(ijb:ije,l)=dvdis(ijb:ije,l)/dtdiss   ! passage en (m/s)/s
         ENDDO
 c$OMP END DO NOWAIT        
-
-c       teta=teta+dtetadis
 
 
@@ -1124,9 +1151,21 @@
             do l=1,llm
               do ij=ijb,ije
-                dtetaecdt(ij,l)= (ecin0(ij,l)-ecin(ij,l))/ pk(ij,l)
+! ADAPTATION GCM POUR CP(T)
+!                dtetaecdt(ij,l)= (ecin0(ij,l)-ecin(ij,l))/ pk(ij,l)
+!                dtetadis(ij,l)=dtetadis(ij,l)+dtetaecdt(ij,l)
+                temp(ij,l)=temp(ij,l) +
+     &                      (ecin0(ij,l)-ecin(ij,l))/cpdet(temp(ij,l))
+              enddo
+            enddo
+c$OMP END DO
+            call t2tpot_p(ip1jmp1,llm,temp,ztetaec,pk)
+c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)            
+            do l=1,llm
+              do ij=ijb,ije
+                dtetaecdt(ij,l)=ztetaec(ij,l)-teta(ij,l)
                 dtetadis(ij,l)=dtetadis(ij,l)+dtetaecdt(ij,l)
               enddo
             enddo
-c$OMP END DO NOWAIT            
+c$OMP END DO NOWAIT
        endif ! of if (dissip_conservative)
 
@@ -1137,4 +1176,5 @@
            do ij=ijb,ije
               teta(ij,l)=teta(ij,l)+dtetadis(ij,l)
+              dtetadis(ij,l)=dtetadis(ij,l)/dtdiss   ! passage en K/s
            enddo
          enddo
@@ -1372,6 +1412,11 @@
 
 c ATTENTION!!! bilan_dyn_p ne marche probablement pas avec OpenMP
-              CALL bilan_dyn_p(2,dtvr*iperiod,dtvr*day_step*periodav, 
-     ,             ps,masse,pk,pbaru,pbarv,teta,phi,ucov,vcov,q) 
+!              CALL bilan_dyn_p(2,dtvr*iperiod,dtvr*day_step*periodav, 
+!     ,             ps,masse,pk,pbaru,pbarv,teta,phi,ucov,vcov,q) 
+c les traceurs ne sont pas sortis, trop lourd. 
+c Peut changer eventuellement si besoin.
+                 CALL bilan_dyn_p(dtvr*iperiod,dtvr*day_step*periodav,
+     &                 ps,masse,pk,pbaru,pbarv,teta,phi,ucov,vcov,
+     &                 du,dudis,duspg,dufi)
 c$OMP END MASTER
               ENDIF !ok_dynzon
@@ -1411,5 +1456,16 @@
 c$OMP MASTER
               nbetat = nbetatdem
-              CALL geopot_p(ip1jmp1,teta,pk,pks,phis,phi)
+
+! ADAPTATION GCM POUR CP(T)
+      call tpot2t_p(ip1jmp1,llm,teta,temp,pk)
+      ijb=ij_begin
+      ije=ij_end
+!$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
+      do l=1,llm
+        tsurpk(ijb:ije,llm)=cpp*temp(ijb:ije,llm)/pk(ijb:ije,llm)
+      enddo
+!$OMP END DO
+!              CALL geopot_p(ip1jmp1,teta,pk,pks,phis,phi)
+      CALL geopot_p  ( ip1jmp1, tsurpk  , pk , pks,  phis  , phi   )
        
 cym        unat=0.
@@ -1488,9 +1544,13 @@
 c$OMP MASTER
 
-!              if (planet_type.eq."earth") then
+              if (planet_type.eq."mars") then
+! POUR MARS, METTRE UNE FONCTION A PART, genre dynredem1_mars
+                abort_message = 'dynredem1_mars A FAIRE'
+                call abort_gcm(modname,abort_message,0)
+              else
 ! Write an Earth-format restart file
                 CALL dynredem1_p("restart.nc",0.0,
      &                           vcov,ucov,teta,q,masse,ps)
-!              endif ! of if (planet_type.eq."earth")
+              endif ! of if (planet_type.eq."mars")
 
 !              CLOSE(99)
@@ -1578,6 +1638,12 @@
 !               CALL writedynav_p(histaveid, itau,vcov ,
 !     ,                          ucov,teta,pk,phi,q,masse,ps,phis)
-               CALL bilan_dyn_p(2,dtvr*iperiod,dtvr*day_step*periodav,
-     ,           ps,masse,pk,pbaru,pbarv,teta,phi,ucov,vcov,q)
+!               CALL bilan_dyn_p(2,dtvr*iperiod,dtvr*day_step*periodav,
+!     ,           ps,masse,pk,pbaru,pbarv,teta,phi,ucov,vcov,q)
+c les traceurs ne sont pas sortis, trop lourd. 
+c Peut changer eventuellement si besoin.
+                 CALL bilan_dyn_p(dtvr*iperiod,dtvr*day_step*periodav,
+     &                 ps,masse,pk,pbaru,pbarv,teta,phi,ucov,vcov,
+     &                 du,dudis,duspg,dufi)
+
 c$OMP END MASTER
                END IF !ok_dynzon
@@ -1614,5 +1680,16 @@
 c$OMP MASTER
                 nbetat = nbetatdem
-                CALL geopot_p(ip1jmp1,teta,pk,pks,phis,phi)
+! ADAPTATION GCM POUR CP(T)
+                call tpot2t_p(ip1jmp1,llm,teta,temp,pk)
+                ijb=ij_begin
+                ije=ij_end
+!$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
+                do l=1,llm
+                  tsurpk(ijb:ije,llm)=cpp*temp(ijb:ije,llm)/
+     &                                             pk(ijb:ije,llm)
+                enddo
+!$OMP END DO
+!                CALL geopot_p(ip1jmp1,teta,pk,pks,phis,phi)
+                CALL geopot_p(ip1jmp1,tsurpk,pk,pks,phis,phi)
 
 cym        unat=0.
@@ -1681,10 +1758,14 @@
 
               IF(itau.EQ.itaufin) THEN
-!                if (planet_type.eq."earth") then
+                if (planet_type.eq."mars") then
+! POUR MARS, METTRE UNE FONCTION A PART, genre dynredem1_mars
+                  abort_message = 'dynredem1_mars A FAIRE'
+                  call abort_gcm(modname,abort_message,0)
+                else
 c$OMP MASTER
                    CALL dynredem1_p("restart.nc",0.0,
      .                               vcov,ucov,teta,q,masse,ps)
 c$OMP END MASTER
-!                endif ! of if (planet_type.eq."earth")
+                endif ! of if (planet_type.eq."mars")
               ENDIF ! of IF(itau.EQ.itaufin)
 
Index: /trunk/libf/dyn3dpar/vlspltqs_p.F
===================================================================
--- /trunk/libf/dyn3dpar/vlspltqs_p.F	(revision 7)
+++ /trunk/libf/dyn3dpar/vlspltqs_p.F	(revision 8)
@@ -69,5 +69,8 @@
       REAL rtt,retv,r2es,r3les,r3ies,r4les,r4ies,play
       REAL ptarg,pdelarg,foeew,zdelta
-      REAL tempe(ip1jmp1)
+!      REAL tempe(ip1jmp1)
+! ADAPTATION GCM POUR CP(T)
+      REAL tempe(ip1jmp1,llm)
+
       INTEGER ijb,ije
       type(request) :: MyRequest1
@@ -91,4 +94,9 @@
 c-- approximation: au milieu des couches play(l)=(p(l)+p(l+1))/2
 c   pour eviter une exponentielle.
+
+! ADAPTATION GCM POUR CP(T)
+! probablement a revoir...
+      call tpot2t_p(ip1jmp1,llm,teta,tempe,pk)
+
 
       call SetTag(MyRequest1,100)
@@ -102,11 +110,11 @@
 	
 	DO l = 1, llm
+!         DO ij = ijb, ije
+!          tempe(ij) = teta(ij,l) * pk(ij,l) /cpp
+!         ENDDO
          DO ij = ijb, ije
-          tempe(ij) = teta(ij,l) * pk(ij,l) /cpp
-         ENDDO
-         DO ij = ijb, ije
-          zdelta = MAX( 0., SIGN(1., rtt - tempe(ij)) )
+          zdelta = MAX( 0., SIGN(1., rtt - tempe(ij,l)) )
           play   = 0.5*(p(ij,l)+p(ij,l+1))
-          qsat(ij,l) = MIN(0.5, r2es* FOEEW(tempe(ij),zdelta) / play )
+          qsat(ij,l) = MIN(0.5, r2es* FOEEW(tempe(ij,l),zdelta) / play )
           qsat(ij,l) = qsat(ij,l) / ( 1. - retv * qsat(ij,l) )
          ENDDO
