Index: BOL/LMDZ_Setup_amaury/main.sh
===================================================================
--- BOL/LMDZ_Setup_amaury/main.sh	(revision 4953)
+++ BOL/LMDZ_Setup_amaury/main.sh	(revision 4954)
@@ -39,5 +39,5 @@
 # Version of the tar file on https://lmdz.lmd.jussieu.fr/pub/src
 # Last "testing" version, thoroughly checked by the LMDZ team : contains LMDZ rev 4729 (2023-10-22)
-# TODO move to expert-level settings
+# TODO move to expert-level settings ?
 version="20240308.trunk" #!! DON'T CHANGE IT WITHOUT CHECKING WITH LMDZ TEAM !!
 svn="" 			 #!! DON'T CHANGE IT WITHOUT CHECKING WITH LMDZ TEAM !!
@@ -48,7 +48,4 @@
 # Grid number of points IMxJMxLM
 resol="144x142x79"
-
-# Whether to install the model: "-install" to install the model, else ""
-install="-install"
 
 # Using XIOS for IOs: "-xios" for enabled, else ""
@@ -133,6 +130,6 @@
     # launching setup.sh with the options defined in this main.sh. 
     # Remember: some other options are only available in lmdz_env.sh and setup.sh.
-    # TODO clarifier la diff entre $phys et $lmd_phys ?
-    ./setup.sh -v "$version" "$svn" -d "$resol" "$install" "$cosp" "$xios" -init "$init" -climato "$climato" "$nudging" -f "$freq" -mthini "$mthini" -mthend "$mthend" -p "$lmd_phys" -name "$name"
+    # shellcheck disable=SC2086
+    ./setup.sh -v "$version" -d "$resol" -mthini "$mthini" -mthend "$mthend" -init "$init" -climato "$climato" -f "$freq" -p "$lmd_phys" -name "$name" $cosp $xios $nudging $svn
   else
     echo "File $deffile inexistent"; exit 1
Index: BOL/LMDZ_Setup_amaury/setup.sh
===================================================================
--- BOL/LMDZ_Setup_amaury/setup.sh	(revision 4953)
+++ BOL/LMDZ_Setup_amaury/setup.sh	(revision 4954)
@@ -69,5 +69,5 @@
 
 function load_install_lib {
-  # Fetch and source install_lmdz.sh
+  # Fetch and source install_lmdz.sh to get `myget`
   if [[ ! -f "install_lmdz.sh" ]]; then
     wget "http://svn.lmd.jussieu.fr/LMDZ/BOL/script_install_amaury/install_lmdz.sh" # TODO change to normal branch once ready
@@ -103,4 +103,25 @@
 
   LIMIT="LIMIT"
+
+  ######################################################################
+  # Choix du nombre de processeurs
+  # NOTES :
+  # omp=8 by default (for Jean-Zay must be a divisor of 40 procs/node), but we need
+  #   omp=1 for SPLA (only MPI parallelisation)
+  #   omp=2 for veget=CMIP6 beacause of a bug in ORCHIDEE/src_xml/xios_orchidee.f90
+  ######################################################################
+  jm=$(echo "$resol" | cut -dx -f2)
+  (( mpi = ( jm + 1 ) / 2 ))
+  omp=8
+  if [[ $aerosols = "spla" ]]; then omp=1; fi
+  if [[ $veget = "CMIP6" && $xios = "y" ]]; then omp=2; fi
+  if [[ $mpi -gt $NB_MPI_MAX ]]; then mpi=$NB_MPI_MAX; fi
+  if [[ $omp -gt $NB_OMP_MAX ]]; then omp=$NB_OMP_MAX; fi
+
+  case $rad in
+    oldrad) iflag_rrtm=0; NSW=2;;
+    rrtm)   iflag_rrtm=1; NSW=6;;
+    ecrad)  iflag_rrtm=2; NSW=6;;
+  esac
 }
 
@@ -111,6 +132,6 @@
        setup.sh can be launched/driven by main.sh; some options can only be specified in setup.sh (ex: veget, aerosols).
              setup.sh [-v version] [-r svn_release] [-init INIT] [-d 96x95x79] [-f mo] [-nudging]
-             "version" like 20150828.trunk; see https://lmdz.lmd.jussieu.fr/Distrib/LISMOI.trunk (default <$version>)
-             "svn_release"      either the svn release number or "last" (default <$svn>)
+             -v "version" like 20150828.trunk; see https://lmdz.lmd.jussieu.fr/Distrib/LISMOI.trunk (default <$version>)
+             -r "svn_release"      either the svn release number or "last" (default <$svn>)
              -d IMxJMxLM        to run in resolution IM x JM x LM (default <$resol>)
              -install           pour installer et compiler le modele
@@ -138,5 +159,5 @@
       "-mthini") mthini=$2; shift; shift;;
       "-mthend") mthend=$2; shift; shift;;
-      *) $0 -h; exit
+      *) echo "unexpected $1"; $0 -h; exit
     esac
   done
@@ -206,5 +227,135 @@
   ./install_lmdz_options.$$.sh
   mv install_lmdz.sh install_lmdz.$$.sh
-  cd -
+  cd "$local"
+}
+
+function setup_def {  # modify various .def (+ xios xml as needed)
+  cd "$local"
+
+  # Utilisation des .def_iso pour LMDZ-ISOtopes
+  if [[ $phylmd = "lmdiso" ]]; then
+    for file_iso in $(ls DEF | grep _iso); do
+      cp DEF/"$file_iso" DEF/"${file_iso%%_iso}"
+    done
+  fi
+
+  ######################################################################
+  # Choix de la grille verticale
+  ######################################################################
+  lm=$(echo "$resol" | cut -dx -f3)
+  if [ ! -f "DEF/L$lm.def" ]; then
+    echo "STOP: Résolution verticale non prévue - créer un fichier DEF/L$lm.def"; exit 1
+  else
+    sed -i'' -e "s/INCLUDEDEF=L.*.def/INCLUDEDEF=L$lm.def/" DEF/run.def
+  fi
+
+  ######################################################################
+  # Changements dans les fichiers DEF/*def
+  # (ils vont se repercuter dans les repertoires de simulation $local/$SIM et de run $WRK)
+  ######################################################################
+
+  # Choix du fichier traceur.def coherent avec l'option "aerosols"
+  #  NOTE : Le nouveau tracer.def_nospla par defaut n'inclut pas Rn-Pb;
+  #		si on les veut, il faut utiliser ci-dessous; a la place, tracer_RN_PB.def
+  #---------------------------------------------------------------------
+  # NB: Si on change de traceur.def (entre spla et nospla), il faut refaire l'etape "initialisation" (ce0l)?
+  # Normalement les traceurs absents de start* files sont initialises=0 dans le code; verifier pour spla !
+  if [[ $aerosols = "spla" ]]; then
+    # ancien traceur pour l instant
+    cp DEF/traceur.def_spla DEF/traceur.def
+  elif [[ $phylmd = "lmdiso" ]]; then
+    # nouveau traceur , déjà copié si 'y'
+    cp DEF/tracer.def_nospla DEF/tracer.def
+  fi
+
+  # TEMPORAIREMENT pour spla on force l'utilisation de gcm.def_zNAfrica_BiJe (avec resolution 128x88x79)
+  #----------------------------------------------------------------------
+  if [[ $aerosols = spla ]]; then cp DEF/gcm.def_zNAfrica_BiJe DEF/gcm.def; fi
+
+  # Inscription du choix ok_guide dans DEF/guide.def
+  #---------------------------------------------------------------------
+  sed -i'' -e 's/ok_guide=.*.$/ok_guide='$ok_guide'/' DEF/guide.def
+
+  # Inscription du type de calendrier (qui est fonction de $climato) dans DEF/run.def
+  #---------------------------------------------------------------------
+  # NB Contrairement a ce qui est ecrit dans les fichiers run.def standard,
+  # dans ce tutorial le choix earth_365d n'est pas disponible, et earth_366d s'appelle gregorian
+  if [[ $climato = 0 ]]; then calend="gregorian"; else calend="earth_360d"; fi
+  sed -i'' -e 's/calend=.*.$/calend='$calend'/' DEF/run.def
+
+  # Changements dans config.def (pre-choisi, et regle pour output si utilisation avec IOIPSL)
+  #   cf options veget, aerosols, cosp, xios
+  #---------------------------------------------------------------------
+  if [[ $veget = NONE ]]; then  VEGET="n"; else VEGET="y"; fi
+  sed -i'' -e 's/VEGET=.*.$/VEGET='$VEGET'/' DEF/config.def
+
+  if [[ $aerosols = "n" ]]; then
+    # set flag_aerosols=0 and flags ok_ade&co=n
+    sed -i'' -e 's/^ok_cdnc=.*.$/ok_cdnc=n/' -e 's/^ok_ade=.*.$/ok_ade=n/' -e 's/^ok_aie=.*.$/ok_aie=n/' -e 's/^ok_alw=.*.$/ok_alw=n/' -e 's/^flag_aerosol=.*.$/flag_aerosol=0/' DEF/config.def
+  fi
+
+  # COSP : ok_cosp desactive COSP si on a compile avec; il ne l'active pas si on a compile sans
+  sed -i'' -e 's/ok_cosp.*.$/ok_cosp='$cosp'/' DEF/config.def
+  if [[ $cosp = "y" ]]; then \cp -f "$MODEL"/DefLists/cosp*.txt "$local"/DEF/; fi
+
+  # Sorties LMDZ en fonction de l'option "xios"
+  sed -i'' -e 's/ok_all_xml=.*.$/ok_all_xml='$xios'/' DEF/config.def
+
+  # Ajuster physiq.def en fonction de radiative code (default: values for rad=rrtm)
+  #   Pour isotopes=y , mettre iflag_ice_thermo=0 au lieu de 1
+  #---------------------------------------------------------------------
+  sed -i'' -e 's/iflag_rrtm=.*.$/iflag_rrtm='"$iflag_rrtm"'/' -e 's/NSW=.*.$/NSW='"$NSW"'/' DEF/physiq.def
+  sed -i'' -e 's:directory_name.*$:directory_name="'"$local"'/ecrad_data",:' DEF/namelist_ecrad
+
+  if [[ $phylmd = "lmdiso" ]]; then iflag_ice_thermo=0; else iflag_ice_thermo=1; fi
+  sed -i -e 's/iflag_ice_thermo=.*.$/iflag_ice_thermo='$iflag_ice_thermo'/' DEF/physiq.def
+
+  # Choix de orchidee.def en fonction de orchidee_rev; modification pour xios
+  #  NOTE separate orchidee_pft.def file for ORCHIDEE trunk post-CMIP6
+  #---------------------------------------------------------------------
+  orchidee_def=orchidee.def_6.1
+  orchidee_pft_def=""
+  if [[ $veget = "7983" ]]; then
+    orchidee_def=orchidee.def_6.2work
+  elif [[ $veget = "7994" ]]; then
+    orchidee_def=orchidee.def_6.4work
+    orchidee_pft_def=orchidee_pft.def_6.4work
+    if ! grep "INCLUDEDEF=orchidee_pft.def" DEF/run.def; then
+      sed -i'' -e 's/INCLUDEDEF=orchidee.def/INCLUDEDEF=orchidee.def\nINCLUDEDEF=orchidee_pft.def/' DEF/run.def; fi
+  fi
+  cp -f DEF/$orchidee_def DEF/orchidee.def
+  if [[ $orchidee_pft_def != "" ]]; then cp -f DEF/$orchidee_pft_def DEF/orchidee_pft.def; fi
+
+  # Only for veget=CMIP6 it is still possible to use IOIPSL; newer versions of orchidee.def have XIOS_ORCHIDEE_OK = y
+  sed -i'' -e 's/XIOS_ORCHIDEE_OK =.*.$/XIOS_ORCHIDEE_OK = '$xios'/' DEF/orchidee.def
+
+  ######################################################################
+  # Si on tourne avec XIOS, mise a jour des fichiers context et field* dans XMLfilesLMDZ
+  # (ils vont se repercuter dans les repertoires de simulation $local/$SIM et de run $WRK)
+  ######################################################################
+  if [[ $xios = y ]]; then
+    cp -f "$MODEL"/DefLists/context_lmdz.xml "$local"/DEF/XMLfilesLMDZ/.
+    cp -f "$MODEL"/DefLists/field_def_lmdz.xml "$local"/DEF/XMLfilesLMDZ/.
+    if [[ $cosp = y ]]; then cp -f "$MODEL"/DefLists/field_def_cosp1.xml "$local"/DEF/XMLfilesLMDZ/.; fi
+  fi
+}
+
+function setup_init { # Verification de l'existance de l'état initial et compilation eventuelle pour sa creation
+  if [[ ! -d $INIT ]]; then
+    if [[ $init = 0 ]]; then
+      echo "STOP: Récuperer les repertoires $INIT ou lancer avec option -init"; exit 1
+    else
+      # Compile ce0l
+      cd "$MODEL"
+      sed -e 's/gcm$/ce0l/' compile.sh > compile_ce0l.sh; chmod +x compile_ce0l.sh
+      echo "Compiling ce0l"
+      if ! ./compile_ce0l.sh &> ce0l.log; then echo "STOP: ce0l compilation failed, see $MODEL/ce0l.log"; exit 1; fi
+      echo "Compiled ce0l"
+
+      cd "$local"
+    fi
+  elif [[ $init = 1 ]]; then
+    echo "STOP: Vous essayez d initialiser le modele mais $INIT existe deja"; exit 1
+  fi
 }
 
@@ -223,4 +374,6 @@
 ensure_correct_option_combinations
 install_model
+setup_def
+setup_init
 
 exit 1
@@ -230,166 +383,18 @@
 #-------------------------------------------------------
 if [[ $rad = "ecrad" && ! -d ecrad_data ]]; then
-    cd $local; wget https://lmdz.lmd.jussieu.fr/pub/3DInputData/ecrad/ecrad_data.tar; tar xvf ecrad_data.tar; cd -
-fi
-
-if [ "$rad" = "ecrad" -a "$aerosols" != "n" -a "$mysvn" -lt 4489 ] ; then echo "Les aerosols tropospheriques ne sont pas pris en charge par ecrad avant LMDZ rev 4489, ici rev est $mysvn"; exit 1; fi
-
-
-######################################################################
-# Choix du nombre de processeurs
-# NOTES : 
-# omp=8 by default (for Jean-Zay must be a divisor of 40 procs/node), but we need 
-#   omp=1 for SPLA (only MPI parallelisation)
-#   omp=2 for veget=CMIP6 beacause of a bug in ORCHIDEE/src_xml/xios_orchidee.f90
-######################################################################
-
-cd "$local"
-
-jm=$(echo "$resol" | cut -dx -f2)
-(( mpi = ( jm + 1 ) / 2 ))
-omp=8
-if [[ $aerosols = "spla" ]]; then omp=1; fi
-if [[ $veget = "CMIP6" && $xios = "y" ]]; then omp=2; fi
-if [[ $mpi -gt $NB_MPI_MAX ]]; then mpi=$NB_MPI_MAX; fi
-if [[ $omp -gt $NB_OMP_MAX ]]; then omp=$NB_OMP_MAX; fi
-
-# Utilisation des .def_iso pour LMDZ-ISOtopes
-if [[ $phylmd = "lmdiso" ]]; then
-  for file_iso in $(ls DEF | grep _iso); do
-    cp DEF/"$file_iso" DEF/"${file_iso%%_iso}"
-  done
-fi
-
-######################################################################
-# Choix de la grille verticale
-######################################################################
-lm=$(echo "$resol" | cut -dx -f3)
-if [ ! -f "DEF/L$lm.def" ]; then
-  echo "STOP: Résolution verticale non prévue - créer un fichier DEF/L$lm.def"; exit 1
-else
-  sed -i'' -e "s/INCLUDEDEF=L.*.def/INCLUDEDEF=L$lm.def/" DEF/run.def
-fi
-
-######################################################################
-# Changements dans les fichiers DEF/*def
-# (ils vont se repercuter dans les repertoires de simulation $local/$SIM et de run $WRK)
-######################################################################
-
-# Choix du fichier traceur.def coherent avec l'option "aerosols"
-#  NOTE : Le nouveau tracer.def_nospla par defaut n'inclut pas Rn-Pb; 
-#		si on les veut, il faut utiliser ci-dessous; a la place, tracer_RN_PB.def
-#---------------------------------------------------------------------
-# NB: Si on change de traceur.def (entre spla et nospla), il faut refaire l'etape "initialisation" (ce0l)? 
-# Normalement les traceurs absents de start* files sont initialises=0 dans le code; verifier pour spla !  
-if [[ $aerosols = "spla" ]]; then
-   # ancien traceur pour l instant
-   cp DEF/traceur.def_spla DEF/traceur.def
-elif [[ $phylmd = "lmdiso" ]]; then
-   # nouveau traceur , déjà copié si 'y'
-   cp DEF/tracer.def_nospla DEF/tracer.def  
-fi
-
-# TEMPORAIREMENT pour spla on force l'utilisation de gcm.def_zNAfrica_BiJe (avec resolution 128x88x79)
-#----------------------------------------------------------------------
-if [[ $aerosols = spla ]]; then cp DEF/gcm.def_zNAfrica_BiJe DEF/gcm.def; fi
-
-# Inscription du choix ok_guide dans DEF/guide.def
-#---------------------------------------------------------------------
-sed -i -e 's/ok_guide=.*.$/ok_guide='$ok_guide'/' DEF/guide.def
-
-# Inscription du type de calendrier (qui est fonction de $climato) dans DEF/run.def
-#---------------------------------------------------------------------
-# NB Contrairement a ce qui est ecrit dans les fichiers run.def standard, 
-# dans ce tutorial le choix earth_365d n'est pas disponible, et earth_366d s'appelle gregorian
-if [ $climato = 0 ]; then calend=gregorian; else calend=earth_360d; fi
-sed -i -e 's/calend=.*.$/calend='$calend'/' DEF/run.def
-
-# Changements dans config.def (pre-choisi, et regle pour output si utilisation avec IOIPSL) 
-#   cf options veget, aerosols, cosp, xios
-#---------------------------------------------------------------------
-if [ $veget = NONE ]; then  VEGET=n; else VEGET=y; fi
-sed -i -e 's/VEGET=.*.$/VEGET='$VEGET'/' DEF/config.def
-
-if [ $aerosols = n ]; then
-  # set flag_aerosols=0 and flags ok_ade&co=n
-  sed -i'' -e 's/^ok_cdnc=.*.$/ok_cdnc=n/' -e 's/^ok_ade=.*.$/ok_ade=n/' -e 's/^ok_aie=.*.$/ok_aie=n/' -e 's/^ok_alw=.*.$/ok_alw=n/' -e 's/^flag_aerosol=.*.$/flag_aerosol=0/' DEF/config.def
-fi
-
-# COSP : ok_cosp desactive COSP si on a compile avec; il ne l'active pas si on a compile sans 
-sed -i -e 's/ok_cosp.*.$/ok_cosp='$cosp'/' DEF/config.def
-if [ $cosp = y ]; then \cp -f $MODEL/DefLists/cosp*.txt $local/DEF/; fi
-
-# Sorties LMDZ en fonction de l'option "xios"
-sed -i'' -e 's/ok_all_xml=.*.$/ok_all_xml='$xios'/' DEF/config.def
-
-# Ajuster physiq.def en fonction de radiative code (default: values for rad=rrtm)
-#   Pour isotopes=y , mettre iflag_ice_thermo=0 au lieu de 1
-#---------------------------------------------------------------------
-sed -i'' -e 's/iflag_rrtm=.*.$/iflag_rrtm='$iflag_rrtm'/' -e 's/NSW=.*.$/NSW='$NSW'/' DEF/physiq.def
-pwd
-sed -i'' -e 's:directory_name.*$:directory_name="'$local'/ecrad_data",:' DEF/namelist_ecrad
-
-if [ $isotopes = y ]; then iflag_ice_thermo=0; else iflag_ice_thermo=1; fi
-sed -i -e 's/iflag_ice_thermo=.*.$/iflag_ice_thermo='$iflag_ice_thermo'/' DEF/physiq.def
-
-# Choix de orchidee.def en fonction de orchidee_rev; modification pour xios
-#  NOTE separate orchidee_pft.def file for ORCHIDEE trunk post-CMIP6  
-#---------------------------------------------------------------------
-orchidee_def=orchidee.def_6.1
-orchidee_pft_def=""
-if [ $veget = "7983" ]; then 
-  orchidee_def=orchidee.def_6.2work 
-elif [ $veget = "7994" ]; then 
-  orchidee_def=orchidee.def_6.4work
-  orchidee_pft_def=orchidee_pft.def_6.4work
-  if ! grep "INCLUDEDEF=orchidee_pft.def" DEF/run.def; then
-    sed -i'' -e 's/INCLUDEDEF=orchidee.def/INCLUDEDEF=orchidee.def\nINCLUDEDEF=orchidee_pft.def/' DEF/run.def; fi
-fi
-\cp -f DEF/$orchidee_def DEF/orchidee.def
-if [ "$orchidee_pft_def" != "" ]; then \cp -f DEF/$orchidee_pft_def DEF/orchidee_pft.def; fi
-
-# Only for veget=CMIP6 it is still possible to use IOIPSL; newer versions of orchidee.def have XIOS_ORCHIDEE_OK = y
-sed -i'' -e 's/XIOS_ORCHIDEE_OK =.*.$/XIOS_ORCHIDEE_OK = '$xios'/' DEF/orchidee.def
-
-
-######################################################################
-# Si on tourne avec XIOS, mise a jour des fichiers context et field* dans XMLfilesLMDZ
-# (ils vont se repercuter dans les repertoires de simulation $local/$SIM et de run $WRK)
-######################################################################
-if [ $xios = y ]; then
-  \cp -f $MODEL/DefLists/context_lmdz.xml $local/DEF/XMLfilesLMDZ/.
-  \cp -f $MODEL/DefLists/field_def_lmdz.xml $local/DEF/XMLfilesLMDZ/.
-  if [ $cosp = y ]; then \cp -f $MODEL/DefLists/field_def_cosp1.xml $local/DEF/XMLfilesLMDZ/.; fi
-fi
-
-
-######################################################################
-# Verification de l'existance de l'etat initial et compilation eventuelle
-# pour sa creation
-######################################################################
-if [ ! -d $INIT ]; then 
-   if [ $init = 0 ]; then
-      echo  Recuperer les repertoires $INIT ou lancer avec option -init; exit
-   else
-      ce0l=$MODEL/bin/ce0l${suffix}.e
-      echo $ce0l
-
-      # Test if $ce0l exists (it may be the case if you use a model configuration already installed and compiled)
-      if [ ! -f $ce0l ]; then
-       echo L executable $ce0l n existe pas
-       echo il va se compiler automatiquement sur $MODEL
-       sleep 10
-
-       $local/compile.sh ce0l
-     fi
-
-     if [ ! -f $ce0l ]; then echo la compilation de $ce0l a echoue; exit; fi
-
-      cd $local
-   fi
-elif [ $init = 1 ]; then
-   echo Vous essayez d initialiser le modele mais $INIT existe deja
-   exit
-fi
+    cd "$local"; wget https://lmdz.lmd.jussieu.fr/pub/3DInputData/ecrad/ecrad_data.tar; tar xvf ecrad_data.tar; cd -
+fi
+
+if [[ $rad = "ecrad" && $aerosols != "n" && $mysvn -lt 4489 ]] ; then echo "Les aerosols tropospheriques ne sont pas pris en charge par ecrad avant LMDZ rev 4489, ici rev est $mysvn"; exit 1; fi
+
+
+
+
+
+
+
+
+
+
 
 MAINDIR=`basename \`pwd\``
