diff --git a/README.md b/README.md
index 3a92475719248be492eeb91b9e75c63380b71148..b9629700f0270caa806041b07fdc19a0a5345cb1 100644
--- a/README.md
+++ b/README.md
@@ -16,4 +16,7 @@ Instructions can be found in INSTALL file.
 
 Help on check_commit_ial.sh, check_commit_mesonh.sh and prep_code.sh can be printed with the '-h' option.
 
-For check_commit_mesonh.sh, it is mandatory to source the env.sh file
+For check_commit_mesonh.sh the following environment variables can be set:
+* MNHPACK: directory in which MNH pack will be created (default is $HOME/MesoNH/PHYEX)
+* REFDIR: directory in which reference pack can be found (default is the pack directory near the check_commit_mesonh.sh file)
+* TARGZDIR: directory in which the tar.gz file can be found (default is the pack directory near the check_commit_mesonh.sh file)
diff --git a/check_commit_ial.sh b/check_commit_ial.sh
index 6a44641839699f4b8f5f6bfd342b302f70061c52..24f841a2e5f9aca9495da86064a786b56f3ed9c5 100755
--- a/check_commit_ial.sh
+++ b/check_commit_ial.sh
@@ -218,11 +218,11 @@ if [ $compilation -eq 1 ]; then
     reftree='local'
     subs="" #There is nothing to exclude from compilation because (normally) only needed files are copied into the pack
   fi
+  cd $HOMEPACK/$name/src/local/phyex
 
   MNH_EXPAND_DIR=$PHYEXTOOLSDIR/mnh_expand
   export PATH=$MNH_EXPAND_DIR/filepp:$MNH_EXPAND_DIR/MNH_Expand_Array:$PATH
 
-  cd $HOMEPACK/$name/src/local/phyex
   if [ $useexpand == 1 ]; then
     expand_options="-D MNH_EXPAND -D MNH_EXPAND_LOOP"
   else
diff --git a/check_commit_mesonh.sh b/check_commit_mesonh.sh
index 167a45769a6125c07b4eee3456e7c02a9553747d..e3ae44e6e2d728b995088edcb54eca4307e673c4 100755
--- a/check_commit_mesonh.sh
+++ b/check_commit_mesonh.sh
@@ -8,19 +8,27 @@ set -e
 # Repertoire où MNH-V5-5-0_PHYEX.tar.gz modifie pour accueillir PHYEX se trouve
 #TARGZDIR=$HOME
 
-MNHPACK=${MNHPACK:=$HOME/MesoNH/PHYEX}
-PHYEXTOOLSDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+availTests="007_16janvier/008_run2"
+defaultTest="007_16janvier/008_run2"
+separator='_' #- be carrefull, gmkpack (at least on belenos) has multiple allergies (':', '.', '@')
+              #- seprator must be in sync with prep_code.sh separator
 
+PHYEXTOOLSDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
 function usage {
-  echo "Usage: $0 [-h] [-c] [-r] [-C] commit reference"
-  echo "commit          commit hash"
-  echo "reference       commit hash or nothing for ref"
+  echo "Usage: $0 [-h] [-c] [-r] [-C] [-s] [--expand] commit reference"
+  echo "commit          commit hash (or a directory)"
+  echo "reference       commit hash or a directory or nothing for ref"
   echo "-s              suppress compilation pack"
   echo "-c              performs compilation"
-  echo "-r              runs the tests, if option appears twice, run is also executed on only 2 procs (instead of 4 procs)"
+  echo "-r              runs the tests"
   echo "-C              checks the result against the reference"
+  echo "--expand        use mnh_expand (code will use do loops)"
   echo ""
   echo "If nothing is asked (compilation, running, check) everything is done"
+  echo
+  echo "The directory (for commit only, not ref) can take the form server:directory"
+  echo
+  echo "If using a directory (for commit or reference) it must contain at least one '/'"
 }
 
 compilation=0
@@ -28,7 +36,9 @@ run=0
 check=0
 commit=""
 reference=""
+tests=""
 suppress=0
+useexpand=0
 
 while [ -n "$1" ]; do
   case "$1" in
@@ -37,6 +47,7 @@ while [ -n "$1" ]; do
     '-c') compilation=1;;
     '-r') run=$(($run+1));;
     '-C') check=1;;
+    '--expand') useexpand=1;;
     #-b) param="$2"; shift ;;
     #--) shift; break ;;
      *) if [ -z "${commit-}" ]; then
@@ -53,6 +64,17 @@ while [ -n "$1" ]; do
   shift
 done
 
+[ "$reference" == 'REF' ] && reference="" #Compatibility with check_commit_arome.sh
+
+MNHPACK=${MNHPACK:=$HOME/MesoNH/PHYEX}
+REFDIR=${REFDIR:=$PHYEXTOOLSDIR/pack/}
+TARGZDIR=${TARGZDIR:=$PHYEXTOOLSDIR/pack/}
+if [ -z "${tests-}" ]; then
+  tests=$defaultTest
+elif [ $tests == 'ALL' ]; then
+  tests=$availTests
+fi
+
 if [ $compilation -eq 0 -a \
      $run -eq 0 -a \
      $check -eq 0 ]; then
@@ -66,42 +88,53 @@ if [ -z "${commit-}" ]; then
   exit 2
 fi
 
-#if [ $check -eq 1 -a -z "${reference-}" ]; then
-#  echo "To perform a comparison two commit hashes are mandatory on the command line"
-#  exit 3
-#fi
-
-if echo $commit | grep '/' > /dev/null; then
-  name=MNH-V5-5-0-$(echo $commit | sed 's/\//_/g')
-  [ $suppress -eq 1 -a -d $MNHPACK/$name ] && rm -rf $MNHPACK/$name
-else
-  name=MNH-V5-5-0-$commit
-  [ $suppress -eq 1 -a -d $MNHPACK/$name ] && rm -rf $MNHPACK/$name
-fi
-
 #Two possibilities are supported for the simulations
 # - they can be done in the the pack we are currently checking
 # - they can be done in the reference pack
 #They are done in the current pack except if the reference pack
 #already contains a tested simulation
-run_in_ref=$(ls -d $REFDIR/MNH-V5-5-0/MY_RUN/KTEST/007_16janvier/008_run2_* | tail -1 |wc -l)
+run_in_ref=$(ls -d $REFDIR/MNH-V5-5-0/MY_RUN/KTEST/007_16janvier/008_run2_* 2> /dev/null | tail -1 |wc -l)
+
+#Name and directory for compiling and executing user pack
+fromdir=''
+if echo $commit | grep '/' > /dev/null; then
+  fromdir=$commit
+  tag=$(echo $commit | sed 's/\//'${separator}'/g' | sed 's/:/'${separator}'/g' | sed 's/\./'${separator}'/g')
+else
+  tag=$commit
+fi
+name=MNH-V5-5-0-$tag
+[ $suppress -eq 1 -a -d $MNHPACK/$name ] && rm -rf $MNHPACK/$name
+if [ $run_in_ref -eq 1 ]; then
+  path_user_beg=$REFDIR/MNH-V5-5-0 #pack directory containing the simulation
+  path_user_end=_$tag #to be appended to the 'run' simulation directory
+else
+  path_user_beg=$MNHPACK/$name #pack directory containing the simulation
+  path_user_end= #to be appended to the 'run' simulation directory
+fi
+
+#Name and directory for the reference
+reffromdir=''
+if echo $reference | grep '/' > /dev/null; then
+  reffromdir=$reference
+  reftag=$(echo $reference | sed 's/\//'${separator}'/g' | sed 's/:/'${separator}'/g' | sed 's/\./'${separator}'/g')
+else
+  reftag=$reference
+fi
+refname=MNH-V5-5-0-$reftag
 if [ $run_in_ref -eq 1 ]; then
-  path_user_beg=$REFDIR/MNH-V5-5-0
-  path_user_end=_$commit
   path_ref_beg=$REFDIR/MNH-V5-5-0
   if [ "$reference" == "" ]; then
     path_ref_end=
   else
-    path_ref_end=_$reference
+    path_ref_end=_$reftag
   fi
 else
-  path_user_beg=$MNHPACK/$name
-  path_user_end=
   path_ref_end=
   if [ "$reference" == "" ]; then
     path_ref_beg=$REFDIR/MNH-V5-5-0
   else
-    path_ref_beg=$MNHPACK/MNH-V5-5-0-$reference
+    path_ref_beg=$MNHPACK/MNH-V5-5-0-$reftag
   fi
 fi
 
@@ -116,48 +149,42 @@ if [ $compilation -eq 1 ]; then
   # Prepare the pack
   cd $MNHPACK
   cp $TARGZDIR/MNH-V5-5-0_PHYEX.tar.gz .
-  tar xvfz MNH-V5-5-0_PHYEX.tar.gz 
+  tar xfz MNH-V5-5-0_PHYEX.tar.gz 
   rm MNH-V5-5-0_PHYEX.tar.gz
   mv MNH-V5-5-0 $name
   cd $name/src
+  rm -rf PHYEX
 
-  cd $MNHPACK
-  echo "Clone repository, and checkout commit $commit"
-  git clone https://github.com/QuentinRodier/PHYEX.git
-  cd PHYEX
-  git checkout $commit
-  
-  cd src/common/turb
-  # Rename all *.F90 to *.f90
-  for rep in turb micro aux; do
-    cd ../$rep  
-    for f in *.F90; do 
-      mv -- "$f" "${f%.F90}.f90"
-    done
-  done
-  cd ../../../
+  MNH_EXPAND_DIR=$PHYEXTOOLSDIR/mnh_expand
+  export PATH=$MNH_EXPAND_DIR/filepp:$MNH_EXPAND_DIR/MNH_Expand_Array:$PATH
 
-  for rep in turb micro conv ext aux; do
-    [ ! -d ../$rep ] && mkdir ../$rep
-    [ -d src/common/$rep ] && mv -f src/common/$rep/* ../$rep/
-    [ -d src/mesonh/$rep ] && mv -f src/mesonh/$rep/* ../$rep/
-    touch ../$rep/*
-  done
-  cd ..
-  # Move PHYEX files inside MNH/src/PHYEX
-  for rep in turb micro conv aux; do
-    mv $rep/* $name/src/PHYEX/$rep/.
-    rmdir $rep
-  done
+  if [ $useexpand == 1 ]; then
+    expand_options="-D MNH_EXPAND -D MNH_EXPAND_LOOP"
+  else
+    expand_options=""
+  fi
+  subs="-s turb -s micro -s aux -s ext -s conv"
+  prep_code=$PHYEXTOOLSDIR/prep_code.sh
+  if [ "$fromdir" == '' ]; then
+    echo "Clone repository, and checkout commit $commit (using prep_code.sh)"
+    if [[ $commit == mesonh${separator}* ]]; then
+      $prep_code --renameFf -c $commit PHYEX #This commit is ready for inclusion
+    else
+      $prep_code --renameFf -c $commit $expand_options $subs -m mesonh PHYEX
+    fi
+  else
+    echo "Copy $fromdir"
+    scp -q -r $fromdir PHYEX
+    $prep_code --renameFf $expand_options $subs -m mesonh PHYEX
+  fi
+  rm -rf PHYEX/.git
+  find PHYEX -type f -exec touch {} \; #to be sure a recompilation occurs
 
   # Move manually ext/ files in src/MNH
-  mv -f ext/* $name/src/MNH/. 
-
-  # Clean folder
-  rmdir ext
-  rm -Rf PHYEX
+  mv -f PHYEX/ext/* MNH/
+  rmdir PHYEX/ext
 
-  cd $name/src/PHYEX/turb
+  cd $MNHPACK/$name/src/PHYEX/turb
   # Delete files of MNH-V5-5-0/src/MNH and MNH/src/LIB/SURCOUCHE/src with same name
   for rep in turb micro conv aux ; do
     cd ../$rep
@@ -185,76 +212,87 @@ if [ $compilation -eq 1 ]; then
   #Configure and compilation
   ./configure
   set +e #file ends with a test that can return false
-  . ../conf/profile_mesonh-LXgfortran-R8I4-MNH-V5-5-0-MPIAUTO-DEBUG
+  . ../conf/profile_mesonh-*
   set -e
-  make -j 8
-  make installmaster
+  make -j 8 | tee ../Output_compilation
+  make installmaster | tee -a ../Output_compilation
 fi
 
 if [ $run -ge 1 ]; then
   echo "### Running of commit $commit"
-  echo $commit
+
   if [ ! -f $MNHPACK/$name/exe/MESONH* ]; then
     echo "Pack does not exist ($MNHPACK/$name) or compilation has failed, please check"
     exit 6
   fi
 
-  if [ $run_in_ref -eq 1 ]; then
-    cd $REFDIR/MNH-V5-5-0/MY_RUN/KTEST/007_16janvier/
-    [ ! -d 008_run2_$commit ] && cp -R 008_run2 008_run2_$commit
-    cd $REFDIR/MNH-V5-5-0/MY_RUN/KTEST/007_16janvier/008_run2_$commit
-  else
-    cd $MNHPACK/$name/MY_RUN/KTEST/007_16janvier/
-    for rep in ???_*; do
-      if [ $rep != 008_run2 ]; then
-        rm -rf $rep
-        ln -s $REFDIR/MNH-V5-5-0/MY_RUN/KTEST/007_16janvier/$rep .
-      fi
-    done
-    [ -d 008_run2 ] && rm -rf 008_run2
-    cp -R $REFDIR/MNH-V5-5-0/MY_RUN/KTEST/007_16janvier/008_run2 .
-    cd 008_run2
-  fi
-
-  set +e #file ends with a test that can return false
-  [ $compilation -eq 0 ] && . $MNHPACK/$name/conf/profile_mesonh-LXgfortran-R8I4-MNH-V5-5-0-MPIAUTO-DEBUG
-  set -e
-  ./clean_mesonh_xyz
-  ./run_mesonh_xyz
-fi
+  for t in $(echo $tests | sed 's/,/ /g'); do
+    case=$(echo $t | cut -d / -f 1)
+    exedir=$(echo $t | cut -d / -f 2)
+    if [ $run_in_ref -eq 1 ]; then
+      cd $REFDIR/MNH-V5-5-0/MY_RUN/KTEST/$case/
+      [ ! -d ${exedir}_$commit ] && cp -R ${exedir} ${exedir}_$commit
+      cd $REFDIR/MNH-V5-5-0/MY_RUN/KTEST/$case/${exedir}_$commit
+    else
+      cd $MNHPACK/$name/MY_RUN/KTEST/$case/
+      for rep in ???_*; do
+        if [ $rep != ${exedir} ]; then
+          rm -rf $rep
+          ln -s $REFDIR/MNH-V5-5-0/MY_RUN/KTEST/$case/$rep .
+        fi
+      done
+      [ -d ${exedir} ] && rm -rf ${exedir}
+      cp -R $REFDIR/MNH-V5-5-0/MY_RUN/KTEST/$case/${exedir} .
+      cd ${exedir}
+    fi
   
+    set +e #file ends with a test that can return false
+    [ $compilation -eq 0 ] && . $MNHPACK/$name/conf/profile_mesonh-*
+    set -e
+    ./clean_mesonh_xyz
+    ./run_mesonh_xyz | tee Output_run
+  done
+fi
+
 if [ $check -eq 1 ]; then
-  allt=0
   echo "### Check commit $commit against commit $reference"
-  path_user=$path_user_beg/MY_RUN/KTEST/007_16janvier/008_run2$path_user_end
-  path_ref=$path_ref_beg/MY_RUN/KTEST/007_16janvier/008_run2$path_ref_end
 
-  if [ ! -d $path_user ]; then
-    echo "$path_user is missing, please run the simulation"
-    exit 7
-  fi
-  if [ ! -d $path_ref ]; then
-    echo "$path_ref is missing, please run the reference simulation"
-    exit 8
-  fi
+  allt=0
+  for t in $(echo $tests | sed 's/,/ /g'); do
+    case=$(echo $t | cut -d / -f 1)
+    exedir=$(echo $t | cut -d / -f 2)
 
-  echo "Compare with python..."
-  # Compare variable of both Synchronous and Diachronic files with printing difference
-  set +e
-  $PHYEXTOOLSDIR/compare.py $path_user $path_ref
-  t=$?
-  set -e
-  allt=$(($allt+$t))
-  
-  #Check bit-repro before date of creation of Synchronous file from ncdump of all values (pb with direct .nc file checks)
-  file1=$path_user/16JAN.1.12B18.001.nc 
-  file2=$path_ref/16JAN.1.12B18.001.nc
-  echo "Compare with ncdump..."
-  set +e
-  diff <(ncdump $file1 | head -c 62889) <(ncdump $file2 | head -c 62889)
-  t=$?
-  set -e
-  allt=$(($allt+$t))
+    path_user=$path_user_beg/MY_RUN/KTEST/007_16janvier/008_run2$path_user_end
+    path_ref=$path_ref_beg/MY_RUN/KTEST/007_16janvier/008_run2$path_ref_end
+    if [ ! -d $path_user ]; then
+      echo "$path_user is missing, please run the simulation"
+      exit 7
+    fi
+    if [ ! -d $path_ref ]; then
+      echo "$path_ref is missing, please run the reference simulation"
+      exit 8
+    fi
+
+    if [ $case == 007_16janvier ]; then
+      echo "Compare with python..."
+      # Compare variable of both Synchronous and Diachronic files with printing difference
+      set +e
+      $PHYEXTOOLSDIR/compare.py $path_user $path_ref
+      t=$?
+      set -e
+      allt=$(($allt+$t))
+      
+      #Check bit-repro before date of creation of Synchronous file from ncdump of all values (pb with direct .nc file checks)
+      file1=$path_user/16JAN.1.12B18.001.nc 
+      file2=$path_ref/16JAN.1.12B18.001.nc
+      echo "Compare with ncdump..."
+      set +e
+      diff <(ncdump $file1 | head -c 62889) <(ncdump $file2 | head -c 62889)
+      t=$?
+      set -e
+      allt=$(($allt+$t))
+    fi
+  done
 
   if [ $allt -eq 0 ]; then
     status="OK"
diff --git a/env.sh b/env.sh
index 1d52bba34111dccc931031f646444107c74c9a4d..1bec04b6d4f2486ecf5c15117ceca0a3aa584607 100644
--- a/env.sh
+++ b/env.sh
@@ -2,6 +2,3 @@ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
 
 MNH_EXPAND_DIR=$DIR/mnh_expand
 export PATH=$DIR:$MNH_EXPAND_DIR/filepp:$MNH_EXPAND_DIR/MNH_Expand_Array:$PATH
-
-export REFDIR=$DIR/pack/
-export TARGZDIR=$DIR/pack/
diff --git a/prep_code.sh b/prep_code.sh
index 3c3cb1ba01268b020457d34d2f893dd921f06367..8b894913ad8e39f0dc069d0297ad969424295a0b 100755
--- a/prep_code.sh
+++ b/prep_code.sh
@@ -111,6 +111,14 @@ else
   from='git'
 fi
 
+###### RENAME .F90 into .f90
+if [ $renameFf -eq 1 ]; then
+  find . -type f  -name \*.F90 -print0 | \
+    while IFS= read -r -d '' file; do
+      mv -- "$file" "${file%.F90}.f90"
+    done
+fi
+
 ###### MERGE
 if [ -n "${model-}" ]; then
   if [ ! -d src/$model ]; then
@@ -129,8 +137,8 @@ if [ -n "${model-}" ]; then
   for sub in $subs; do
     [ $verbose -gt 1 ] && echo "Merging $sub directory/file"
     if [ -e $sub ]; then
-      echo "$sub must not exist in the repository, this is a limitation of the script"
-       exit 7
+      echo "$sub must not exist in the repository root, this is a limitation of the script"
+      exit 7
     fi
     [ -e src/common/$sub ] && mv src/common/$sub .
     [ -e src/$model/$sub ] && cp -rlf src/$model/$sub . && rm -rf src/$model/$sub
@@ -179,14 +187,6 @@ if [ -n "${mnh_expand_options-}" ]; then
   done
 fi
 
-###### RENAME .F90 into .f90
-if [ $renameFf -eq 1 ]; then
-  find . -type f  -name \*.F90 -print0 | \
-    while IFS= read -r -d '' file; do
-      mv -- "$file" "${file%.F90}.f90"
-    done
-fi
-
 ###### PUSH
 if [ -n "${branch-}" ]; then
   [ $verbose -gt 0 ] && echo "commit and push"