Index: /LMDZ4/trunk/build_gcm
===================================================================
--- /LMDZ4/trunk/build_gcm	(revision 783)
+++ /LMDZ4/trunk/build_gcm	(revision 783)
@@ -0,0 +1,24 @@
+#!/bin/csh
+
+if ( -f '.lock' ) then
+  echo 'ATTENTION: vous etes sans doute en train de compiler le modele par ailleurs'
+  echo "Attendez que la premiere compilation soit terminee pour relancer la suivante."
+  echo "Si vous etes sur que vous ne compilez pas le modele par ailleurs,"
+  echo  vous pouvez continuer en repondant oui.
+  echo "Voulez-vous vraiment continuer?"
+
+  if ( $< == "oui" ) then
+    
+  else
+    exit
+  endif
+else
+  echo "compilation en cours..." > '.lock'
+endif
+
+#set arch=$1
+
+
+fcm build
+
+\rm -f '.lock' 
Index: /LMDZ4/trunk/machine/arch-SX8_MERCURE.fcm
===================================================================
--- /LMDZ4/trunk/machine/arch-SX8_MERCURE.fcm	(revision 783)
+++ /LMDZ4/trunk/machine/arch-SX8_MERCURE.fcm	(revision 783)
@@ -0,0 +1,8 @@
+%COMPILER            sxmpif90
+%LINK                sxmpif90
+%AR                  sxar
+%MAKE                make
+%FFLAGS              -C vopt -ftrace -p -P openmp -Wf,-pvctl res=whole,-A dbl4,-init stack=nan,-init heap=nan,-ptr byte -EP -R5 -float0 -size_t64 -dw -Wf,"-pvctl loopcnt=999999 fullmsg noassume"
+%FPP_FLAGS           -P -traditional
+%FPP_DEF             NC_DOUBLE BLAS SGEMV=DGEMV SGEMM=DGEMM _OPENMP
+%LD_FLAGS            -ftrace -p -P openmp -size_t64 -lblas -Wl "-ZL 24G"
Index: /LMDZ4/trunk/machine/arch-SX8_MERCURE.path
===================================================================
--- /LMDZ4/trunk/machine/arch-SX8_MERCURE.path	(revision 783)
+++ /LMDZ4/trunk/machine/arch-SX8_MERCURE.path	(revision 783)
@@ -0,0 +1,7 @@
+set ARCH=SX6
+set NETCDF_LIBDIR=/usr/local/SX8/soft/netcdf/lib
+set NETCDF_INCDIR=/usr/local/SX8/soft/netcdf/include
+set IOIPSL_INCDIR=$WORKDIR/IOIPSL_MPP/src
+set IOIPSL_LIBDIR=$WORKDIR/IOIPSL_MPP/src
+set ORCH_INCDIR=$WORKDIR/ORCHIDEE/lib
+set ORCH_LIBDIR=$WORKDIR/ORCHIDEE/lib
Index: /LMDZ4/trunk/machine/arch-SX8_MERCURE_TRACE.fcm
===================================================================
--- /LMDZ4/trunk/machine/arch-SX8_MERCURE_TRACE.fcm	(revision 783)
+++ /LMDZ4/trunk/machine/arch-SX8_MERCURE_TRACE.fcm	(revision 783)
@@ -0,0 +1,9 @@
+%COMPILER            sxf90
+%LINK                sxf90
+%AR                  sxar
+%MAKE                make
+%FFLAGS              -c -C vsafe -gv -Wf,-pvctl res=whole,-A dbl4,-init stack=nan,-init heap=nan,-ptr byte -EP -R5 -float0 -size_t64 -dw -Wf,"-pvctl loopcnt=999999 fullmsg noassume"
+%FPP_FLAGS           -P -traditional
+%FPP_DEF             NC_DOUBLE BLAS SGEMV=DGEMV SGEMM=DGEMM USE_MPE
+%LD_FLAGS            -size_t64 -lblas -L/home/jderouil/JUMPSHOT/mpich2-1.0.5/src/mpe2/INSTALL2/usr/local/soft/mpe/lib -lmpe_f2cmpi -llmpe -lmpe -lpmpi -lmpi
+ 
Index: /LMDZ4/trunk/machine/arch-SX8_MERCURE_TRACE.path
===================================================================
--- /LMDZ4/trunk/machine/arch-SX8_MERCURE_TRACE.path	(revision 783)
+++ /LMDZ4/trunk/machine/arch-SX8_MERCURE_TRACE.path	(revision 783)
@@ -0,0 +1,7 @@
+set ARCH=SX6
+set NETCDF_LIBDIR=/usr/local/SX8/soft/netcdf/lib
+set NETCDF_INCDIR=/usr/local/SX8/soft/netcdf/include
+set IOIPSL_INCDIR=$WORKDIR/IOIPSL_MPP/src
+set IOIPSL_LIBDIR=$WORKDIR/IOIPSL_MPP/src
+set ORCH_INCDIR=$WORKDIR/ORCHIDEE/lib
+set ORCH_LIBDIR=$WORKDIR/ORCHIDEE/lib
Index: /LMDZ4/trunk/machine/arch-linux-32bit.fcm
===================================================================
--- /LMDZ4/trunk/machine/arch-linux-32bit.fcm	(revision 783)
+++ /LMDZ4/trunk/machine/arch-linux-32bit.fcm	(revision 783)
@@ -0,0 +1,8 @@
+%COMPILER            pgf90
+%LINK                pgf90
+%AR                  ar
+%MAKE                make
+%FFLAGS              -fast
+%FPP_FLAGS           -P -traditional
+%FPP_DEF             
+%LD_FLAGS            -Wl,-Bstatic -L/usr/lib/gcc-lib/i386-linux/2.95.2/
Index: /LMDZ4/trunk/machine/arch-linux-32bit.path
===================================================================
--- /LMDZ4/trunk/machine/arch-linux-32bit.path	(revision 783)
+++ /LMDZ4/trunk/machine/arch-linux-32bit.path	(revision 783)
@@ -0,0 +1,6 @@
+set NETCDF_LIBDIR=/distrib/local/netcdf/pgi_32bits/lib/
+set NETCDF_INCDIR=/distrib/local/netcdf/pgi_32bits/include
+set IOIPSL_INCDIR=/u/fairhead/modipsl_ioipsl_3/lib
+set IOIPSL_LIBDIR=/u/fairhead/modipsl_ioipsl_3/lib
+set ORCH_INCDIR=/u/fairhead/modipsl_ioipsl_3/lib
+set ORCH_LIBDIR=/u/fairhead/modipsl_ioipsl_3/lib
Index: /LMDZ4/trunk/makegcm_fcm
===================================================================
--- /LMDZ4/trunk/makegcm_fcm	(revision 783)
+++ /LMDZ4/trunk/makegcm_fcm	(revision 783)
@@ -0,0 +1,366 @@
+#!/bin/csh
+#
+# $Header$
+#
+# FH : on ne crée plus le fichier arch.mk qui est supposé exister par
+# FH : ailleurs.
+# FH : ultérieurement, ce fichier sera pré-existant pour une série
+# FH : de configurations en versions optimisées et debug qui seront
+# FH : liés (ln -s) avec arch.mk en fonction de l'architecture.
+# FH : Pour le moment, cette version est en test et on peut créer les
+# FH : arch.mk en lançant une première fois makegcm7.
+#
+set verbose echo
+########################################################################
+# options par defaut pour la commande make
+########################################################################
+
+set dim="96x72x19"
+set physique=lmd
+set ntrac = 4
+set filtre=filtrez
+set grille=reg
+set couple=false
+set veget=false
+set chimie=false
+set psmile=false
+set parallel=false
+set io=ioipsl
+
+set LMDGCM=$PWD
+set LIBOGCM=$LMDGCM/libo
+set LIBFGCM=$LMDGCM/libf
+
+########################################################################
+#  Quelques initialisations de variables du shell.
+########################################################################
+
+set CPP_KEY="" 
+set INCLUDE=""
+set LIB=""
+set adjnt=""
+
+
+########################################################################
+# lecture des options de mymake
+########################################################################
+
+top:
+if ($#argv > 0) then
+    switch ($1:q)
+
+    case -h:
+cat <<fin
+manuel complet sur http://...
+Usage :
+makegcm
+[-h]                   : manuel abrégé
+[-d [[IMx]JMx]LM]      : IM, JM, LM sont les dims en x, y, z (def: $dim)
+[-t NTRAC]             : nombre de traceurs (def: 4)
+[-p PHYS]              : compilation avec la physique libf/phyPHYS, (def: lmd)
+[-debug]               : compile avec options debug.
+[-c false/true]        : couplé océan : mpi1/mpi2/false (def: false)
+[-v false/true]        : avec ou sans végétation (def: false)
+[-chimie SCHEMA/false] : nom du schéma chimique ou false (def)
+[-parallel true/false] : parallelisation, en développement (def: false)
+[-g GRI]               : conf. grille dans dyn3d/GRI_xy.h\
+                         (def: reg inclue un zoom)
+[-io IO]               : choix d'une librairie I/O, experts (def: ioipsl)
+[-include INCLUDES]    : variables supplementaires pour include cpp, experts.
+[-adjnt]               : adjoint, a remettre en route ...
+[-filtre NOMFILTRE]    : prend le filtre dans libf/NOMFILTRE (def: filtrez)
+[-link LINKS]          : liens optionels avec d'autres librairies
+[-m arch]              : nom de l'architecture cible
+fin
+	exit
+
+    case -d:
+        set dim=$2 ; shift ; shift ; goto top
+                        
+    case -O:
+        echo "option obsolete dans cette version intermediaire de makegcm"
+	exit
+
+     case -p
+        set physique="$2" ;  shift ; shift ; goto top
+
+     case -g
+        set grille="$2" ; shift ; shift ; goto top
+
+     case -c
+	set couple="$2" ; shift ; shift ; goto top
+
+     case -io
+        set io="$2" ; shift ; shift ; goto top
+
+     case -v
+        set veget="$2" ; shift ; shift ; goto top
+
+     case -chimie
+	set chimie="$2" ; shift ; shift ; goto top
+
+     case -parallel
+        set parallel="$2" ; shift ; shift ; goto top
+  
+     case -t
+        set ntrac=$2 ; shift ; shift ; goto top
+
+     case -include
+        set INCLUDE="$INCLUDE -I$2" ; shift ; shift ; goto top
+
+     case -adjnt
+	echo 'otpion a reactiver ';exit
+        set opt_dep="$opt_dep adjnt" ; set adjnt="-ladjnt -ldyn3d "
+        set optim="$optim -Dadj" ; shift ; goto top
+
+
+     case -filtre
+        set filtre=$2 ; shift ; shift ; goto top
+
+     case -link
+        set LIB="$LIB $2" ; shift ; shift ; goto top
+
+     case -m
+       set arch=$2 ; shift ; shift ; goto top
+       
+     case -debug
+        echo 'option a reactiver' ; exit
+
+     default
+        set code="$1" ; shift ; goto top
+
+   endsw
+endif
+
+
+###############################################################
+# lecture des chemins propres à l'architecture  de la machine #
+###############################################################
+
+rm -f ./arch.path
+ln -s ./machine/arch-${arch}.path ./arch.path
+source arch.path
+
+########################################################################
+# Definition des clefs CPP, des chemins des includes et modules
+#  et des libraries
+########################################################################
+
+
+if ( "$physique" == 'nophys' ) then
+   
+else
+   set CPP_KEY="$CPP_KEY CPP_PHYS"
+endif
+
+
+if ( "$chimie" == 'true' ) then
+    set CPP_KEY="$CPP_KEY INCA"
+    set INCLUDE="$INCLUDE -I${INCA_INCDIR}"
+    set LIB="$LIB -L${INCA_LIBDIR} -lchimie" 
+endif
+
+if ( "$couple" != 'false' ) then
+   set CPP_KEY="$CPP_KEY CPP_COUPLE"
+   set CPP_KEY="$CPP_KEY CPP_PSMILE"
+   set INCLUDE="$INCLUDE -I${OASIS_INCDIR}.$couple"
+   set LIB="$LIB -L${OASIS_LIBDIR} -loasis.$couple"
+endif
+
+if ( "$parallel" == 'true' ) then
+   set CPP_KEY="$CPP_KEY CPP_PARA"
+endif
+
+if ( "$veget" == 'true' ) then
+   set CPP_KEY="$CPP_KEY CPP_VEGET"
+   set INCLUDE="${INCLUDE} -I${ORCH_INCDIR}"
+   set LIB="${LIB} -L${ORCH_LIBDIR} -lsechiba -lparameters -lstomate -lparallel"
+endif
+
+if ( $io == ioipsl ) then
+   set CPP_KEY="$CPP_KEY CPP_IOIPSL"
+   set INCLUDE="$INCLUDE -I${IOIPSL_INCDIR}"
+   set LIB="$LIB -L${IOIPSL_LIBDIR} -lioipsl"
+endif
+
+set INCLUDE="$INCLUDE -I${NETCDF_INCDIR}"
+set LIB="$LIB -L${NETCDF_LIBDIR} -lnetcdf"
+
+
+########################################################################
+# choix du nombre de traceur par defaut si il n'a pas ete choisi,
+# suivant la physique
+########################################################################
+
+if ( $ntrac == 0  ) then
+    if ( "$physique" == 'nophys' ) then
+        set ntrac=1
+    else if ( "$physique" == 'lmd' ) then
+        set ntrac=2
+    else if ( "$physique" == 'lmd_test_li' ) then
+        set ntrac=2
+    else if ( "$physique" == 'ec' ) then
+        set ntrac=1
+    else
+        set ntrac = 1
+    endif
+endif
+
+
+########################################################################
+# calcul du nombre de dimensions
+########################################################################
+
+
+set dim_full=$dim
+set dim=`echo $dim | sed -e 's/[^0-9]/ /g'` 
+set dimc=`echo $dim | wc -w`
+
+echo calcul de la dimension
+echo dim $dim
+echo dimc $dimc
+
+
+########################################################################
+# Gestion des dimensions du modele.
+# on cree ou remplace le fichier des dimensions/nombre de traceur
+########################################################################
+
+cd $LIBFGCM/grid/dimension
+./makdim $ntrac $dim
+cat $LIBFGCM/grid/dimensions.h
+cd $LMDGCM
+
+
+########################################################################
+# Differentes dynamiques (3d, 2d, 1d)
+########################################################################
+
+set dimension=`echo $dim | wc -w`
+echo dimension $dimension
+
+if ( $dimension != 3 ) then
+  echo "Probleme dans les dimensions de la dynamique !!"
+  echo "Non reactive pour l'instant !!!"
+endif
+
+if ( $dimension == 3 ) then
+  cd $LIBFGCM/grid
+  \rm fxyprim.h
+  cp -p fxy_${grille}.h fxyprim.h
+endif
+
+######################################################################
+#   Traitement special pour le nouveau rayonnement de Laurent Li.
+#   ---> YM desactive pour le traitemement en parallele
+######################################################################
+
+#if ( -f $libf/phy$physique/raddim.h ) then
+# if ( -f $libf/phy$physique/raddim.$dimh.h ) then
+#  \rm -f $libf/phy$physique/raddim.h
+#  cp -p $libf/phy$physique/raddim.$dimh.h $libf/phy$physique/raddim.h
+#  echo $libf/phy$physique/raddim.$dimh.h 
+#  cat $libf/phy$physique/raddim.h
+# else
+#  echo On peut diminuer la taille de l executable en creant
+#  echo le fichier $libf/phy$physique/raddim.$dimh.h
+#  \cp -p $libf/phy$physique/raddim.defaut.h $libf/phy$physique/raddim.h
+# endif
+#endif
+
+######################################################################
+# Gestion du filtre qui n'existe qu'en 3d.
+######################################################################
+
+if ( `expr $dimc \> 2` == 1 ) then
+   set filtre="FILTRE=$filtre"
+else
+   set filtre="FILTRE= L_FILTRE= "
+endif
+echo MACRO FILTRE $filtre
+
+echo $dimc
+
+
+
+######################################################################
+# Creation du suffixe de la configuration
+######################################################################
+
+
+set SUFF_NAME=_${dim_full}
+set SUFF_NAME=${SUFF_NAME}_t${ntrac}
+
+if ( "$parallel" == 'true' ) then
+  set SUFF_NAME=${SUFF_NAME}_para
+  set DYN=dyn${dimc}dpar
+else
+  set SUFF_NAME=${SUFF_NAME}_seq
+  set DYN=dyn${dimc}d
+endif
+
+if ( $veget == "true" ) then
+  set SUFF_NAME=${SUFF_NAME}_orch
+endif
+
+if ( $couple != "false" ) then
+  set SUFF_NAME=${SUFF_NAME}_couple
+endif
+
+if ( $chimie == "true" ) then
+  set SUFF_NAME=${SUFF_NAME}_inca
+endif
+ 
+#########################################################
+# On adapte certains include à F90 (mener a disparaitre)
+#########################################################
+#sed -e 's/^c/\!/' $libf/grid/dimensions.h >! $libf/grid/dimensions90.tmp
+#if ( ! -f $libf/grid/dimensions90.h || `diff $libf/grid/dimensions90.tmp $libf/grid/dimensions90.h | wc -w` ) then
+#      \mv $libf/grid/dimensions90.tmp $libf/grid/dimensions90.h
+#endif
+#awk 'BEGIN {} { sub ("^c","\!") ; if ($0 ~ /^     s/) {if (NR > 1) print p0," &"; sub ("     s","     \\&")} else { if (NR > 1) print p0  } p0=$0 } END { print p0}' $libf/dyn3d/paramet.h >! $libf/dyn3d/paramet90.tmp
+#if ( ! -f $libf/dyn3d/paramet90.h || `diff $libf/dyn3d/paramet90.tmp $libf/dyn3d/paramet90.h | wc -w` ) then
+#      \mv $libf/dyn3d/paramet90.tmp $libf/dyn3d/paramet90.h
+#endif
+#awk 'BEGIN {} { sub ("^c","\!") ; if ($0 ~ /^     \./) {if (NR > 1) print p0," &"; sub ("     \.","     \\&")} else { if (NR > 1) print p0  } p0=$0 } END { print p0}' $libf/dyn3d/control.h >! $libf/dyn3d/control.tmp
+#if ( ! -f $libf/dyn3d/control.inc  || `diff $libf/dyn3d/control.tmp $libf/dyn3d/control.inc | wc -w` ) then
+#      \mv $libf/dyn3d/control.tmp $libf/dyn3d/control.inc
+#endif
+#awk 'BEGIN {} { sub ("^c","\!") ; if ($0 ~ /^     S/) {if (NR > 1) print p0," &"; sub ("     S","     \\&")} else { if (NR > 1) print p0  } p0=$0 } END { print p0}' $libf/phylmd/YOMCST.h >! $libf/phylmd/YOMCST.tmp
+#if ( ! -f $libf/phylmd/YOMCST.inc  || `diff $libf/phylmd/YOMCST.tmp $libf/phylmd/YOMCST.inc | wc -w` ) then
+#      \mv $libf/phylmd/YOMCST.tmp $libf/phylmd/YOMCST.inc
+#endif
+#awk 'BEGIN {} { sub ("^c","\!") ; if ($0 ~ /^     S/) {if (NR > 1) print p0," &"; sub ("     S","     \\&")} else { if (NR > 1) print p0  } p0=$0 } END { print p0}' $libf/phylmd/clesphys.h >! $libf/phylmd/clesphys.tmp
+#if ( ! -f $libf/phylmd/clesphys.inc  || `diff $libf/phylmd/clesphys.tmp $libf/phylmd/clesphys.inc | wc -w` ) then
+#      \mv $libf/phylmd/clesphys.tmp $libf/phylmd/clesphys.inc
+#endif
+
+#########################################################
+
+cd $LMDGCM
+set config_fcm="config.fcm"
+rm -f $config_fcm
+touch $config_fcm
+rm -f bin/${code}${SUFF_NAME}.e
+rm -f arch.fcm
+
+echo "%ARCH          $arch"          >> $config_fcm
+echo "%INCDIR        $INCLUDE"       >> $config_fcm 
+echo "%LIB           $LIB"           >> $config_fcm
+echo "%ROOT_PATH     $PWD"           >> $config_fcm
+echo "%LIBF          $LIBFGCM"       >> $config_fcm
+echo "%LIBO          $LIBOGCM"       >> $config_fcm
+echo "%DYN           $DYN"           >> $config_fcm
+echo "%PHYS          phy${physique}" >> $config_fcm
+echo "%CPP_KEY       $CPP_KEY"       >> $config_fcm
+echo "%EXEC          $code"          >> $config_fcm
+echo "%SUFF_NAME     $SUFF_NAME"     >> $config_fcm
+
+ln -s machine/arch-${arch}.fcm arch.fcm
+./build_gcm
+
+rm -f tmp_src
+rm -f config
+ln -s $LIBOGCM/${arch}${SUFF_NAME}/.config config
+ln -s $LIBOGCM/${arch}${SUFF_NAME}/.config/tmp tmp_src
+#\rm -f $libf/grid/dimensions.h
