Index: trunk/LMDZ.GENERIC/makegcm_gfortran
===================================================================
--- trunk/LMDZ.GENERIC/makegcm_gfortran	(revision 646)
+++ trunk/LMDZ.GENERIC/makegcm_gfortran	(revision 671)
@@ -14,4 +14,5 @@
 set dyntype="dyn"
 set bands="32x36"
+set scatterers="1"
 ########################################################################
 # path a changer contenant les sources et les objets du modele
@@ -243,26 +244,23 @@
 
 
-
-
-Par default, la commande makegcm:
----------------------------------
-
-1. compile une serie de sous programmes se trouvant dans des sous-repertoires
-de $LMDGCM/libf.
-Les sous programmes sont ensuite stokes sur dans des librairies FORTRAN
-sur $LIBOGCM.
-
-2. Ensuite, makegcm compile le programme prog.f se trouvant par default sur
-$LMDGCM/libf/dyn3d et effectue le lien avec l ensemble des librairies.
-
-La variable '$LMDGCM' doit etre initialisee dans votre .cshrc ou en dur
-dans la comande makegcm.
-
-La commande makegcm est faite pour permettre de gerer en parallele des
-versions differentes du modele, compilees avec des options de compilation
-et des dimensions differentes sans avoir a chaque fois a recompiler tout
-le modele.
-
-Les librairies FORTRAN sont stoquees sur le directory $LIBOGCM.
+The makegcm script:
+-------------------
+
+1. compiles a series of subroutines located in the $LMDGCM/libf
+ sub-directories.
+ The objects are then stored in the libraries in $LIBOGCM.
+
+2. then, makegcm compiles program prog.f located by default in
+$LMDGCM/libf/dyn3d and makes the link with the libraries.
+
+Environment Variables '$LMDGCM' and '$LIBOGCM'
+ must be set as environment variables or directly
+ in the makegcm file.
+
+The makegcm command is used to control the different versions of the model
+ in parallel, compiled using the compilation options 
+ and the various dimensions, without having to recompile the whole model.
+
+The FORTRAN libraries are stored in directory $LIBOGCM.
 
 
@@ -270,66 +268,68 @@
 --------
 
-Les options suivantes peuvent etre definies soit par defaut en editant le
-"script" makegcm, soit en interactif:
-
--d imxjmxlm  ou im, jm, et lm sont resp. le nombre de longitudes, latitudes
-             et couches verticales. 
-
--t ntrac   selectionne le nombre de traceur advectes par la dynamique.
-           Dans les versions courantes du modele terrestre on a par exemple
-           ntrac=2 pour l'eau vapeur et liquide
-
-             L'effet des options -d et -t est d'ecraser le fichier 
+The following options can either be defined by default by editing the
+makegcm "script", or in interactive mode:
+
+-d imxjmxlm  where im, jm, and lm are the number of longitudes,
+             latitudes and vertical layers respectively.
+
+-t ntrac   Selects the number of tracers present in the model
+
+             Options -d and -t overwrite file 
              $LMDGCM/libf/grid/dimensions.h
-             qui contient sous forme de 4 PARAMETER FORTRAN les 3 dimensions
-             de la grille horizontale im, jm, lm plus le nombre de traceurs
-             advectes passivement par la dynamique ntrac, par un nouveu fichier
+             which contains the 3 dimensions of the
+             horizontal grid 
+             im, jm, lm plus the number of tracers passively advected
+             by the dynamics ntrac,
+             in 4 PARAMETER FORTRAN format 
+             with a new file:
              $LMDGCM/libf/grid/dimension/dimensions.im.jm.lm.tntrac
-             Si ce fichier n'existe pas encore, il est cree par le script
+             If the file does not exist already
+             it is created by the script
              $LMDGCM/libf/grid/dimension/makdim
 
--p PHYS    pour selectionner le jeu de parametrisations physiques avec
-           lequel on veut compiler le modele.
-           Le modele sera alors compile en prenant les sources des
-           parametrisations physiques dans le repertoire:
+-s nscat   Number of radiatively active scatterers
+
+-p PHYS    Selects the set of physical parameterizations
+           you want to compile the model with.
+           The model is then compiled using the physical
+           parameterization sources in directory:
             $LMDGCM/libf/phyPHYS
 
--g grille  selectionne le type de grille qu'on veut utiliser.
-           L'effet de cette option est d'ecraser le fichier
+-g grille  Selects the grid type.
+           This option overwrites file
            $LMDGCM/libf/grid/fxyprim.h
-           avec le fichier
+           with file
            $LMDGCM/libf/grid/fxy_grille.h
-           grille peut prendre les valeurs:
-           1. reg pour la grille reguliere
-           2. sin pour avoir des points equidistants en sinus de la latitude
-           3. new pour pouvoir zoomer sur une partie du globe
-
--O "optimisation fortran" ou les optimisations fortran sont les options de la
-            commande f77
+           the grid can take the following values:
+           1. reg - the regular grid
+           2. sin - to obtain equidistant points in terms of sin(latitude)
+           3. new - to zoom into a part of the globe
+
+-O "compilation options" set of fortran compilation options to use
 
 -include path
-           Dans le cas ou on a dans des sous programmes des fichiers 
-           #include (cpp) qui se trouve sur des repertoires non references
-           par defaut
-
--adjnt     Pour compiler la l'adjoint du code dynamique
+           Used if the subroutines contain #include files (ccp) that 
+           are located in directories that are not referenced by default.
+
+-adjnt     Compiles the adjoint model to the dynamical code.
 
 -olddyn    To compile GCM with "old dynamics"
 
--filtre  filtre
-           Pour choisir le filtre en longitude dans les regions polaires.
-           "filtre" correspond au nom d'un repertoire se trouvant sur
-           $LMDGCM/libf. Le filtre standard du modele est "filtrez" qui peut
-           etre utilise aussi bien pour une grille reguliere que pour une 
-           grille zoomee en longitude.
+-filtre  filter
+           To select the longitudinal filter in the polar regions.
+           "filter" corresponds to the name of a directory located in
+           $LMDGCM/libf. The standard filter for the model is "filtrez"
+           which can be used for a regular grid and for a  
+           grid with longitudinal zoom.
 
 -link "-Ldir1 -lfile1 -Ldir2 -lfile2 ..."
-          Pour rajouter un lien avec les librairies FORTRAN
-          libfile1.a, libfile2.a ... se trouvant respectivement sur les
-          repertoires dir1, dir2 ...
-          Si dirn est un repertoire dont le chemin est automatique (comme
-          par exemple /usr/lib ...) il n'est pas besoin de specifier -Ldirn.
-
-Auteur: Frederic Hourdin  (hourdin@lmd.jussieu.fr)
+           Adds a link to FORTRAN libraries
+           libfile1.a, libfile2.a ... 
+           located in directories dir1, dir2 ...respectively
+           If dirn is a directory with an automatic path 
+           (/usr/lib ... for example) 
+           there is no need to specify  -Ldirn.
+
 eod
 exit
@@ -347,4 +347,7 @@
      case -p
         set physique="$2" ; set phys="PHYS=$physique" ; shift ; shift ; goto top
+
+     case -s
+        set scatterers="$2" ; shift ; goto top
 
      case -g
@@ -408,23 +411,4 @@
 if ( "$physique" == 'nophys' ) then
    set phys="L_PHY= LIBPHY="
-endif
-
-########################################################################
-# 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
 
@@ -479,7 +463,7 @@
 # build final name of libraries directory:
 if ( "$dyntype" == "olddyn" ) then
-  set nomlib=${nomlib}_${dim_}_t${ntrac}_${grille}_olddyn
-else
-  set nomlib=${nomlib}_${dim_}_t${ntrac}_${grille}
+  set nomlib=${nomlib}_${dim_}_t${ntrac}_s${scatterers}_${grille}_olddyn
+else
+  set nomlib=${nomlib}_${dim_}_t${ntrac}_s${scatterers}_${grille}
 endif
 
@@ -536,7 +520,8 @@
   echo "Do you want to continue?"
   if ( $< == "yes" ) then
-    #remove old dimensions.h file
-    \rm $libf/grid/dimensions.h
-    \rm $libf/grid/bands.h
+    #remove old dimensions.h , bands.h and scatterers.h files
+    \rm -f $libf/grid/dimensions.h
+    \rm -f $libf/grid/bands.h
+    \rm -f $libf/phy${physique}/scatterers.h
   else
     exit
@@ -554,4 +539,10 @@
 # echo contents of bands.h to standard output
 cat $libf/grid/bands.h
+
+# Build the appropriate 'scatterers.h' file
+cd $libf/phy$physique/scatterers
+./make_scatterers $scatterers
+# echo contents of scatterers.h to standard output
+cat $libf/phy$physique/scatterers.h
 
 cd $LMDGCM
@@ -582,21 +573,4 @@
   cp -p fxy_${grille}.h fxyprim.h
 endif
-
-######################################################################
-#   Traitement special pour le nouveau rayonnement de Laurent Li.
-######################################################################
-#if ( -f $libf/phy$physique/raddim.h ) then
-#  if ( -f $libf/phy$physique/raddim.$dimh.h ) then
-#    \rm $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.$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
 
 ######################################################################
@@ -710,44 +684,4 @@
   set make="make RANLIB=ranlib"
 endif
-
-
-
-#
-# les deux test suivants sont "temporaires" pour pallier des "faiblesses" du 
-# compilateur fortran Sun: f90: SC4.0 11 Sep 1995 FORTRAN 90 1.1
-#
-#if ($code == 'create_limit' && $SUN) then
-#   set link=f77
-#   set opt_link="-L$NCDFLIB -lnetcdf"
-#endif
-
-#if ($code == 'create_etat0' && $SUN) then
-#   if ( ! -f $libo/libdyn3d.a ) then
-#     echo "Priere de compiler gcm en premier pour des raisons d'optimisation"
-#     \rm $libf/grid/dimensions.h
-#     exit
-#   endif
-#   set optim90=" -dalign -fixed "
-#   set opt_link="-L$IOIPSLDIR -lioipsl  -L$NCDFLIB -lnetcdf"
-#   set link="$f90 $optim90"
-#   touch $LMDGCM/libf/dyn3d/startvar.F
-#   touch $LMDGCM/libf/dyn3d/etat0_netcdf.F
-#endif
-
-#
-# Encore un test temporaire: probleme de compilation sur VPP
-# l'optimisation de startvar se passe mal
-#
-#if ($code == 'create_etat0' && $VPP) then
-#   if ( ! -f $libo/libdyn3d.a ) then
-#     echo "Priere de compiler gcm en premier pour des raisons d'optimisation"
-#     \rm $libf/grid/dimensions.h                                             
-#     exit                       
-#   endif
-#   set optim90="$optim90"" -X9 -w"
-#   set opt_link="-L$NCDFLIB -lnetcdf"
-#   touch $LMDGCM/libf/dyn3d/startvar.F
-#   touch $LMDGCM/libf/dyn3d/etat0_netcdf.F
-#endif
 
 #
@@ -854,4 +788,5 @@
 PROG=$code
 
-\rm $libf/grid/dimensions.h
-\rm $libf/grid/bands.h
+\rm -f $libf/grid/dimensions.h
+\rm -f $libf/grid/bands.h
+\rm -f $libf/phy$physique/scatterers.h
