Index: /trunk/chantiers/commit_v7.log
===================================================================
--- /trunk/chantiers/commit_v7.log	(revision 7)
+++ /trunk/chantiers/commit_v7.log	(revision 7)
@@ -0,0 +1,32 @@
+* Mise à niveau (de la dynamique) par rapport à la version 1447 de LMDZ5
+* ----------------------------------------------------------------------
+
+* Pour l'instant, on n'a pas touché à dyn3dpar, donc pour l'instant on ne
+  fait que recopier les fichiers de la version 1447
+
+* Mise à jour de routines (dans dyn3d) qui n'ont changé que côté LMDZ5:
+- ener.h
+- grid_noro.F
+- iniacademic.F
+- integrd.F
+- limit_netcdf.F90
+
+* Mise à jour des routines qui ont changé des deux côtés:
+- addfi.F 
+  * ajout d'un "USE control_mod, ONLY : planet_type"
+  * mise en forme du if (planet_type=="earth") à l'identique de la revision 1447 (pour être peinard vis-à-vis de futures diff).
+- caladvtrac.F 
+  * ajout d'un "USE control_mod, ONLY : iapp_tracvl,planet_type"
+  * mise en conformité de la taille du tableau dq(ip1jmp1,llm,nqtot) et non pas dq(ip1jmp1,llm,2) (qui oblige à avoir au moins 2 traceurs...)
+  * mise entre if (planet_type=="earth") des calculs après advtrac (à nouveau, il faut avoir au moins 2 traceurs pour que ça ait un sens; et encore, ce morceau ne sert peut-être au final à rien).
+  * A nouveau ces modifs étaient déjà en partie déjà faites; j'ai juste remis en forme comme dans la révision 1447 pour rester homogène avec le code terrestre.
+- gcm.F
+  * Mise d'un #ifdef CPP_PHYS autoure de Init_Phys_lmdz et InitComgeomphy , au lieu du (bancal) #ifdef CPP_EARTH
+  * De même il faut bel et bien un #ifdef CPP_PHYS autour de iniphysiq & co.
+- infotrac.F90
+  * Ajout des modifs de forme et correction sur l'utilisation de trim() et taille des tableaux str1(23),str2(23)
+  * On garde un type_trac='plnt' pour les planètes (Attention, il faudra vérifier que ça ne casse rien par ailleurs et surtout n'est-ce finalement pas redoundant avec le planet_type?).
+- leapfrog.F
+  * Ajout des modifs/améliorations pour le cas académique sans physique
+   mais en utilisant dutop(),dvtop(), etc. pour le sponge layer
+   
Index: /trunk/libf/dyn3d/addfi.F
===================================================================
--- /trunk/libf/dyn3d/addfi.F	(revision 6)
+++ /trunk/libf/dyn3d/addfi.F	(revision 7)
@@ -1,4 +1,4 @@
 !
-! $Header$
+! $Id: addfi.F 1446 2010-10-22 09:27:25Z emillour $
 !
       SUBROUTINE addfi(pdt, leapf, forward,
@@ -7,4 +7,5 @@
 
       USE infotrac, ONLY : nqtot
+      USE control_mod, ONLY : planet_type
       IMPLICIT NONE
 c
@@ -116,6 +117,7 @@
       ENDDO
  
-      DO iq = 1, nqtot
-       IF ((planet_type.eq.'earth').and.(iq.le.2)) THEN
+      if (planet_type=="earth") then
+      ! earth case, special treatment for first 2 tracers (water)
+       DO iq = 1, 2
          DO k = 1,llm
             DO j = 1,ip1jmp1
@@ -124,5 +126,7 @@
             ENDDO
          ENDDO
-       ELSE 
+       ENDDO
+
+       DO iq = 3, nqtot
          DO k = 1,llm
             DO j = 1,ip1jmp1
@@ -131,5 +135,16 @@
             ENDDO
          ENDDO
-      ENDDO
+       ENDDO
+      else
+      ! general case, treat all tracers equally)
+       DO iq = 1, nqtot
+         DO k = 1,llm
+            DO j = 1,ip1jmp1
+               pq(j,k,iq)= pq(j,k,iq) + pdqfi(j,k,iq) * pdt
+               pq(j,k,iq)= AMAX1( pq(j,k,iq), qtestt )
+            ENDDO
+         ENDDO
+       ENDDO
+      endif ! of if (planet_type=="earth")
 
       DO  ij   = 1, iim
Index: /trunk/libf/dyn3d/advtrac.F
===================================================================
--- /trunk/libf/dyn3d/advtrac.F	(revision 6)
+++ /trunk/libf/dyn3d/advtrac.F	(revision 7)
@@ -1,4 +1,4 @@
 !
-! $Id: advtrac.F 1403 2010-07-01 09:02:53Z fairhead $
+! $Id: advtrac.F 1446 2010-10-22 09:27:25Z emillour $
 !
 c
@@ -236,5 +236,4 @@
             call vlsplt(q(1,1,iq),2.,massem,wg,pbarug,pbarvg,dtvr)
 
-
 c   ----------------------------------------------------------------
 c   Schema "pseudo amont" + test sur humidite specifique
Index: /trunk/libf/dyn3d/caladvtrac.F
===================================================================
--- /trunk/libf/dyn3d/caladvtrac.F	(revision 6)
+++ /trunk/libf/dyn3d/caladvtrac.F	(revision 7)
@@ -1,4 +1,4 @@
 !
-! $Id: caladvtrac.F 1403 2010-07-01 09:02:53Z fairhead $
+! $Id: caladvtrac.F 1446 2010-10-22 09:27:25Z emillour $
 !
 c
@@ -9,5 +9,5 @@
 c
       USE infotrac
-      USE control_mod
+      USE control_mod, ONLY : iapp_tracvl,planet_type
  
       IMPLICIT NONE
@@ -30,5 +30,6 @@
 c   ----------
       REAL pbaru( ip1jmp1,llm ),pbarv( ip1jm,llm),masse(ip1jmp1,llm)
-      REAL p( ip1jmp1,llmp1),q( ip1jmp1,llm,nqtot),dq( ip1jmp1,llm,2 )
+      REAL p( ip1jmp1,llmp1),q( ip1jmp1,llm,nqtot)
+      real :: dq(ip1jmp1,llm,nqtot)
       REAL teta( ip1jmp1,llm),pk( ip1jmp1,llm)
       REAL               :: flxw(ip1jmp1,llm)
@@ -49,16 +50,13 @@
 cc
 c
+! Earth-specific stuff for the first 2 tracers (water)
+      if (planet_type.eq."earth") then
 C initialisation
-        dq = 0.
-
-      IF (planet_type.eq."earth") THEN
-! Earth-specific treatment of first 2 tracers (water)
-
-        CALL SCOPY( 2 * ijp1llm, q, 1, dq, 1 )
-
+        dq(:,:,1:2)=q(:,:,1:2)
+       
 c  test des valeurs minmax
 cc        CALL minmaxq(q(1,1,1),1.e33,-1.e33,'Eau vapeur (a) ')
 cc        CALL minmaxq(q(1,1,2),1.e33,-1.e33,'Eau liquide(a) ')
-
+      endif ! of if (planet_type.eq."earth")
 c   advection
 
@@ -66,7 +64,10 @@
      *       p,  masse,q,iapptrac, teta,
      .       flxw, pk)
+
 c
 
-         IF( iapptrac.EQ.iapp_tracvl ) THEN
+      IF( iapptrac.EQ.iapp_tracvl ) THEN
+        if (planet_type.eq."earth") then
+! Earth-specific treatment for the first 2 tracers (water)
 c
 cc          CALL minmaxq(q(1,1,1),1.e33,-1.e33,'Eau vapeur     ')
@@ -100,33 +101,12 @@
            ENDDO
 c
-         ELSE  
-           DO iq = 1 , 2
-           DO l  = 1, llm
-             DO ij = 1,ip1jmp1
-              dq(ij,l,iq)  = 0.
-             ENDDO
-           ENDDO
-           ENDDO
+        endif ! of if (planet_type.eq."earth")
+      ELSE
+        if (planet_type.eq."earth") then
+! Earth-specific treatment for the first 2 tracers (water)
+          dq(:,:,1:2)=0.
+        endif ! of if (planet_type.eq."earth")
+      ENDIF ! of IF( iapptrac.EQ.iapp_tracvl )
 
-
-         ENDIF ! iapptrac VS iapp_tracvl
-
-      ELSE ! not Earth
-
-c   advection
-
-        CALL advtrac( pbaru,pbarv, 
-     *       p,  masse,q,iapptrac, teta,
-     .       flxw, pk)
-c
-
-      ENDIF ! planet_type
-
-c
-
-c  ... On appelle  qminimum uniquement  pour l'eau vapeur et liquide  ..
-
- 
-      RETURN
       END
 
Index: /trunk/libf/dyn3d/ener.h
===================================================================
--- /trunk/libf/dyn3d/ener.h	(revision 6)
+++ /trunk/libf/dyn3d/ener.h	(revision 7)
@@ -1,14 +1,18 @@
 !
-! $Header$
+! $Id: ener.h 1447 2010-10-22 16:18:27Z jghattas $
 !
-c-----------------------------------------------------------------------
-c INCLUDE 'ener.h'
+!  ATTENTION!!!!: ce fichier include est compatible format fixe/format libre
+!                 veillez à n'utiliser que des ! pour les commentaires
+!                 et à bien positionner les & des lignes de continuation 
+!                 (les placer en colonne 6 et en colonne 73)
+!
+! INCLUDE 'ener.h'
 
-      COMMON/ener/ang0,etot0,ptot0,ztot0,stot0,
-     *            ang,etot,ptot,ztot,stot,rmsdpdt ,
-     *            rmsv,gtot(llmm1)
+      COMMON/ener/ang0,etot0,ptot0,ztot0,stot0,                         &
+     &            ang,etot,ptot,ztot,stot,rmsdpdt ,                     &
+     &            rmsv,gtot(llmm1)
 
-      REAL ang0,etot0,ptot0,ztot0,stot0,
-     s     ang,etot,ptot,ztot,stot,rmsdpdt,rmsv,gtot
+      REAL ang0,etot0,ptot0,ztot0,stot0,                                &
+     &     ang,etot,ptot,ztot,stot,rmsdpdt,rmsv,gtot
 
-c-----------------------------------------------------------------------
+!-----------------------------------------------------------------------
Index: /trunk/libf/dyn3d/gcm.F
===================================================================
--- /trunk/libf/dyn3d/gcm.F	(revision 6)
+++ /trunk/libf/dyn3d/gcm.F	(revision 7)
@@ -1,4 +1,4 @@
 !
-! $Id: gcm.F 1403 2010-07-01 09:02:53Z fairhead $
+! $Id: gcm.F 1446 2010-10-22 09:27:25Z emillour $
 !
 c
@@ -182,10 +182,11 @@
 ! dynamique -> physique pour l'initialisation
 ! 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,1,(/(jjm-1)*iim+2/))
       call InitComgeomphy
 #endif
-      endif
+!      endif
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 c
@@ -439,8 +440,8 @@
 ! SANS physique, car iniphysiq.F est dans le repertoire phy[]... 
 ! Il faut une cle CPP_PHYS
-! #ifdef 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 ! CPP_PHYS
+#endif ! CPP_PHYS
          call_iniphys=.false.
       ENDIF ! of IF (call_iniphys.and.(iflag_phys.eq.1))
Index: /trunk/libf/dyn3d/grid_noro.F
===================================================================
--- /trunk/libf/dyn3d/grid_noro.F	(revision 6)
+++ /trunk/libf/dyn3d/grid_noro.F	(revision 7)
@@ -1,4 +1,4 @@
 !
-! $Id: grid_noro.F 1403 2010-07-01 09:02:53Z fairhead $
+! $Id: grid_noro.F 1442 2010-10-18 08:31:31Z jghattas $
 !
 c
@@ -458,11 +458,8 @@
 C MAKE A MOVING AVERAGE OVER 9 GRIDPOINTS OF THE X FIELDS
 
-      PARAMETER (ISMo=400,JSMo=200)
-      REAL X(IMAR,JMAR),XF(ISMo,JSMo)
+      REAL X(IMAR,JMAR),XF(IMAR,JMAR)
       real WEIGHTpb(-1:1,-1:1)
 
-      if(imar.gt.ismo) stop'surdimensionner ismo dans mva9 (grid_noro)'
-      if(jmar.gt.jsmo) stop'surdimensionner jsmo dans mva9 (grid_noro)'
-      
+
       SUM=0.
       DO IS=-1,1
Index: /trunk/libf/dyn3d/infotrac.F90
===================================================================
--- /trunk/libf/dyn3d/infotrac.F90	(revision 6)
+++ /trunk/libf/dyn3d/infotrac.F90	(revision 7)
@@ -31,7 +31,5 @@
 
   SUBROUTINE infotrac_init
-
     USE control_mod
- 
     IMPLICIT NONE
 !=======================================================================
@@ -63,10 +61,10 @@
     CHARACTER(len=1), DIMENSION(3)  :: txts
     CHARACTER(len=2), DIMENSION(9)  :: txtp
-    CHARACTER(len=13)               :: str1,str2
+    CHARACTER(len=23)               :: str1,str2
   
     INTEGER :: nqtrue  ! number of tracers read from tracer.def, without higer order of moment
     INTEGER :: iq, new_iq, iiq, jq, ierr
-    INTEGER, EXTERNAL :: lnblnk
  
+    character(len=*),parameter :: modname="infotrac_init"
 !-----------------------------------------------------------------------
 ! Initialization :
@@ -113,4 +111,5 @@
           nqtrue=4 ! Defaut value
        END IF
+       ! For Earth, water vapour & liquid tracers are not in the physics
        nbtr=nqtrue-2
      ELSE
@@ -120,5 +119,5 @@
 
      IF (nqtrue < 2) THEN
-       WRITE(lunout,*) 'nqtrue=',nqtrue, ' is not allowded. 2 tracers is the minimum'
+       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
@@ -134,4 +133,6 @@
           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
      
@@ -179,5 +180,6 @@
           END DO
           CLOSE(90)  
-       ELSE ! Without tracer.def
+       ELSE ! Without tracer.def, set default values (for Earth!)
+         if ((nqtrue==4).and.(planet_type=="earth")) then
           hadv(1) = 14
           vadv(1) = 14
@@ -192,8 +194,15 @@
           vadv(4) = 10
           tnom_0(4) = 'PB'
+         else
+           ! Error message, we need a traceur.def file
+           write(lunout,*) trim(modname),&
+           ': Cannot set default tracer names!'
+           write(lunout,*) trim(modname),' Make a traceur.def file!!!'
+           CALL abort_gcm('infotrac_init','Need a traceur.def file!',1)
+         endif ! of if (nqtrue==4)
        END IF
        
-       WRITE(lunout,*) 'Valeur de traceur.def :'
-       WRITE(lunout,*) 'nombre de traceurs ',nqtrue
+       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)
@@ -234,6 +243,6 @@
        END IF
        
-       WRITE(lunout,*) 'Valeur de traceur.def :'
-       WRITE(lunout,*) 'nombre de traceurs ',nqtrue
+       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)
@@ -258,5 +267,5 @@
           new_iq=new_iq+10 ! 9 tracers added
        ELSE
-          WRITE(lunout,*) 'This choice of advection schema is not available',iq,hadv(iq),vadv(iq)
+          WRITE(lunout,*) trim(modname),': This choice of advection schema is not available',iq,hadv(iq),vadv(iq)
           CALL abort_gcm('infotrac_init','Bad choice of advection schema - 1',1)
        END IF
@@ -268,8 +277,8 @@
        nqtot = new_iq
 
-       WRITE(lunout,*) 'The choice of advection schema for one or more tracers'
+       WRITE(lunout,*) trim(modname),': The choice of advection schema for one or more tracers'
        WRITE(lunout,*) 'makes it necessary to add tracers'
-       WRITE(lunout,*) nqtrue,' is the number of true tracers'
-       WRITE(lunout,*) nqtot, ' is the total number of tracers needed'
+       WRITE(lunout,*) trim(modname)//': ',nqtrue,' is the number of true tracers'
+       WRITE(lunout,*) trim(modname)//': ',nqtot, ' is the total number of tracers needed'
 
     ELSE
@@ -299,5 +308,6 @@
           iadv(new_iq)=11
        ELSE
-          WRITE(lunout,*)'This choice of advection schema is not available',iq,hadv(iq),vadv(iq)
+          WRITE(lunout,*)trim(modname),': This choice of advection schema is not available',iq,hadv(iq),vadv(iq)
+
           CALL abort_gcm('infotrac_init','Bad choice of advection schema - 2',1)
        END IF
@@ -317,6 +327,6 @@
              new_iq=new_iq+1
              iadv(new_iq)=-20
-             ttext(new_iq)=str2(1:lnblnk(str2))//txts(jq)
-             tname(new_iq)=str1(1:lnblnk(str1))//txts(jq)
+             ttext(new_iq)=trim(str2)//txts(jq)
+             tname(new_iq)=trim(str1)//txts(jq)
           END DO
        ELSE IF (iadv(new_iq)==30) THEN
@@ -324,6 +334,6 @@
              new_iq=new_iq+1
              iadv(new_iq)=-30
-             ttext(new_iq)=str2(1:lnblnk(str2))//txtp(jq)
-             tname(new_iq)=str1(1:lnblnk(str1))//txtp(jq)
+             ttext(new_iq)=trim(str2)//txtp(jq)
+             tname(new_iq)=trim(str1)//txtp(jq)
           END DO
        END IF
@@ -344,8 +354,9 @@
 
 
-    WRITE(lunout,*) 'Information stored in infotrac :'
-    WRITE(lunout,*) 'iadv  niadv tname  ttext :'
+    WRITE(lunout,*) trim(modname),': Information stored in infotrac :'
+    WRITE(lunout,*) trim(modname),': iadv  niadv tname  ttext :'
     DO iq=1,nqtot
-       WRITE(lunout,*) iadv(iq),niadv(iq), tname(iq), ttext(iq)
+       WRITE(lunout,*) iadv(iq),niadv(iq),&
+       ' ',trim(tname(iq)),' ',trim(ttext(iq))
     END DO
 
@@ -356,8 +367,8 @@
     DO iq=1,nqtot
        IF (iadv(iq)/=10 .AND. iadv(iq)/=14 .AND. iadv(iq)/=0) THEN
-          WRITE(lunout,*)'STOP : The option iadv=',iadv(iq),' is not tested in this version of LMDZ'
+          WRITE(lunout,*)trim(modname),' STOP : The option iadv=',iadv(iq),' is not tested in this version of LMDZ'
           CALL abort_gcm('infotrac_init','In this version only iadv=10 and iadv=14 is tested!',1)
        ELSE IF (iadv(iq)==14 .AND. iq/=1) THEN
-          WRITE(lunout,*)'STOP : The option iadv=',iadv(iq),' is not tested in this version of LMDZ'
+          WRITE(lunout,*)trim(modname),'STOP : The option iadv=',iadv(iq),' is not tested in this version of LMDZ'
           CALL abort_gcm('infotrac_init','In this version iadv=14 is only permitted for water vapour!',1)
        END IF
Index: /trunk/libf/dyn3d/iniacademic.F
===================================================================
--- /trunk/libf/dyn3d/iniacademic.F	(revision 6)
+++ /trunk/libf/dyn3d/iniacademic.F	(revision 7)
@@ -1,4 +1,4 @@
 !
-! $Id: iniacademic.F 1437 2010-09-30 08:29:10Z emillour $
+! $Id: iniacademic.F 1446 2010-10-22 09:27:25Z emillour $
 !
 c
@@ -8,5 +8,5 @@
       USE filtreg_mod
       USE infotrac, ONLY : nqtot
-      USE control_mod
+      USE control_mod, ONLY: day_step,planet_type
 #ifdef CPP_IOIPSL
       USE IOIPSL
@@ -95,5 +95,4 @@
 ! 1. Initializations for Earth-like case
 ! --------------------------------------
-      if (planet_type=="earth") then
 c
         ! initialize planet radius, rotation rate,...
@@ -128,7 +127,5 @@
           if (.not.read_start) then
             phis(:)=0.
-            q(:,:,1)=1.e-10
-            q(:,:,2)=1.e-15
-            q(:,:,3:nqtot)=0.
+            q(:,:,:)=0
             CALL sw_case_williamson91_6(vcov,ucov,teta,masse,ps)
           endif
@@ -138,4 +135,6 @@
           ! initializations for the academic case
           
+!         if (planet_type=="earth") then
+
           ! 1. local parameters
           ! by convention, winter is in the southern hemisphere
@@ -219,4 +218,11 @@
           enddo
 
+
+!         else
+!          write(lunout,*)"iniacademic: planet types other than earth",
+!     &                   " not implemented (yet)."
+!          stop
+!         endif ! of if (planet_type=="earth")
+
           ! 3. Initialize fields (if necessary)
           IF (.NOT. read_start) THEN
@@ -245,9 +251,14 @@
             
             ! bulk initialization of tracers
-            do i=1,nqtot
-              if (i.eq.1) q(:,:,i)=1.e-10
-              if (i.eq.2) q(:,:,i)=1.e-15
-              if (i.gt.2) q(:,:,i)=0.
-            enddo
+            if (planet_type=="earth") then
+              ! Earth: first two tracers will be water
+              do i=1,nqtot
+                if (i.eq.1) q(:,:,i)=1.e-10
+                if (i.eq.2) q(:,:,i)=1.e-15
+                if (i.gt.2) q(:,:,i)=0.
+              enddo
+            else
+              q(:,:,:)=0
+            endif ! of if (planet_type=="earth")
 
             ! add random perturbation to temperature
@@ -261,4 +272,5 @@
             enddo
 
+            ! maintain periodicity in longitude
             do l=1,llm
               do ij=1,ip1jmp1,iip1
@@ -267,24 +279,7 @@
             enddo
 
-c     PRINT *,' Appel test_period avec tetarappel '
-c     CALL  test_period ( ucov,vcov,tetarappel,q,p,phis )
-c     PRINT *,' Appel test_period avec teta '
-c     CALL  test_period ( ucov,vcov,teta,q,p,phis )
-
-           ! initialize a traceur on one column
-!          j=jjp1*3/4
-!          i=iip1/2
-!          ij=(j-1)*iip1+i
-!          q(ij,:,3)=1.
-
           ENDIF ! of IF (.NOT. read_start)
         endif ! of if (iflag_phys.eq.2)
         
-      else
-        write(lunout,*)"iniacademic: planet types other than earth",
-     &                 " not implemented (yet)."
-        stop
-      endif ! of if (planet_type=="earth")
-      return
       END
 c-----------------------------------------------------------------------
Index: /trunk/libf/dyn3d/integrd.F
===================================================================
--- /trunk/libf/dyn3d/integrd.F	(revision 6)
+++ /trunk/libf/dyn3d/integrd.F	(revision 7)
@@ -1,4 +1,4 @@
 !
-! $Id: integrd.F 1403 2010-07-01 09:02:53Z fairhead $
+! $Id: integrd.F 1446 2010-10-22 09:27:25Z emillour $
 !
       SUBROUTINE integrd
@@ -6,5 +6,5 @@
      $     dv,du,dteta,dq,dp,vcov,ucov,teta,q,ps,masse,phis,finvmaold )
 
-      USE control_mod
+      use control_mod, only : planet_type
 
       IMPLICIT NONE
@@ -81,8 +81,8 @@
       CALL SCOPY(ip1jmp1*llm, masse, 1, massescr, 1)
 
-      DO 2 ij = 1,ip1jmp1
+      DO ij = 1,ip1jmp1
        pscr (ij)    = ps(ij)
        ps (ij)      = psm1(ij) + dt * dp(ij)
-   2  CONTINUE
+      ENDDO
 c
       DO ij = 1,ip1jmp1
@@ -115,45 +115,45 @@
 c    ............   integration  de  ucov, vcov,  h     ..............
 
-      DO 10 l = 1,llm
-
-      DO 4 ij = iip2,ip1jm
-      uscr( ij )   =  ucov( ij,l )
-      ucov( ij,l ) = ucovm1( ij,l ) + dt * du( ij,l )
-   4  CONTINUE
-
-      DO 5 ij = 1,ip1jm
-      vscr( ij )   =  vcov( ij,l )
-      vcov( ij,l ) = vcovm1( ij,l ) + dt * dv( ij,l )
-   5  CONTINUE
-
-      DO 6 ij = 1,ip1jmp1
-      hscr( ij )    =  teta(ij,l)
-      teta ( ij,l ) = tetam1(ij,l) *  massem1(ij,l) / masse(ij,l) 
-     $                + dt * dteta(ij,l) / masse(ij,l)
-   6  CONTINUE
+      DO l = 1,llm
+
+       DO ij = iip2,ip1jm
+        uscr( ij )   =  ucov( ij,l )
+        ucov( ij,l ) = ucovm1( ij,l ) + dt * du( ij,l )
+       ENDDO
+
+       DO ij = 1,ip1jm
+        vscr( ij )   =  vcov( ij,l )
+        vcov( ij,l ) = vcovm1( ij,l ) + dt * dv( ij,l )
+       ENDDO
+
+       DO ij = 1,ip1jmp1
+        hscr( ij )    =  teta(ij,l)
+        teta ( ij,l ) = tetam1(ij,l) *  massem1(ij,l) / masse(ij,l) 
+     &                + dt * dteta(ij,l) / masse(ij,l)
+       ENDDO
 
 c   ....  Calcul de la valeur moyenne, unique  aux poles pour  teta    ......
 c
 c
-      DO  ij   = 1, iim
+       DO  ij   = 1, iim
         tppn(ij) = aire(   ij   ) * teta(  ij    ,l)
         tpps(ij) = aire(ij+ip1jm) * teta(ij+ip1jm,l)
-      ENDDO
+       ENDDO
         tpn      = SSUM(iim,tppn,1)/apoln
         tps      = SSUM(iim,tpps,1)/apols
 
-      DO ij   = 1, iip1
+       DO ij   = 1, iip1
         teta(   ij   ,l)  = tpn
         teta(ij+ip1jm,l)  = tps
-      ENDDO
-c
-
-      IF(leapf)  THEN
+       ENDDO
+c
+
+       IF(leapf)  THEN
          CALL SCOPY ( ip1jmp1, uscr(1), 1, ucovm1(1, l), 1 )
          CALL SCOPY (   ip1jm, vscr(1), 1, vcovm1(1, l), 1 )
          CALL SCOPY ( ip1jmp1, hscr(1), 1, tetam1(1, l), 1 )
-      END IF
-
-  10  CONTINUE
+       END IF
+
+      ENDDO ! of DO l = 1,llm
 
 
@@ -185,14 +185,13 @@
 c$$$      ENDIF
 
-	 if (planet_type.eq."earth") then
+      if (planet_type.eq."earth") then
 ! Earth-specific treatment of first 2 tracers (water)
-          DO l = 1, llm
-           DO ij = 1, ip1jmp1
+        DO l = 1, llm
+          DO ij = 1, ip1jmp1
             deltap(ij,l) =  p(ij,l) - p(ij,l+1) 
-           ENDDO
           ENDDO
-
-          CALL qminimum( q, nq, deltap )
-	 endif ! of if (planet_type.eq."earth")
+        ENDDO
+
+        CALL qminimum( q, nq, deltap )
 
 c
@@ -200,5 +199,5 @@
 c
 
-      DO iq = 1, nq
+       DO iq = 1, nq
         DO l = 1, llm
 
@@ -216,13 +215,13 @@
 
         ENDDO
-      ENDDO
-
-
-         CALL  SCOPY( ijp1llm , finvmasse, 1, finvmaold, 1 )
+       ENDDO
+
+
+      CALL  SCOPY( ijp1llm , finvmasse, 1, finvmaold, 1 )
+
+      endif ! of if (planet_type.eq."earth")
 c
 c
 c     .....   FIN  de l'integration  de   q    .......
-
-15    continue
 
 c    .................................................................
Index: /trunk/libf/dyn3d/leapfrog.F
===================================================================
--- /trunk/libf/dyn3d/leapfrog.F	(revision 6)
+++ /trunk/libf/dyn3d/leapfrog.F	(revision 7)
@@ -1,4 +1,4 @@
 !
-! $Id: leapfrog.F 1437 2010-09-30 08:29:10Z emillour $
+! $Id: leapfrog.F 1446 2010-10-22 09:27:25Z emillour $
 !
 c
@@ -225,5 +225,5 @@
 c   --------------------------------------------------
 
-      dq=0.
+      dq(:,:,:)=0.
       CALL pression ( ip1jmp1, ap, bp, ps, p       )
       CALL exner_hyb( ip1jmp1, ps, p,alpha,beta, pks, pk, pkf )
@@ -269,7 +269,4 @@
       CALL SCOPY   ( ijp1llm,   masse, 1, finvmaold,     1 )
       CALL filtreg ( finvmaold ,jjp1, llm, -2,2, .TRUE., 1 )
-
-! Ehouarn: what is this for? zqmin & zqmax are not used anyway ...
-!      call minmax(ijp1llm,q(:,:,3),zqmin,zqmax)
 
    2  CONTINUE
@@ -470,4 +467,9 @@
         ! Sponge layer (if any)
         IF (ok_strato) THEN
+          dutop(:,:)=0.
+          dvtop(:,:)=0.
+          dtetatop(:,:)=0.
+          dqtop(:,:,:)=0.
+          dptop(:)=0.
           CALL top_bound(vcov,ucov,teta,masse,dutop,dvtop,dtetatop)
           CALL addfi( dtvr, leapf, forward   ,
Index: /trunk/libf/dyn3d/limit_netcdf.F90
===================================================================
--- /trunk/libf/dyn3d/limit_netcdf.F90	(revision 6)
+++ /trunk/libf/dyn3d/limit_netcdf.F90	(revision 7)
@@ -1,4 +1,4 @@
 !
-! $Id: limit_netcdf.F90 1425 2010-09-02 13:45:23Z lguez $
+! $Id: limit_netcdf.F90 1441 2010-10-13 13:06:56Z emillour $
 !-------------------------------------------------------------------------------
 !
@@ -97,5 +97,5 @@
   kappa = 0.2857143
   cpp   = 1004.70885
-  dtvr  = daysec/FLOAT(day_step)
+  dtvr  = daysec/REAL(day_step)
   CALL inigeom
 
@@ -265,6 +265,4 @@
 
   DEALLOCATE(pctsrf_t,phy_sst,phy_bil,phy_alb,phy_rug)
-#endif
-! of #ifdef CPP_EARTH
 
 
@@ -592,7 +590,7 @@
 
 !--- Mid-months times
-  mid_months(1)=0.5*FLOAT(mnth(1))
+  mid_months(1)=0.5*REAL(mnth(1))
   DO k=2,nm
-    mid_months(k)=mid_months(k-1)+0.5*FLOAT(mnth(k-1)+mnth(k))
+    mid_months(k)=mid_months(k-1)+0.5*REAL(mnth(k-1)+mnth(k))
   END DO
 
@@ -626,4 +624,6 @@
 !-------------------------------------------------------------------------------
 
+#endif
+! of #ifdef CPP_EARTH
 
 END SUBROUTINE limit_netcdf
Index: /trunk/libf/dyn3dpar/addfi_p.F
===================================================================
--- /trunk/libf/dyn3dpar/addfi_p.F	(revision 6)
+++ /trunk/libf/dyn3dpar/addfi_p.F	(revision 7)
@@ -1,4 +1,4 @@
 !
-! $Header$
+! $Id: addfi_p.F 1446 2010-10-22 09:27:25Z emillour $
 !
       SUBROUTINE addfi_p(pdt, leapf, forward,
@@ -7,4 +7,5 @@
       USE parallel
       USE infotrac, ONLY : nqtot
+      USE control_mod, ONLY : planet_type
       IMPLICIT NONE
 c
@@ -154,5 +155,7 @@
 c$OMP END MASTER
  
-      DO iq = 1, 2
+      if (planet_type=="earth") then
+      ! earth case, special treatment for first 2 tracers (water)
+       DO iq = 1, 2
 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
          DO k = 1,llm
@@ -163,7 +166,7 @@
          ENDDO
 c$OMP END DO NOWAIT
-      ENDDO
-
-      DO iq = 3, nqtot
+       ENDDO
+
+       DO iq = 3, nqtot
 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
          DO k = 1,llm
@@ -174,5 +177,18 @@
          ENDDO
 c$OMP END DO NOWAIT
-      ENDDO
+       ENDDO
+      else
+      ! general case, treat all tracers equally)
+       DO iq = 1, nqtot
+c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
+         DO k = 1,llm
+            DO j = ijb,ije
+               pq(j,k,iq)= pq(j,k,iq) + pdqfi(j,k,iq) * pdt
+               pq(j,k,iq)= AMAX1( pq(j,k,iq), qtestt )
+            ENDDO
+         ENDDO
+c$OMP END DO NOWAIT
+       ENDDO
+      endif ! of if (planet_type=="earth")
 
 c$OMP MASTER
Index: /trunk/libf/dyn3dpar/advtrac_p.F
===================================================================
--- /trunk/libf/dyn3dpar/advtrac_p.F	(revision 6)
+++ /trunk/libf/dyn3dpar/advtrac_p.F	(revision 7)
@@ -1,4 +1,4 @@
 !
-! $Id: advtrac_p.F 1403 2010-07-01 09:02:53Z fairhead $
+! $Id: advtrac_p.F 1446 2010-10-22 09:27:25Z emillour $
 !
 c
@@ -132,5 +132,5 @@
 ccc         CALL filtreg ( massem ,jjp1, llm,-2, 2, .TRUE., 1 )
 c
-      ENDIF
+      ENDIF ! of IF(iadvtr.EQ.0)
 
       iadvtr   = iadvtr+1
@@ -266,5 +266,5 @@
 cym      ----> Revérifier lors de la parallélisation des autres schemas
    
-cym          call massbar_p(massem,massebx,masseby)          
+cym          call massbar_p(massem,massebx,masseby)  
 
           call vlspltgen_p( q,iadv, 2., massem, wg ,
@@ -452,16 +452,18 @@
 c$OMP BARRIER
 
-      ijb=ij_begin
-      ije=ij_end
+      if (planet_type=="earth") then
+
+        ijb=ij_begin
+        ije=ij_end
 
 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)      
-       DO l = 1, llm
+        DO l = 1, llm
          DO ij = ijb, ije
            finmasse(ij,l) =  p(ij,l) - p(ij,l+1) 
          ENDDO
-       ENDDO
+        ENDDO
 c$OMP END DO
 
-       CALL qminimum_p( q, 2, finmasse )
+        CALL qminimum_p( q, 2, finmasse )
 
 c------------------------------------------------------------------
@@ -496,4 +498,5 @@
 c$OMP BARRIER	
           iadvtr=0
+      endif ! of if (planet_type=="earth")
        ENDIF ! if iadvtr.EQ.iapp_tracvl
 
Index: /trunk/libf/dyn3dpar/caladvtrac_p.F
===================================================================
--- /trunk/libf/dyn3dpar/caladvtrac_p.F	(revision 6)
+++ /trunk/libf/dyn3dpar/caladvtrac_p.F	(revision 7)
@@ -1,4 +1,4 @@
 !
-! $Id: caladvtrac_p.F 1403 2010-07-01 09:02:53Z fairhead $
+! $Id: caladvtrac_p.F 1446 2010-10-22 09:27:25Z emillour $
 !
 c
@@ -8,6 +8,6 @@
      *                   flxw, pk, iapptrac)
       USE parallel
-      USE infotrac
-      USE control_mod
+      USE infotrac, ONLY : nqtot
+      USE control_mod, ONLY : iapp_tracvl,planet_type
 c
       IMPLICIT NONE
@@ -30,5 +30,6 @@
 c   ----------
       REAL pbaru( ip1jmp1,llm ),pbarv( ip1jm,llm),masse(ip1jmp1,llm)
-      REAL p( ip1jmp1,llmp1),q( ip1jmp1,llm,nqtot),dq( ip1jmp1,llm,2 )
+      REAL p( ip1jmp1,llmp1),q( ip1jmp1,llm,nqtot)
+      real :: dq( ip1jmp1,llm,nqtot)
       REAL teta( ip1jmp1,llm),pk( ip1jmp1,llm)
       REAL               :: flxw(ip1jmp1,llm)
Index: /trunk/libf/dyn3dpar/conf_gcm.F
===================================================================
--- /trunk/libf/dyn3dpar/conf_gcm.F	(revision 6)
+++ /trunk/libf/dyn3dpar/conf_gcm.F	(revision 7)
@@ -1,4 +1,4 @@
 !
-! $Id: conf_gcm.F 1403 2010-07-01 09:02:53Z fairhead $
+! $Id: conf_gcm.F 1438 2010-10-08 10:19:34Z jghattas $
 !
 c
@@ -578,5 +578,13 @@
        offline = .FALSE.
        CALL getin('offline',offline)
-
+       IF (offline .AND. adjust) THEN
+          WRITE(lunout,*) 
+     &         'WARNING : option offline does not work with adjust=y :'
+          WRITE(lunout,*) 'the files defstoke.nc, fluxstoke.nc ', 
+     &         'and fluxstokev.nc will not be created'
+          WRITE(lunout,*) 
+     &         'only the file phystoke.nc will still be created ' 
+       END IF
+       
 !Config  Key  = config_inca
 !Config  Desc = Choix de configuration de INCA
@@ -768,4 +776,12 @@
        offline = .FALSE.
        CALL getin('offline',offline)
+       IF (offline .AND. adjust) THEN
+          WRITE(lunout,*) 
+     &         'WARNING : option offline does not work with adjust=y :'
+          WRITE(lunout,*) 'the files defstoke.nc, fluxstoke.nc ', 
+     &         'and fluxstokev.nc will not be created'
+          WRITE(lunout,*) 
+     &         'only the file phystoke.nc will still be created ' 
+       END IF
 
 !Config  Key  = config_inca
Index: /trunk/libf/dyn3dpar/ener.h
===================================================================
--- /trunk/libf/dyn3dpar/ener.h	(revision 6)
+++ /trunk/libf/dyn3dpar/ener.h	(revision 7)
@@ -1,14 +1,18 @@
 !
-! $Header$
+! $Id: ener.h 1447 2010-10-22 16:18:27Z jghattas $
 !
-c-----------------------------------------------------------------------
-c INCLUDE 'ener.h'
+!  ATTENTION!!!!: ce fichier include est compatible format fixe/format libre
+!                 veillez à n'utiliser que des ! pour les commentaires
+!                 et à bien positionner les & des lignes de continuation 
+!                 (les placer en colonne 6 et en colonne 73)
+!
+! INCLUDE 'ener.h'
 
-      COMMON/ener/ang0,etot0,ptot0,ztot0,stot0,
-     *            ang,etot,ptot,ztot,stot,rmsdpdt ,
-     *            rmsv,gtot(llmm1)
+      COMMON/ener/ang0,etot0,ptot0,ztot0,stot0,                         &
+     &            ang,etot,ptot,ztot,stot,rmsdpdt ,                     &
+     &            rmsv,gtot(llmm1)
 
-      REAL ang0,etot0,ptot0,ztot0,stot0,
-     s     ang,etot,ptot,ztot,stot,rmsdpdt,rmsv,gtot
+      REAL ang0,etot0,ptot0,ztot0,stot0,                                &
+     &     ang,etot,ptot,ztot,stot,rmsdpdt,rmsv,gtot
 
-c-----------------------------------------------------------------------
+!-----------------------------------------------------------------------
Index: /trunk/libf/dyn3dpar/gcm.F
===================================================================
--- /trunk/libf/dyn3dpar/gcm.F	(revision 6)
+++ /trunk/libf/dyn3dpar/gcm.F	(revision 7)
@@ -1,4 +1,4 @@
 !
-! $Id: gcm.F 1403 2010-07-01 09:02:53Z fairhead $
+! $Id: gcm.F 1446 2010-10-22 09:27:25Z emillour $
 !
 c
@@ -276,18 +276,10 @@
         endif
 
-        if (planet_type.eq."earth") then
-#ifdef CPP_EARTH
+!        if (planet_type.eq."earth") then
 ! Load an Earth-format start file
          CALL dynetat0("start.nc",vcov,ucov,
      &              teta,q,masse,ps,phis, time_0)
-#else
-        ! SW model also has Earth-format start files
-        ! (but can be used without the CPP_EARTH directive)
-          if (iflag_phys.eq.0) then
-            CALL dynetat0("start.nc",vcov,ucov,
-     &              teta,q,masse,ps,phis, time_0)
-          endif
-#endif
-        endif ! of if (planet_type.eq."earth")
+!        endif ! of if (planet_type.eq."earth")
+
 c       write(73,*) 'ucov',ucov
 c       write(74,*) 'vcov',vcov
@@ -494,7 +486,8 @@
 #endif
 
-      if (planet_type.eq."earth") then
+!      if (planet_type.eq."earth") then
+! Write an Earth-format restart file
         CALL dynredem0_p("restart.nc", day_end, phis)
-      endif
+!      endif
 
       ecripar = .TRUE.
Index: /trunk/libf/dyn3dpar/grid_noro.F
===================================================================
--- /trunk/libf/dyn3dpar/grid_noro.F	(revision 6)
+++ /trunk/libf/dyn3dpar/grid_noro.F	(revision 7)
@@ -1,4 +1,4 @@
 !
-! $Id: grid_noro.F 1403 2010-07-01 09:02:53Z fairhead $
+! $Id: grid_noro.F 1442 2010-10-18 08:31:31Z jghattas $
 !
 c
@@ -458,10 +458,7 @@
 C MAKE A MOVING AVERAGE OVER 9 GRIDPOINTS OF THE X FIELDS
 
-      PARAMETER (ISMo=300,JSMo=200)
-      REAL X(IMAR,JMAR),XF(ISMo,JSMo)
+      REAL X(IMAR,JMAR),XF(IMAR,JMAR)
       real WEIGHTpb(-1:1,-1:1)
 
-      if(imar.gt.ismo) stop'surdimensionner ismo dans mva9 (grid_noro)'
-      if(jmar.gt.jsmo) stop'surdimensionner jsmo dans mva9 (grid_noro)'
       
       SUM=0.
Index: /trunk/libf/dyn3dpar/infotrac.F90
===================================================================
--- /trunk/libf/dyn3dpar/infotrac.F90	(revision 6)
+++ /trunk/libf/dyn3dpar/infotrac.F90	(revision 7)
@@ -61,10 +61,10 @@
     CHARACTER(len=1), DIMENSION(3)  :: txts
     CHARACTER(len=2), DIMENSION(9)  :: txtp
-    CHARACTER(len=13)               :: str1,str2
+    CHARACTER(len=23)               :: str1,str2
   
     INTEGER :: nqtrue  ! number of tracers read from tracer.def, without higer order of moment
     INTEGER :: iq, new_iq, iiq, jq, ierr
-    INTEGER, EXTERNAL :: lnblnk
- 
+
+    character(len=*),parameter :: modname="infotrac_init"
 !-----------------------------------------------------------------------
 ! Initialization :
@@ -100,13 +100,19 @@
        OPEN(90,file='traceur.def',form='formatted',status='old', iostat=ierr)
        IF(ierr.EQ.0) THEN
-          WRITE(lunout,*) 'Open traceur.def : ok'
+          WRITE(lunout,*) trim(modname),': Open traceur.def : ok'
           READ(90,*) nqtrue
        ELSE 
-          WRITE(lunout,*) 'Problem in opening traceur.def'
-          WRITE(lunout,*) 'ATTENTION using defaut values'
+          WRITE(lunout,*) trim(modname),': Problem in opening traceur.def'
+          WRITE(lunout,*) trim(modname),': WARNING using defaut values'
           nqtrue=4 ! Defaut value
        END IF
-       ! Attention! Only for planet_type=='earth'
-       nbtr=nqtrue-2
+       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
        ! nbtr has been read from INCA by init_cont_lmdz() in gcm.F 
@@ -114,6 +120,6 @@
     END IF
 
-    IF (nqtrue < 2) THEN
-       WRITE(lunout,*) 'nqtrue=',nqtrue, ' is not allowded. 2 tracers is the minimum'
+    IF ((planet_type=="earth").and.(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
@@ -159,5 +165,6 @@
           END DO
           CLOSE(90)  
-       ELSE ! Without tracer.def
+       ELSE ! Without tracer.def, set default values (for Earth!)
+         if ((nqtrue==4).and.(planet_type=="earth")) then
           hadv(1) = 14
           vadv(1) = 14
@@ -172,8 +179,15 @@
           vadv(4) = 10
           tnom_0(4) = 'PB'
+         else
+           ! Error message, we need a traceur.def file
+           write(lunout,*) trim(modname),&
+           ': Cannot set default tracer names!'
+           write(lunout,*) trim(modname),' Make a traceur.def file!!!'
+           CALL abort_gcm('infotrac_init','Need a traceur.def file!',1)
+         endif ! of if (nqtrue==4)
        END IF
        
-       WRITE(lunout,*) 'Valeur de traceur.def :'
-       WRITE(lunout,*) 'nombre de traceurs ',nqtrue
+       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)
@@ -217,5 +231,5 @@
           new_iq=new_iq+10 ! 9 tracers added
        ELSE
-          WRITE(lunout,*) 'This choice of advection schema is not available'
+          WRITE(lunout,*) trim(modname),': This choice of advection schema is not available',iq,hadv(iq),vadv(iq)
           CALL abort_gcm('infotrac_init','Bad choice of advection schema - 1',1)
        END IF
@@ -227,8 +241,8 @@
        nqtot = new_iq
 
-       WRITE(lunout,*) 'The choice of advection schema for one or more tracers'
+       WRITE(lunout,*) trim(modname),': The choice of advection schema for one or more tracers'
        WRITE(lunout,*) 'makes it necessary to add tracers'
-       WRITE(lunout,*) nqtrue,' is the number of true tracers'
-       WRITE(lunout,*) nqtot, ' is the total number of tracers needed'
+       WRITE(lunout,*) trim(modname)//': ',nqtrue,' is the number of true tracers'
+       WRITE(lunout,*) trim(modname)//': ',nqtot, ' is the total number of tracers needed'
 
     ELSE
@@ -258,5 +272,6 @@
           iadv(new_iq)=11
        ELSE
-          WRITE(lunout,*)'This choice of advection schema is not available'
+          WRITE(lunout,*)trim(modname),': This choice of advection schema is not available',iq,hadv(iq),vadv(iq)
+
           CALL abort_gcm('infotrac_init','Bad choice of advection schema - 2',1)
        END IF
@@ -265,7 +280,7 @@
        tname(new_iq)= tnom_0(iq)
        IF (iadv(new_iq)==0) THEN
-          ttext(new_iq)=str1(1:lnblnk(str1))
+          ttext(new_iq)=trim(str1)
        ELSE
-          ttext(new_iq)=str1(1:lnblnk(str1))//descrq(iadv(new_iq))
+          ttext(new_iq)=trim(tnom_0(iq))//descrq(iadv(new_iq))
        END IF
 
@@ -276,6 +291,6 @@
              new_iq=new_iq+1
              iadv(new_iq)=-20
-             ttext(new_iq)=str2(1:lnblnk(str2))//txts(jq)
-             tname(new_iq)=str1(1:lnblnk(str1))//txts(jq)
+             ttext(new_iq)=trim(str2)//txts(jq)
+             tname(new_iq)=trim(str1)//txts(jq)
           END DO
        ELSE IF (iadv(new_iq)==30) THEN
@@ -283,6 +298,6 @@
              new_iq=new_iq+1
              iadv(new_iq)=-30
-             ttext(new_iq)=str2(1:lnblnk(str2))//txtp(jq)
-             tname(new_iq)=str1(1:lnblnk(str1))//txtp(jq)
+             ttext(new_iq)=trim(str2)//txtp(jq)
+             tname(new_iq)=trim(str1)//txtp(jq)
           END DO
        END IF
@@ -303,8 +318,9 @@
 
 
-    WRITE(lunout,*) 'Information stored in infotrac :'
-    WRITE(lunout,*) 'iadv  niadv tname  ttext :'
+    WRITE(lunout,*) trim(modname),': Information stored in infotrac :'
+    WRITE(lunout,*) trim(modname),': iadv  niadv tname  ttext :'
     DO iq=1,nqtot
-       WRITE(lunout,*) iadv(iq),niadv(iq), tname(iq), ttext(iq)
+       WRITE(lunout,*) iadv(iq),niadv(iq),&
+       ' ',trim(tname(iq)),' ',trim(ttext(iq))
     END DO
 
@@ -315,8 +331,8 @@
     DO iq=1,nqtot
        IF (iadv(iq)/=10 .AND. iadv(iq)/=14 .AND. iadv(iq)/=0) THEN
-          WRITE(lunout,*)'STOP : The option iadv=',iadv(iq),' is not tested in this version of LMDZ'
+          WRITE(lunout,*)trim(modname),' STOP : The option iadv=',iadv(iq),' is not tested in this version of LMDZ'
           CALL abort_gcm('infotrac_init','In this version only iadv=10 and iadv=14 is tested!',1)
        ELSE IF (iadv(iq)==14 .AND. iq/=1) THEN
-          WRITE(lunout,*)'STOP : The option iadv=',iadv(iq),' is not tested in this version of LMDZ'
+          WRITE(lunout,*)trim(modname),'STOP : The option iadv=',iadv(iq),' is not tested in this version of LMDZ'
           CALL abort_gcm('infotrac_init','In this version iadv=14 is only permitted for water vapour!',1)
        END IF
Index: /trunk/libf/dyn3dpar/iniacademic.F
===================================================================
--- /trunk/libf/dyn3dpar/iniacademic.F	(revision 6)
+++ /trunk/libf/dyn3dpar/iniacademic.F	(revision 7)
@@ -1,4 +1,4 @@
 !
-! $Id: iniacademic.F 1437 2010-09-30 08:29:10Z emillour $
+! $Id: iniacademic.F 1446 2010-10-22 09:27:25Z emillour $
 !
 c
@@ -8,5 +8,5 @@
       USE filtreg_mod
       USE infotrac, ONLY : nqtot
-      USE control_mod
+      USE control_mod, ONLY: day_step,planet_type
 #ifdef CPP_IOIPSL
       USE IOIPSL
@@ -95,5 +95,4 @@
 ! 1. Initializations for Earth-like case
 ! --------------------------------------
-      if (planet_type=="earth") then
 c
         ! initialize planet radius, rotation rate,...
@@ -128,7 +127,5 @@
           if (.not.read_start) then
             phis(:)=0.
-            q(:,:,1)=1.e-10
-            q(:,:,2)=1.e-15
-            q(:,:,3:nqtot)=0.
+            q(:,:,:)=0
             CALL sw_case_williamson91_6(vcov,ucov,teta,masse,ps)
           endif
@@ -138,4 +135,6 @@
           ! initializations for the academic case
           
+!         if (planet_type=="earth") then
+
           ! 1. local parameters
           ! by convention, winter is in the southern hemisphere
@@ -219,4 +218,11 @@
           enddo
 
+
+!         else
+!          write(lunout,*)"iniacademic: planet types other than earth",
+!     &                   " not implemented (yet)."
+!          stop
+!         endif ! of if (planet_type=="earth")
+
           ! 3. Initialize fields (if necessary)
           IF (.NOT. read_start) THEN
@@ -245,9 +251,14 @@
             
             ! bulk initialization of tracers
-            do i=1,nqtot
-              if (i.eq.1) q(:,:,i)=1.e-10
-              if (i.eq.2) q(:,:,i)=1.e-15
-              if (i.gt.2) q(:,:,i)=0.
-            enddo
+            if (planet_type=="earth") then
+              ! Earth: first two tracers will be water
+              do i=1,nqtot
+                if (i.eq.1) q(:,:,i)=1.e-10
+                if (i.eq.2) q(:,:,i)=1.e-15
+                if (i.gt.2) q(:,:,i)=0.
+              enddo
+            else
+              q(:,:,:)=0
+            endif ! of if (planet_type=="earth")
 
             ! add random perturbation to temperature
@@ -261,4 +272,5 @@
             enddo
 
+            ! maintain periodicity in longitude
             do l=1,llm
               do ij=1,ip1jmp1,iip1
@@ -267,24 +279,7 @@
             enddo
 
-c     PRINT *,' Appel test_period avec tetarappel '
-c     CALL  test_period ( ucov,vcov,tetarappel,q,p,phis )
-c     PRINT *,' Appel test_period avec teta '
-c     CALL  test_period ( ucov,vcov,teta,q,p,phis )
-
-           ! initialize a traceur on one column
-!          j=jjp1*3/4
-!          i=iip1/2
-!          ij=(j-1)*iip1+i
-!          q(ij,:,3)=1.
-
           ENDIF ! of IF (.NOT. read_start)
         endif ! of if (iflag_phys.eq.2)
         
-      else
-        write(lunout,*)"iniacademic: planet types other than earth",
-     &                 " not implemented (yet)."
-        stop
-      endif ! of if (planet_type=="earth")
-      return
       END
 c-----------------------------------------------------------------------
Index: /trunk/libf/dyn3dpar/initfluxsto_p.F
===================================================================
--- /trunk/libf/dyn3dpar/initfluxsto_p.F	(revision 6)
+++ /trunk/libf/dyn3dpar/initfluxsto_p.F	(revision 7)
@@ -1,4 +1,4 @@
 !
-! $Id: initfluxsto_p.F 1279 2009-12-10 09:02:56Z fairhead $
+! $Id: initfluxsto_p.F 1438 2010-10-08 10:19:34Z jghattas $
 !
       subroutine initfluxsto_p
@@ -203,9 +203,10 @@
      .              llm, nivsigs, zvertiid)
 c pour le fichier def
-      nivd(1) = 1
-      call histvert(filedid, 'sig_s', 'Niveaux sigma',
-     .  'sigma_level',
-     .              1, nivd, dvertiid)
-
+      if (mpi_rank==0) then
+         nivd(1) = 1
+         call histvert(filedid, 'sig_s', 'Niveaux sigma',
+     .        'sigma_level',
+     .        1, nivd, dvertiid)
+      endif
 C
 C  Appels a histdef pour la definition des variables a sauvegarder
@@ -282,9 +283,9 @@
       call histend(fileid)
       call histend(filevid)
-      call histend(filedid)
+      if (mpi_rank==0) call histend(filedid)
       if (ok_sync) then
         call histsync(fileid)
         call histsync(filevid)
-        call histsync(filedid)
+        if (mpi_rank==0) call histsync(filedid)
       endif
 	
Index: /trunk/libf/dyn3dpar/integrd_p.F
===================================================================
--- /trunk/libf/dyn3dpar/integrd_p.F	(revision 6)
+++ /trunk/libf/dyn3dpar/integrd_p.F	(revision 7)
@@ -1,4 +1,4 @@
 !
-! $Id: integrd_p.F 1403 2010-07-01 09:02:53Z fairhead $
+! $Id: integrd_p.F 1446 2010-10-22 09:27:25Z emillour $
 !
       SUBROUTINE integrd_p
@@ -6,5 +6,5 @@
      $     dv,du,dteta,dq,dp,vcov,ucov,teta,q,ps0,masse,phis,finvmaold)
       USE parallel
-      USE control_mod
+      USE control_mod, only : planet_type
       IMPLICIT NONE
 
@@ -279,5 +279,4 @@
 
           CALL qminimum_p( q, nq, deltap )
-	 endif ! of if (planet_type.eq."earth")
 c
 c    .....  Calcul de la valeur moyenne, unique  aux poles pour  q .....
@@ -337,4 +336,7 @@
       ENDDO
 c$OMP END DO NOWAIT
+
+      endif ! of if (planet_type.eq."earth")
+
 c
 c
Index: /trunk/libf/dyn3dpar/leapfrog_p.F
===================================================================
--- /trunk/libf/dyn3dpar/leapfrog_p.F	(revision 6)
+++ /trunk/libf/dyn3dpar/leapfrog_p.F	(revision 7)
@@ -1,4 +1,4 @@
 ! 
-! $Id: leapfrog_p.F 1437 2010-09-30 08:29:10Z emillour $
+! $Id: leapfrog_p.F 1446 2010-10-22 09:27:25Z emillour $
 !
 c
@@ -234,5 +234,5 @@
 
 c$OMP MASTER
-      dq=0.
+      dq(:,:,:)=0.
       CALL pression ( ip1jmp1, ap, bp, ps, p       )
       CALL exner_hyb( ip1jmp1, ps, p,alpha,beta, pks, pk, pkf )
@@ -596,15 +596,10 @@
      .        flxw,pk, iapptrac)
 
-       IF (offline) THEN
-Cmaf stokage du flux de masse pour traceurs OFF-LINE
-
-#ifdef CPP_IOIPSL
-           CALL fluxstokenc_p(pbaru,pbarv,masse,teta,phi,phis,
-     .   dtvr, itau)
-#endif
-
-
-         ENDIF ! of IF (offline)
-c
+C        Stokage du flux de masse pour traceurs OFF-LINE
+         IF (offline .AND. .NOT. adjust) THEN
+            CALL fluxstokenc_p(pbaru,pbarv,masse,teta,phi,phis,
+     .           dtvr, itau)
+         ENDIF
+
       ENDIF ! of IF( forward. OR . leapf )
 cc$OMP END PARALLEL
@@ -1493,9 +1488,9 @@
 c$OMP MASTER
 
-              if (planet_type.eq."earth") then
+!              if (planet_type.eq."earth") then
 ! 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."earth")
 
 !              CLOSE(99)
@@ -1686,10 +1681,10 @@
 
               IF(itau.EQ.itaufin) THEN
-                if (planet_type.eq."earth") then
+!                if (planet_type.eq."earth") then
 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."earth")
               ENDIF ! of IF(itau.EQ.itaufin)
 
Index: /trunk/libf/dyn3dpar/limit_netcdf.F90
===================================================================
--- /trunk/libf/dyn3dpar/limit_netcdf.F90	(revision 6)
+++ /trunk/libf/dyn3dpar/limit_netcdf.F90	(revision 7)
@@ -1,4 +1,4 @@
 !
-! $Id: limit_netcdf.F90 1425 2010-09-02 13:45:23Z lguez $
+! $Id: limit_netcdf.F90 1441 2010-10-13 13:06:56Z emillour $
 !-------------------------------------------------------------------------------
 !
@@ -97,5 +97,5 @@
   kappa = 0.2857143
   cpp   = 1004.70885
-  dtvr  = daysec/FLOAT(day_step)
+  dtvr  = daysec/REAL(day_step)
   CALL inigeom
 
@@ -265,6 +265,4 @@
 
   DEALLOCATE(pctsrf_t,phy_sst,phy_bil,phy_alb,phy_rug)
-#endif
-! of #ifdef CPP_EARTH
 
 
@@ -592,7 +590,7 @@
 
 !--- Mid-months times
-  mid_months(1)=0.5*FLOAT(mnth(1))
+  mid_months(1)=0.5*REAL(mnth(1))
   DO k=2,nm
-    mid_months(k)=mid_months(k-1)+0.5*FLOAT(mnth(k-1)+mnth(k))
+    mid_months(k)=mid_months(k-1)+0.5*REAL(mnth(k-1)+mnth(k))
   END DO
 
@@ -626,4 +624,6 @@
 !-------------------------------------------------------------------------------
 
+#endif
+! of #ifdef CPP_EARTH
 
 END SUBROUTINE limit_netcdf
