Index: /trunk/arch/arch-GNOME.fcm
===================================================================
--- /trunk/arch/arch-GNOME.fcm	(revision 103)
+++ /trunk/arch/arch-GNOME.fcm	(revision 104)
@@ -9,4 +9,6 @@
 %DEV_FFLAGS          -O2
 %DEBUG_FFLAGS        -O2
+%C_COMPILER          gcc
+%C_OPTIM             -O3
 %MPI_FFLAGS          -I/opt/intel/impi/3.2.1.009/include64
 %OMP_FFLAGS          
Index: /trunk/arch/arch-SX8_BRODIE.fcm
===================================================================
--- /trunk/arch/arch-SX8_BRODIE.fcm	(revision 103)
+++ /trunk/arch/arch-SX8_BRODIE.fcm	(revision 104)
@@ -9,4 +9,6 @@
 %DEV_FFLAGS          -C vsafe -gv -Wf,-init stack=nan,-init heap=nan
 %DEBUG_FFLAGS        -C debug -eR -Wf,-init stack=nan,-init heap=nan
+%C_COMPILER          sxcc
+%C_OPTIM             -O
 %MPI_FFLAGS
 %OMP_FFLAGS          -P openmp
Index: /trunk/arch/arch-g95.fcm
===================================================================
--- /trunk/arch/arch-g95.fcm	(revision 103)
+++ /trunk/arch/arch-g95.fcm	(revision 104)
@@ -9,4 +9,6 @@
 %DEV_FFLAGS          -O
 %DEBUG_FFLAGS        -fbounds-check -freal=nan -ftrace=full -g -O0 -Wall
+%C_COMPILER          gcc
+%C_OPTIM             -O3
 %MPI_FFLAGS
 %OMP_FFLAGS          
Index: /trunk/arch/arch-linux-64bit.fcm
===================================================================
--- /trunk/arch/arch-linux-64bit.fcm	(revision 103)
+++ /trunk/arch/arch-linux-64bit.fcm	(revision 104)
@@ -9,4 +9,6 @@
 %DEV_FFLAGS          -g -O1
 %DEBUG_FFLAGS        -g -O0 -Kieee -Ktrap=fp -Mbounds
+%C_COMPILER          gcc
+%C_OPTIM             -O3
 %MPI_FFLAGS
 %OMP_FFLAGS          
Index: /trunk/chantiers/commit_importants.log
===================================================================
--- /trunk/chantiers/commit_importants.log	(revision 103)
+++ /trunk/chantiers/commit_importants.log	(revision 104)
@@ -722,2 +722,13 @@
 - sponge layer
 
+*********************
+**** commit_v104 ****
+*********************
+
+SLebonnois: modification de makelmdz et create_make_gcm pour pouvoir 
+compiler la chimie titan. Pas de raison que ca gene les autres.
+Dans cette version, les compilations de Venus et Titan fonctionnent.
+
+Phytitan: modifications pour pouvoir compiler correctement.
+Il ne manque plus que physiq.F a faire.
+
Index: /trunk/create_make_gcm
===================================================================
--- /trunk/create_make_gcm	(revision 103)
+++ /trunk/create_make_gcm	(revision 104)
@@ -82,4 +82,11 @@
 echo
 echo
+echo '#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%'
+echo '# Option de compilation C'
+echo '#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%'
+echo
+echo 'COMPILEC = $(CCC) $(OPTIMC) $(INCLUDEC) -c'
+echo
+echo
 echo "#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
 echo "# Creation des differents executables"
@@ -110,4 +117,6 @@
 echo 'cosp : $(LIBO)/libcosp.a'
 echo
+echo 'chimtitan : $(LIBO)/libchimtitan.a'
+echo 
 echo '$(FILTRE)3d : $(LIBO)/lib$(FILTRE).a'
 echo
@@ -229,5 +238,71 @@
 #	 
       echo
-   cd $libf
+      cd $libf
+##############################
+## CAS DES FICHIERS EN C
+######
+   elif [ "`ls $diri/*.c`" != "" ] ; then 
+      cd $diri >/dev/null 2>&1
+      echo
+      listlib=""
+      for i in `ls *.c`
+      do
+         fili=`basename $i .c`
+         test=` (  head $i | grep '      PROGRAM' ) `
+         if [ "$test" = "" ] ; then 
+            listlib=$listlib" "$fili
+         fi
+      done
+#
+      echo
+      echo
+      echo '#======================================================================='
+      echo '# Contenu de la bibliotheque correspondant au Directory '$diri
+      echo '#======================================================================='
+      echo
+      for fili in $listlib
+      do
+         echo '$(LIBO)/lib'$diri".a : " '$(LIBO)/lib'$diri".a("$fili".o)"
+         echo
+      done
+      echo '.PRECIOUS	: $(LIBO)/lib'$diri'.a'
+      echo
+      echo
+      echo '# Compilation des membres de la bibliotheque lib'$diri'.a'
+      echo
+      for fili in $listlib
+      do
+         str1='$(LIBO)/lib'$diri'.a('$fili'.o) : $(LIBF)/'$diri/$fili.c
+         for stri in ` ( sed -n "/\#include/s/\#include//p" $fili.c  | sed 's/\"//g' ) `
+         do
+            if [ -f $stri ] ; then
+               echo $str1 \\
+               str1='$(LIBF)/'$diri'/'$stri
+            else
+               for dirinc in dyn3d grid bibio
+               do
+                  if [ -f ../$dirinc/$stri ] ; then
+                     echo $str1 \\
+                     str1='$(LIBF)/'`cd .. ; ls */$stri | head -1`
+                  fi
+               done
+            fi
+         done
+         echo $str1
+         # Compile in LIBO directory; and before compiling, remove
+         # object from library
+         echo '	cd $(LIBO); \'
+         echo '	$(AR) d $(LIBO)/lib'$diri'.a '$fili'.o ; \'
+         ## C
+         echo '	$(COMPILEC) $(LIBF)/'$diri'/'$fili'.c; \'
+         # Put generated object in library
+         echo '	$(AR) r $(LIBO)/lib'$diri'.a '$fili'.o ; $(RM) '$fili'.o ; \'
+         echo '	cd $(GCM)'
+	 echo
+      done
+#	 
+      echo
+      cd $libf
+##############################
    fi
    fi
Index: unk/libf/chimtitan/trac.h
===================================================================
--- /trunk/libf/chimtitan/trac.h	(revision 103)
+++ 	(revision )
@@ -1,37 +1,0 @@
-/* trac.h: parameters for traceurs.c */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>
-#include "dim_c.h"
-
-#define R0   (float)(2575.0)     /* Titan's radius */
-
-#define THETA (float)(0.501)
-#ifndef M_PI
-#define M_PI (float)(3.14159265358979323846e0)
-#endif
-#define RAD (float)(M_PI / 180.0e0)
-#ifndef max
-#define max(a,b) ((a)>(b)?(a):(b))
-#define min(a,b) ((a)<=(b)?(a):(b))
-#endif
-
-float *rm1d( int, int );
-float **rm2d( int, int, int, int );
-float ***rm3d( int, int, int, int, int, int );
-float ****rm4d( int, int, int, int, int, int );
-double *dm1d( int, int );
-double **dm2d( int, int, int, int );
-double ***dm3d( int, int, int, int, int, int );
-double ****dm4d( int, int, int, int, int, int );
-void  frm1d( float *, int );
-void  frm2d( float **, int, int, int );
-void  frm3d( float ***, int, int, int, int, int );
-void  fdm1d( double *, int );
-void  fdm2d( double **, int, int, int );
-void  fdm3d( double ***, int, int, int, int, int );
-int   *im1d( int, int );
-int   **im2d( int, int, int, int );
-int   ***im3d( int, int, int, int, int, int );
Index: /trunk/libf/chimtitan/tractitan.c
===================================================================
--- /trunk/libf/chimtitan/tractitan.c	(revision 103)
+++ /trunk/libf/chimtitan/tractitan.c	(revision 104)
@@ -2,5 +2,5 @@
 /* GCCM */
 
-#include "trac.h"
+#include "titan.h"
 
 void tractitan_( double *RB, char CORPS[][10], double Y[][NLEV], 
Index: /trunk/libf/phytitan/calchim.F
===================================================================
--- /trunk/libf/phytitan/calchim.F	(revision 103)
+++ /trunk/libf/phytitan/calchim.F	(revision 104)
@@ -35,5 +35,5 @@
       REAL         cplev(jjm+1,klev)      ! pression intercouches (Pa)
       
-      REAL         dqyc(jjm+1,klev,nqtot)  ! Tendances especes chimiques (nqtot, mais en fait NC...)
+      REAL         dqyc(jjm+1,klev,NC)    ! Tendances especes chimiques 
       
 c    Local variables :
@@ -67,9 +67,8 @@
       REAL  botCH4
       DATA  botCH4/0.05/
-      REAL  krpd(15,ND+1,klev,jjm+1),krate(klev,NR)
+      REAL,save,allocatable :: krpd(:,:,:,:),krate(:,:)
       integer reactif(5,NR),nom_prod(NC),nom_perte(NC)
       integer prod(200,NC),perte(2,200,NC)
       SAVE    mass,tablefluxtop,botCH4
-      SAVE    krpd,krate
       SAVE    reactif,nom_prod,nom_perte,prod,perte
       
@@ -90,4 +89,6 @@
 c pour les routines de la chimie.
 c ************************************
+
+        allocate(krpd(15,ND+1,klev,jjm+1),krate(klev,NR))
 
 c Verification dimension verticale: coherence titan_for.h et klev
Index: /trunk/libf/phytitan/clesphys.h
===================================================================
--- /trunk/libf/phytitan/clesphys.h	(revision 103)
+++ /trunk/libf/phytitan/clesphys.h	(revision 104)
@@ -7,5 +7,5 @@
 !..include cles_phys.h
 !
-       LOGICAL cycle_diurne,soil_model,ok_orodr,ok_orolf 
+       LOGICAL cycle_diurne,soil_model 
        LOGICAL ok_orodr,ok_orolf,ok_gw_nonoro
        INTEGER nbapp_rad, nbapp_chim, iflag_con, iflag_ajs
Index: /trunk/libf/phytitan/cooling.F
===================================================================
--- /trunk/libf/phytitan/cooling.F	(revision 103)
+++ /trunk/libf/phytitan/cooling.F	(revision 104)
@@ -59,4 +59,8 @@
       PARAMETER (NSPECI=46,NSPC1I=47)
 
+c  ASTUCE POUR EVITER klon... EN ATTENDANT MIEUX
+      INTEGER   ngrid
+      PARAMETER (ngrid=(jjm-1)*iim+2)  ! = klon
+c
 c   Arguments:
 c   ----------
@@ -73,5 +77,5 @@
 
 C DTAU IS PASSED EN-MASS, SO ITS DEMENSIONS ARE CRITICAL
-      COMMON /IRTAUS/ DTAUI(klon,NLAYER,NSPECI)
+      COMMON /IRTAUS/ DTAUI(ngrid,NLAYER,NSPECI)
       REAL dtaui
 
@@ -80,6 +84,6 @@
 
       REAL WNOI(NSPECI),DWNI(NSPECI)   ! SPECTAL INTERVALS
-      REAL B0(klon,llm+1)
-      REAL EM(klon,llm+1)
+      REAL B0(ngrid,llm+1)
+      REAL EM(ngrid,llm+1)
       REAL DW,WAVEN,TJ,BSURF,QOUT,QIN,eff_g,COLDEN
 
Index: /trunk/libf/phytitan/heating.F
===================================================================
--- /trunk/libf/phytitan/heating.F	(revision 103)
+++ /trunk/libf/phytitan/heating.F	(revision 104)
@@ -36,4 +36,8 @@
       PARAMETER (NSPECV=24)
 c
+c  ASTUCE POUR EVITER klon... EN ATTENDANT MIEUX
+      INTEGER   ngrid
+      PARAMETER (ngrid=(jjm-1)*iim+2)  ! = klon
+c
 
 c   Arguments:
@@ -57,6 +61,6 @@
       REAL  CH4(NLEVEL),XN2(NLEVEL),H2(NLEVEL),AR(NLEVEL)
       REAL  XMU(NLEVEL),GAS1(NLAYER),COLDEN(NLAYER)
-      REAL FNETV(klon,NLEVEL),FUPV(klon,NLEVEL,NSPECV)  
-      REAL FDV(klon,NLEVEL,NSPECV),FMNETV(klon,NLEVEL)
+      REAL FNETV(ngrid,NLEVEL),FUPV(ngrid,NLEVEL,NSPECV)  
+      REAL FDV(ngrid,NLEVEL,NSPECV),FMNETV(ngrid,NLEVEL)
       REAL CSUBP,RSFI,RSFV,F0PI
 
Index: /trunk/libf/phytitan/optci.F
===================================================================
--- /trunk/libf/phytitan/optci.F	(revision 103)
+++ /trunk/libf/phytitan/optci.F	(revision 104)
@@ -1,3 +1,3 @@
-      SUBROUTINE OPTCI(ykim,nmicro,IPRINT)
+      SUBROUTINE OPTCI(ykim,qaer,nmicro,IPRINT)
       use dimphy
 #include "dimensions.h"
@@ -9,7 +9,12 @@
 c   ---------
       REAL    ykim(klon,klev,nqtot)
+      real    qaer(klon,nlayer,nqtot)
       integer nmicro
 c   ---------
 
+c  ASTUCE POUR EVITER klon... EN ATTENDANT MIEUX
+      INTEGER   ngrid
+      PARAMETER (ngrid=(jjm-1)*iim+2)  ! = klon
+c
       PARAMETER(NLAYER=llm,NLEVEL=NLAYER+1)
       PARAMETER (NSPECI=46,NSPC1I=47,NSPECV=24,NSPC1V=25)
@@ -29,19 +34,19 @@
      & , RCLDI(NSPECI), XICLDI(NSPECI), RCLDV(NSPECV), XICLDV(NSPECV)
 
-      COMMON /TAUS/   TAUHI(klon,NSPECI),TAUCI(klon,NSPECI),
-     &                TAUGI(klon,NSPECI),TAURV(klon,NSPECV),
-     &                TAUHV(klon,NSPECV),TAUCV(klon,NSPECV),
-     &                TAUGV(klon,NSPECV)
-
-      COMMON /TAUD/   TAUHID(klon,NLAYER,NSPECI)
-     &               ,TAUGID(klon,NLAYER,NSPECI)
-     &               ,TAUHVD(klon,NLAYER,NSPECV)
-     &               ,TAUGVD(klon,NLAYER,NSPECV)
-
-
-      COMMON /OPTICI/ DTAUI(klon,NLAYER,NSPECI)
-     &               ,TAUI (klon,NLEVEL,NSPECI)
-     &               ,WBARI(klon,NLAYER,NSPECI)
-     &               ,COSBI(klon,NLAYER,NSPECI)
+      COMMON /TAUS/   TAUHI(ngrid,NSPECI),TAUCI(ngrid,NSPECI),
+     &                TAUGI(ngrid,NSPECI),TAURV(ngrid,NSPECV),
+     &                TAUHV(ngrid,NSPECV),TAUCV(ngrid,NSPECV),
+     &                TAUGV(ngrid,NSPECV)
+
+      COMMON /TAUD/   TAUHID(ngrid,NLAYER,NSPECI)
+     &               ,TAUGID(ngrid,NLAYER,NSPECI)
+     &               ,TAUHVD(ngrid,NLAYER,NSPECV)
+     &               ,TAUGVD(ngrid,NLAYER,NSPECV)
+
+
+      COMMON /OPTICI/ DTAUI(ngrid,NLAYER,NSPECI)
+     &               ,TAUI (ngrid,NLEVEL,NSPECI)
+     &               ,WBARI(ngrid,NLAYER,NSPECI)
+     &               ,COSBI(ngrid,NLAYER,NSPECI)
 
       COMMON /SPECTI/ BWNI(NSPC1I), WNOI(NSPECI),
@@ -51,10 +56,8 @@
       COMMON /ADJUST/ RHCH4,FH2,FHAZE,FHVIS,FHIR,TAUFAC,RCLOUD,FARGON
       COMMON /CONST/RGAS,RHOP,PI,SIGMA
-      COMMON /traceurs/qaer
       COMMON /part/v,rayon,vrat,dr,dv
 
       DIMENSION PROD(NLEVEL)
 * nrad dans microtab.h
-      real qaer(klon,nlayer,nqtot)
       real v(nrad),rayon(nrad),vrat,dr(nrad),dv(nrad)
       real xv1(klev,nspeci),xv2(klev,nspeci)
Index: /trunk/libf/phytitan/optcv.F
===================================================================
--- /trunk/libf/phytitan/optcv.F	(revision 103)
+++ /trunk/libf/phytitan/optcv.F	(revision 104)
@@ -1,3 +1,3 @@
-      SUBROUTINE OPTCV(nmicro,IPRINT)
+      SUBROUTINE OPTCV(qaer,nmicro,IPRINT)
 
 
@@ -9,7 +9,12 @@
 c   Argument:
 c   ---------
+      REAL    qaer(klon,nlayer,nqtot)
       integer nmicro
 c   ---------
 
+c  ASTUCE POUR EVITER klon... EN ATTENDANT MIEUX
+      INTEGER   ngrid
+      PARAMETER (ngrid=(jjm-1)*iim+2)  ! = klon
+c
       PARAMETER(NLAYER=llm,NLEVEL=NLAYER+1)
       PARAMETER (NSPECI=46,NSPC1I=47,NSPECV=24,NSPC1V=25)
@@ -30,18 +35,18 @@
      &             , RCLDV(NSPECV), XICLDV(NSPECV)
 
-      COMMON /TAUS/   TAUHI(klon,NSPECI), TAUCI(klon,NSPECI)
-     &               ,TAUGI(klon,NSPECI), TAURV(klon,NSPECV)
-     &               ,TAUHV(klon,NSPECV) ,TAUCV(klon,NSPECV)
-     &               ,TAUGV(klon,NSPECV)
-
-      COMMON /TAUD/   TAUHID(klon,NLAYER,NSPECI)
-     &               ,TAUGID(klon,NLAYER,NSPECI)
-     &               ,TAUHVD(klon,NLAYER,NSPECV)
-     &               ,TAUGVD(klon,NLAYER,NSPECV)
-
-      COMMON /OPTICV/ DTAUV(klon,NLAYER,NSPECV,4)
-     &               ,TAUV(klon,NLEVEL,NSPECV,4)
-     &               ,WBARV(klon,NLAYER,NSPECV,4)
-     &               ,COSBV(klon,NLAYER,NSPECV,4)
+      COMMON /TAUS/   TAUHI(ngrid,NSPECI), TAUCI(ngrid,NSPECI)
+     &               ,TAUGI(ngrid,NSPECI), TAURV(ngrid,NSPECV)
+     &               ,TAUHV(ngrid,NSPECV) ,TAUCV(ngrid,NSPECV)
+     &               ,TAUGV(ngrid,NSPECV)
+
+      COMMON /TAUD/   TAUHID(ngrid,NLAYER,NSPECI)
+     &               ,TAUGID(ngrid,NLAYER,NSPECI)
+     &               ,TAUHVD(ngrid,NLAYER,NSPECV)
+     &               ,TAUGVD(ngrid,NLAYER,NSPECV)
+
+      COMMON /OPTICV/ DTAUV(ngrid,NLAYER,NSPECV,4)
+     &               ,TAUV(ngrid,NLEVEL,NSPECV,4)
+     &               ,WBARV(ngrid,NLAYER,NSPECV,4)
+     &               ,COSBV(ngrid,NLAYER,NSPECV,4)
 
       COMMON /SPECTV/ BWNV(NSPC1V),WNOV(NSPECV) 
@@ -51,5 +56,4 @@
       COMMON /ADJUST/ RHCH4,FH2,FHAZE,FHVIS,FHIR,TAUFAC,RCLOUD,FARGON
       COMMON /CONST/ RGAS,RHOP,PI,SIGMA
-      COMMON /traceurs/qaer(klon,nlayer,nqtot)
       COMMON /part/ v(nrad),rayon(nrad),vrat,dr(nrad),dv(nrad)
 
Index: /trunk/libf/phytitan/pg2.F
===================================================================
--- /trunk/libf/phytitan/pg2.F	(revision 103)
+++ /trunk/libf/phytitan/pg2.F	(revision 104)
@@ -51,5 +51,5 @@
 
      
-        parameter (NG=jjm+1,NL=klev)   ! NG: on travaille en moyenne zonale
+        parameter (NG=jjm+1)   ! NG: on travaille en moyenne zonale
  
 c*************************************
@@ -68,10 +68,10 @@
         real   mu0(ng),fract(ng)
 
-        real    zzlev(NG,NL+1)
-     &         ,pplev(NG,NL+1)
-     &         ,zzlay(NG,NL)
-     &         ,pt(NG,NL)
-     &         ,q(NG,NL,nq)
-     &         ,qdel(NG,NL,nq)
+        real    zzlev(NG,klev+1)
+     &         ,pplev(NG,klev+1)
+     &         ,zzlay(NG,klev)
+     &         ,pt(NG,klev)
+     &         ,q(NG,klev,nq)
+     &         ,qdel(NG,klev,nq)
      &         ,qcumul(NG,0:200,nq)
 
Index: /trunk/libf/phytitan/physiq.F
===================================================================
--- /trunk/libf/phytitan/physiq.F	(revision 103)
+++ /trunk/libf/phytitan/physiq.F	(revision 104)
@@ -253,7 +253,5 @@
       REAL yv1(klon)            ! vents dans la premiere couche V
       character*8 nom
-* common relatifs aux aerosols 
       REAL qaer(klon,klev,nqmax)
-      common/traceurs/qaer
 
       REAL sens(klon), dsens(klon) ! chaleur sensible et sa derivee
@@ -1055,5 +1053,5 @@
       
 c on recupere tr_seri inchange, d_tr_micro, d_tr_chim, tous les trois sur nqmax
-c on recupere aussi qaer (avec le common) pour le mettre dans les sorties
+c on recupere aussi qaer pour le mettre dans les sorties
 c  si microfi=1, sortie de qaer(1:nmicro)
 c  si nmicro != nqmax et si chimi, sortie de tr_seri(nmicro+1:nqmax) 
@@ -1077,5 +1075,5 @@
      .                   nqmax,nmicro,dtime,appel_chim,dtimechim,
      .                   paprs,pplay,delp,t,rmu0,fract,pdecli,zls,
-     .                   tr_seri,d_tr_mph,d_tr_kim)
+     .                   tr_seri,qaer,d_tr_mph,d_tr_kim)
 
         if (microfi.eq.1) then
@@ -1122,5 +1120,5 @@
      e            (dist, rmu0, fract, dtimerad, zzlev,
      e             paprs, pplay,ftsol, t_seri, nqmax, nmicro,
-     c             tr_seri,
+     c             tr_seri, qaer,
      s             heat,cool,radsol,
      s             topsw,toplw,solsw,sollw,
@@ -1438,4 +1436,15 @@
       ENDDO
 c
+c incrementation de la tendance (repassee en extensif) sur qaer pour sorties
+      if (microfi.eq.1) then
+      do iq=1,nmicro
+         DO l=1,llm
+          DO i = 1, klon
+            qaer(i,l,iq) = qaer(i,l,iq) +
+     .                (d_tr_mph(i,l,iq)*delp(i,l)/RG)*ptimestep
+          ENDDO
+         ENDDO
+      enddo
+      endif   ! microfi
 c=============================================================
 c   Ecriture des sorties
Index: /trunk/libf/phytitan/phytrac.F
===================================================================
--- /trunk/libf/phytitan/phytrac.F	(revision 103)
+++ /trunk/libf/phytitan/phytrac.F	(revision 104)
@@ -2,5 +2,5 @@
      .                   nqmax,nmicro,ptimestep,appkim,dtkim,
      .                   pplev,pplay,delp,ptemp,pmu0,pfract,pdecli,
-     .                   lonsol,tr_seri,d_tr_mph,d_tr_kim)
+     .                   lonsol,tr_seri,qaer,d_tr_mph,d_tr_kim)
 
 c======================================================================
@@ -45,12 +45,9 @@
       REAL pmu0(klon), pfract(klon), pdecli, lonsol
       REAL tr_seri(klon,klev,nqmax)
+      REAL qaer(klon,klev,nqmax)
       REAL d_tr_mph(klon,klev,nqmax),d_tr_kim(klon,klev,nqmax)
 
 c======================================================================
 c Local variables
-
-* common relatifs aux aerosols 
-      REAL qaer(klon,klev,nqtot)
-      common/traceurs/qaer
 
 c grandeurs en moyennes zonales
@@ -62,17 +59,18 @@
       REAL pdqmfi(jjm+1,klev,nqmax)
       REAL ychim(jjm+1,klev,nqmax-nmicro) 
-      REAL qysat(klev,nqtot)        ! dim nqtot, mais en fait nqmax-nmicro (save...)
-      REAL pdyfi(jjm+1,klev,nqtot)  ! dim nqtot, mais en fait nqmax-nmicro (save...)
-      character*10 nomqy(nqmax-nmicro+1)
-      integer      i,j,l,iq,ig0
-
 c La saturation n est calculee qu une seule fois: sauvegarde qysat
 c La chimie n est pas calculee tous les pas, il faut donc
 c                      sauvegarder les sorties de la chimie
-
-      SAVE pdyfi,qysat  
-      
-c======================================================================
-c======================================================================
+      REAL,save,allocatable :: qysat(:,:),pdyfi(:,:,:) 
+      
+      character*10 nomqy(nqmax-nmicro+1)
+      integer      i,j,l,iq,ig0
+      
+c======================================================================
+c======================================================================
+
+      if (firstcall) then
+       allocate(qysat(klev,nqmax-nmicro),pdyfi(jjm+1,klev,nqmax-nmicro))
+      endif
 
 c-----------------------------------------------------------------------
@@ -349,6 +347,4 @@
          DO l=1,llm
           DO i = 1, klon
-c incrementation de la tendance sur qaer (pour sorties dans physiq.F)
-            qaer(i,l,iq) = qaer(i,l,iq) + d_tr_mph(i,l,iq)*ptimestep
 c  Traceurs microphysiques: passage en intensif: n/m^2 --> n/kg
             d_tr_mph(i,l,iq) = d_tr_mph(i,l,iq)*RG/delp(i,l)
Index: /trunk/libf/phytitan/radlwsw.F
===================================================================
--- /trunk/libf/phytitan/radlwsw.F	(revision 103)
+++ /trunk/libf/phytitan/radlwsw.F	(revision 104)
@@ -1,4 +1,5 @@
       SUBROUTINE radlwsw(dist, rmu0, fract, dtimerad, zzlev,
      .                  paprs, pplay,tsol, pt, nq, nmicro, pq,
+     .                  qaer,
      .                  heat,cool,radsol,
      .                  topsw,toplw,solsw,sollw,
@@ -53,4 +54,5 @@
       real pt(klon,klev)
       real pq(klon,klev,nq)
+      REAL qaer(klon,klev,nq)
       real heat(klon,klev), cool(klon,klev)
       real radsol(klon), topsw(klon), toplw(klon)
@@ -66,8 +68,4 @@
       REAL zswnet(klon,kflev+1),zlwnet(klon,kflev+1)
       
-* common relatifs aux aerosols 
-      REAL qaer(klon,klev,nqtot)
-      common/traceurs/qaer
-     
 
 c =======================================
@@ -117,5 +115,5 @@
       print*,'On calcule les opacites'
 
-         CALL radtitan(zp,nq,nmicro,zq)
+         CALL radtitan(zp,nq,nmicro,zq,qaer)
 
 c =======================================
Index: /trunk/libf/phytitan/radtitan.F
===================================================================
--- /trunk/libf/phytitan/radtitan.F	(revision 103)
+++ /trunk/libf/phytitan/radtitan.F	(revision 104)
@@ -1,3 +1,3 @@
-       SUBROUTINE RADTITAN(p,nq,nmicro,ycomp)
+       SUBROUTINE RADTITAN(p,nq,nmicro,ycomp,qaer)
 
 c=======================================================================
@@ -49,4 +49,9 @@
       PARAMETER (NSPECI=46,NSPC1I=47,NSPECV=24,NSPC1V=25)
       PARAMETER (NSPV=21)  ! LDO POUR CALCUL ALBEDO
+
+c
+c  ASTUCE POUR EVITER klon... EN ATTENDANT MIEUX
+      INTEGER   ngrid
+      PARAMETER (ngrid=(jjm-1)*iim+2)  ! = klon
 c
 
@@ -58,4 +63,5 @@
       REAL p(klon,nlevel)
       REAL ycomp(klon,nlayer,nq)
+      REAL qaer(klon,klev,nq)
 
 c   Local:
@@ -68,5 +74,5 @@
       data notfirstcall/.false./
 
-      REAL emu,somcoslat,coslat(klon)
+      REAL emu,somcoslat,coslat(ngrid)
  
       REAL PCH4, effg,FH2L,RHCH4L,SSUM    ! effg est une fonction(z)
@@ -75,5 +81,5 @@
 c   ---------------------------------------------
 
-      REAL DTAUP(klon,NLAYER,NSPECI)
+      REAL DTAUP(ngrid,NLAYER,NSPECI)
       REAL UBARI,UBARV,UBAR0
       REAL DZED(NLAYER)
@@ -90,26 +96,26 @@
       REAL  RADCLD(NLAYER), XNCLD(NLAYER),RCLDI(NSPECI),  XICLDI(NSPECI)
       REAL  RCLDV(NSPECV),  XICLDV(NSPECV)
-      REAL  TAUHI(klon,NSPECI),TAUCI(klon,NSPECI)
-      REAL  TAUGI(klon,NSPECI), TAUGV(klon,NSPECV)
-      REAL  TAURV(klon,NSPECV),TAUHV(klon,NSPECV)
-      REAL  TAUCV(klon,NSPECV)
-c
-      REAL  DTAUI(klon,NLAYER,NSPECI)
-      REAL  TAUI(klon,NLEVEL,NSPECI)
-      REAL  WBARI(klon,NLAYER,NSPECI)
-      REAL  COSBI(klon,NLAYER,NSPECI)
+      REAL  TAUHI(ngrid,NSPECI),TAUCI(ngrid,NSPECI)
+      REAL  TAUGI(ngrid,NSPECI), TAUGV(ngrid,NSPECV)
+      REAL  TAURV(ngrid,NSPECV),TAUHV(ngrid,NSPECV)
+      REAL  TAUCV(ngrid,NSPECV)
+c
+      REAL  DTAUI(ngrid,NLAYER,NSPECI)
+      REAL  TAUI(ngrid,NLEVEL,NSPECI)
+      REAL  WBARI(ngrid,NLAYER,NSPECI)
+      REAL  COSBI(ngrid,NLAYER,NSPECI)
       REAL  BWNI(NSPC1I),WNOI(NSPECI)
       REAL  WLNI(NSPECI),DWNI(NSPECI)
 c
-      REAL DTAUV(klon,NLAYER,NSPECV,4)
-      REAL TAUV(klon,NLEVEL,NSPECV,4)
-      REAL WBARV(klon,NLAYER,NSPECV,4) 
-      REAL COSBV(klon,NLAYER,NSPECV,4) 
+      REAL DTAUV(ngrid,NLAYER,NSPECV,4)
+      REAL TAUV(ngrid,NLEVEL,NSPECV,4)
+      REAL WBARV(ngrid,NLAYER,NSPECV,4) 
+      REAL COSBV(ngrid,NLAYER,NSPECV,4) 
       REAL BWNV(NSPC1V), WNOV(NSPECV),DWNV(NSPECV), WLNV(NSPECV)
-      REAL FNETV(klon,NLEVEL),FUPV(klon,NLEVEL,NSPECV)  
-      REAL FDV(klon,NLEVEL,NSPECV),FMNETV(klon,NLEVEL)
+      REAL FNETV(ngrid,NLEVEL),FUPV(ngrid,NLEVEL,NSPECV)  
+      REAL FDV(ngrid,NLEVEL,NSPECV),FMNETV(ngrid,NLEVEL)
       REAL FMUPV(NLEVEL),FMDV(NLEVEL)
-      REAL FNET(klon,NLEVEL),FMNET(klon,NLEVEL)
-      REAL THEAT(klon,NLAYER)
+      REAL FNET(ngrid,NLEVEL),FMNET(ngrid,NLEVEL)
+      REAL THEAT(ngrid,NLAYER)
       REAL CSUBP,RSFI,RSFV,F0PI
       REAL  RHCH4,FH2,FHAZE,FHVIS,FHIR,TAUFAC,RCLOUD,FARGON
@@ -195,10 +201,8 @@
       COMMON /IO/ TIDAL
 
-* common relatifs aux aerosols  
 * nrad dans microtab.h
-      REAL qaer(klon,nlayer,nqtot),volume(nrad),rayon(nrad),vrat,
+      REAL volume(nrad),rayon(nrad),vrat,
      &      drayon(nrad),dvolume(nrad)
 
-      common/traceurs/qaer
       common/part/volume,rayon,vrat,
      &      drayon,dvolume
@@ -359,5 +363,5 @@
       print*,'aerosol/gas/cloud properties'
 
-      CALL OPTCI(ycomp,nmicro,IPRINT)        ! #1
+      CALL OPTCI(ycomp,qaer,nmicro,IPRINT)        ! #1
       print*,'On sort de optci'
 
@@ -374,5 +378,5 @@
 C  INFRARED. AND THEN IN THE VISIBLE.
 
-        CALL OPTCV(nmicro,IPRINT)        ! #2
+        CALL OPTCV(qaer,nmicro,IPRINT)        ! #2
 
         do j=1,NLAYER
@@ -394,5 +398,5 @@
       IF(notfirstcall)    THEN  !F au 1er appel   T aux autres appels!!
        print*,'aerosol/gas/cloud properties'
-       CALL OPTCI(ycomp,nmicro,IPRINT)        ! #1
+       CALL OPTCI(ycomp,qaer,nmicro,IPRINT)        ! #1
         DO  IG=1,klon
          DO  J=1,NLAYER
@@ -410,5 +414,5 @@
       IF(notfirstcall)    THEN  !F au 1er appel   T aux autres appels!!
        print*,'aerosol/gas/cloud properties'
-       CALL OPTCV(nmicro,IPRINT)        ! #2
+       CALL OPTCV(qaer,nmicro,IPRINT)        ! #2
       ENDIF
       ENDIF
Index: /trunk/libf/phytitan/sfluxv.F
===================================================================
--- /trunk/libf/phytitan/sfluxv.F	(revision 103)
+++ /trunk/libf/phytitan/sfluxv.F	(revision 104)
@@ -6,4 +6,8 @@
 #include "comorbit.h"
 
+c  ASTUCE POUR EVITER klon... EN ATTENDANT MIEUX
+      INTEGER   ngrid
+      PARAMETER (ngrid=(jjm-1)*iim+2)  ! = klon
+c
       INTEGER NLAYER,NLEVEL,NSPECV,NSPC1V
       PARAMETER (NLAYER=llm,NLEVEL=NLAYER+1)
@@ -16,14 +20,14 @@
       REAL ATERM(4,NSPECV),BTERM(4,NSPECV)
       REAL PEXPON(NSPECV), SOLARF(NSPECV)
-      REAL  DTAUV(klon,NLAYER,NSPECV,4)
-     &     ,TAUV (klon,NLEVEL,NSPECV,4)
-     &     ,WBARV(klon,NLAYER,NSPECV,4) 
-     &     ,COSBV(klon,NLAYER,NSPECV,4)
+      REAL  DTAUV(ngrid,NLAYER,NSPECV,4)
+     &     ,TAUV (ngrid,NLEVEL,NSPECV,4)
+     &     ,WBARV(ngrid,NLAYER,NSPECV,4) 
+     &     ,COSBV(ngrid,NLAYER,NSPECV,4)
       REAL BWNV(NSPC1V),WNOV(NSPECV)
      &     ,DWNV(NSPECV),WLNV(NSPECV)
-      REAL  FNETV(klon,NLEVEL),     
-     &      FUPV(klon,NLEVEL,NSPECV),
-     &      FDV(klon,NLEVEL,NSPECV),
-     &      FMNETV(klon,NLEVEL),
+      REAL  FNETV(ngrid,NLEVEL),     
+     &      FUPV(ngrid,NLEVEL,NSPECV),
+     &      FDV(ngrid,NLEVEL,NSPECV),
+     &      FMNETV(ngrid,NLEVEL),
      &      FMUPV(NLEVEL),FMDV(NLEVEL)
       REAL CSUBP,RSFI,RSFV,F0PI
Index: /trunk/makelmdz
===================================================================
--- /trunk/makelmdz	(revision 103)
+++ /trunk/makelmdz	(revision 104)
@@ -88,4 +88,7 @@
 PARA_LD=""
 EXT_SRC=""
+ccompiler=""
+OPTIMC=""
+INCLUDEC=""
 
 ########################################################################
@@ -106,5 +109,5 @@
 [-c false/MPI1/MPI2]       : couple ocean : MPI1/MPI2/false (def: false)
 [-v false/true]            : avec ou sans vegetation (def: false)
-[-chimie INCA/false]       : avec ou sans model de chimie INCA (def: false)
+[-chimie INCA/false]       : avec ou sans modele de chimie INCA (def: false)
 [-parallel none/mpi/omp/mpi_omp] : parallelisation (default: none) : mpi, openmp ou mixte mpi_openmp
 [-g GRI]                   : conf. grille dans dyn3d/GRI_xy.h  (def: reg inclue un zoom)
@@ -282,4 +285,20 @@
 fi
 
+######### CAS PARTICULIER CHIMIE TITAN
+if [[ "$physique" == "titan" ]]
+then
+   INCLUDE="$INCLUDE"' -I$(LIBF)/chim'"$physique"
+   LIB="$LIB -l${LIBPREFIX}chim$physique"
+   opt_dep="$opt_dep chim$physique"
+# get C compiler name and optim from arch.fcm file
+   archfileline=$( grep -i '^%C_COMPILER' arch.fcm )
+   ccompiler=$( echo ${archfileline##%C_COMPILER} )
+   archfileline=$( grep -i '^%C_OPTIM' arch.fcm )
+   coptim=$( echo ${archfileline##%C_OPTIM} )
+   OPTIMC="$OPTIMC  ${coptim}"
+   INCLUDEC='-I$(LIBF)/grid -I.'
+fi
+#########
+
 if [[ "$chimie" == "INCA" ]]
 then
@@ -479,4 +498,10 @@
 find libf -name '*.[Fh]' -exec egrep -i " *use *ioipsl" {} \; -print > tmp90
 find libf -name '*.[Fh90]' -print >> tmp90
+######### CAS PARTICULIER CHIMIE TITAN
+if [[ "$physique" == "titan" ]]
+then 
+  find libf -name '*.[ch]' -print > tmpC
+fi
+#########
 
 if [[ ! ( -r makefile ) || ! ( -r liste_des_sources_f90 ) || ! ( -r liste_des_sources_f77 ) || ` diff tmp77 liste_des_sources_f77 | wc -w ` -ne 0 || ` diff tmp90 liste_des_sources_f90 | wc -w ` -ne 0 ]]
@@ -488,12 +513,33 @@
   \cp -f tmp77 liste_des_sources_f77
   \cp -f tmp90 liste_des_sources_f90
+######### CAS PARTICULIER CHIMIE TITAN
+  if [[ "$physique" == "titan" ]]
+  then 
+  diff liste_des_sources_C tmpC
+  \cp -f tmpC liste_des_sources_C
+  fi
+#########
   echo "on recree le makefile"
   ./create_make_gcm > tmp 
   \mv -f tmp makefile
   echo "Nouveau makefile cree"
+######### CAS PARTICULIER CHIMIE TITAN
+else if [[ "$physique" == "titan" ]]
+ then
+   if [[ ! ( -r liste_des_sources_C ) || ` diff tmpC liste_des_sources_C | wc -w ` -ne 0 ]]
+   then
+     diff liste_des_sources_C tmpC
+     \cp -f tmpC liste_des_sources_C
+     echo "on recree le makefile"
+     ./create_make_gcm > tmp 
+     \mv -f tmp makefile
+     echo "Nouveau makefile cree"
+   fi
+ fi
+#########
 fi
 
 #################################################################
-# Preparation de l'execution de la comande make
+# Preparation de l'execution de la commande make
 #################################################################
 
@@ -558,5 +604,7 @@
 OPTIMTRU90="${COMPIL_FFLAGS} ${PARA_FFLAGS}" \
 OPTIM="${COMPIL_FFLAGS} ${PARA_FFLAGS}" \
+OPTIMC="$optimc" \
 INCLUDE="$INCLUDE" \
+INCLUDEC="$includec" \
 $filtre \
 LIBO=${LIBOGCM}/${nomlib} \
@@ -570,4 +618,5 @@
 F77="$fcompiler" \
 F90="$fcompiler" \
+CCC="$ccompiler" \
 OPLINK="$LIB" \
 LINK="$linker" \
@@ -584,5 +633,7 @@
 OPTIMTRU90="${COMPIL_FFLAGS} ${PARA_FFLAGS}" \
 OPTIM="${COMPIL_FFLAGS} ${PARA_FFLAGS}" \
+OPTIMC="$optimc" \
 INCLUDE="$INCLUDE" \
+INCLUDEC="$includec" \
 $filtre \
 LIBO=${LIBOGCM}/${nomlib} \
@@ -596,4 +647,5 @@
 F77="$fcompiler" \
 F90="$fcompiler" \
+CCC="$ccompiler" \
 OPLINK="$LIB" \
 LINK="$linker" \
