diff --git a/.gitignore b/.gitignore
index c4d0f06dc1264b66780e2091644783b3f1d5af15..5c45268686b2e1c0841af0a95d36fc05b4a4e745 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,5 +6,9 @@
 /mnh_expand/**
 !/mnh_expand/.gitkeep
 
+# Ignore the content of testprogs_data but not the directory itself
+/testprogs_data/**
+!/testprogs_data/.gitkeep
+
 # Ignore vim swapp files
 .*.swp
diff --git a/INSTALL_testprogs b/INSTALL_testprogs
new file mode 100644
index 0000000000000000000000000000000000000000..bbeb43f462ab8a910d9ae24de76b918840768c84
--- /dev/null
+++ b/INSTALL_testprogs
@@ -0,0 +1,8 @@
+Testprogs data on sxphynh
+
+cd testprogs_data
+mkdir ice_adjust
+cd ice_adjust
+git clone git@github.com:pmarguinaud/ice_adjust.git
+mv ice_adjust/data/* .
+rm -rf ice_adjust/
diff --git a/check_commit_ial.sh b/check_commit_ial.sh
index 52d8b0b9cc9a96ad7a1ea4aa858886a7d41d28bd..193dd313e2a2880f6ae3cc440f9971661c8a70a6 100755
--- a/check_commit_ial.sh
+++ b/check_commit_ial.sh
@@ -65,7 +65,7 @@ function usage {
   echo
   echo "With the special reference REF commit, a suitable reference is guessed"
   echo
-  echo "If no test is aked for, the default on ($defaultTest) is executed"
+  echo "If no test is aked for, the default one ($defaultTest) is executed"
   echo
   echo "The directory (for commit only, not ref) can take the form server:directory"
   echo
diff --git a/check_commit_testprogs.sh b/check_commit_testprogs.sh
new file mode 100755
index 0000000000000000000000000000000000000000..ec7c0c10015d0c34b913dde1e782adef91aa07f9
--- /dev/null
+++ b/check_commit_testprogs.sh
@@ -0,0 +1,254 @@
+#!/bin/bash
+
+set -x
+set -e
+
+#This script:
+# - compiles the PHYEX package using a specific commit
+# - runs the different test progs and checks if results are identical to a given version
+
+#ice_adjust: the ice adjust test case
+
+specialName="ref"
+availTests="ice_adjust"
+defaultTest='ALL'
+separator='_' #- seprator must be in sync with prep_code.sh separator
+
+PHYEXTOOLSDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+
+dirdata=$PHYEXTOOLSDIR/testprogs_data
+if [ $(hostname | cut -c 1-7) == 'belenos' -o $(hostname | cut -c 1-7) == 'taranis' ]; then
+  HPC=1
+  archfile=MIMPIIFC1805.EPONA
+else
+  HPC=0
+  archfile=gnu
+fi
+defaultRef=ref
+
+function usage {
+  echo "Usage: $0 [-h] [-c] [-r] [-C] [-s] [-f] [--noexpand] [-t test] commit reference"
+  echo "commit          commit hash (or a directory, or among $specialName) to test"
+  echo "reference       commit hash (or a directory, or among $specialName) REF to use as a reference"
+  echo "-s              suppress compilation pack"
+  echo "-c              performs compilation"
+  echo "-r              runs the tests"
+  echo "-C              checks the result against the reference"
+  echo "-t              comma separated list of tests to execute"
+  echo "                or ALL to execute all tests"
+  echo "--noexpand      do not use mnh_expand (code will be in array-syntax)"
+  echo ""
+  echo "If nothing is asked (compilation, running, check) everything is done"
+  echo
+  echo "With the special reference REF commit, a suitable reference is guessed"
+  echo
+  echo "If no test is aked for, the default one ($defaultTest) is executed"
+  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
+run=0
+check=0
+commit=""
+reference=""
+tests=""
+suppress=0
+useexpand=1
+
+while [ -n "$1" ]; do
+  case "$1" in
+    '-h') usage;;
+    '-s') suppress=1;;
+    '-c') compilation=1;;
+    '-r') run=$(($run+1));;
+    '-C') check=1;;
+    '-t') tests="$2"; shift;;
+    '--noexpand') useexpand=0;;
+    #--) shift; break ;;
+     *) if [ -z "${commit-}" ]; then
+          commit=$1
+        else
+          if [ -z "${reference-}" ]; then
+            reference=$1
+          else
+            echo "Only two commit hash allowed on command line"
+            exit 1
+          fi
+        fi;;
+  esac
+  shift
+done
+
+TESTDIR=${TESTDIR:=$HOME/TESTPROGS}
+
+function exescript () {
+  #usage: exescript <output file> <script> [arg [arg ...]]
+  output=$1
+  shift
+  if [ $HPC -eq 1 ]; then
+    sbatch --wait -o $output $@
+    cat $output
+  else
+    $@ 2>&1 | tee $output
+  fi
+}
+
+if [ -z "${tests-}" ]; then
+  tests=$defaultTest
+fi
+if [ $tests == 'ALL' ]; then
+  tests=$availTests
+fi
+
+if [ $compilation -eq 0 -a \
+     $run -eq 0 -a \
+     $check -eq 0 ]; then
+  compilation=1
+  run=1
+  check=1
+fi
+
+if [ -z "${commit-}" ]; then
+  echo "At least one commit hash must be provided on command line"
+  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
+
+#Name is choosen such as it can be produced with a main pack: PHYEX/48t1_XXXXXXXXX.01.${gmkpack_l}.${gmkpack_o}
+fromdir=''
+if echo $commit | grep '/' > /dev/null; then
+  fromdir=$commit
+  name=$(echo $commit | sed 's/\//'${separator}'/g' | sed 's/:/'${separator}'/g' | sed 's/\./'${separator}'/g')
+  [ $suppress -eq 1 -a -d $TESTDIR/$name ] && rm -rf $TESTDIR/$name
+elif echo $specialName | grep -w $commit > /dev/null; then
+  name="$commit"
+else
+  name="COMMIT$commit"
+  [ $suppress -eq 1 -a -d $TESTDIR/$name ] && rm -rf $TESTDIR/$name
+fi
+if [ ! -z "${reference-}" ]; then
+  [ $reference == 'REF' ] && reference=$defaultRef
+  reffromdir=''
+  if echo $reference | grep '/' > /dev/null; then
+    reffromdir=$reference
+    refname=$(echo $reference | sed 's/\//'${separator}'/g' | sed 's/:/'${separator}'/g' | sed 's/\./'${separator}'/g')
+  elif echo $specialName | grep -w $reference > /dev/null; then
+    refname="$reference"
+  else
+    refname="COMMIT${reference}"
+  fi
+fi
+
+if [ $compilation -eq 1 ]; then
+  echo "### Compilation of commit $commit"
+
+  if echo $specialName | grep -w $commit > /dev/null; then
+    echo "Special commit '$commit' cannot be compiled with this script"
+    exit 4
+  fi
+
+  if [ -d $TESTDIR/$name ]; then
+    echo "Pack already exists ($TESTDIR/$name), suppress it to be able to compile it again (or use the -s option to automatically suppress it)"
+    exit 5
+  fi
+  mkdir $TESTDIR/$name
+  cd $TESTDIR/$name/
+
+  MNH_EXPAND_DIR=$PHYEXTOOLSDIR/mnh_expand
+  export PATH=$MNH_EXPAND_DIR/filepp:$MNH_EXPAND_DIR/MNH_Expand_Array:$PATH
+
+  if [ $useexpand == 1 ]; then
+    expand_options="-D MNH_EXPAND -D MNH_EXPAND_LOOP"
+  else
+    expand_options=""
+  fi
+  subs="$subs -s turb -s micro -s aux -s ice_adjust"
+  prep_code=$PHYEXTOOLSDIR/prep_code.sh
+  if [ "$fromdir" == '' ]; then
+    echo "Clone repository, and checkout commit $commit (using prep_code.sh)"
+    $prep_code -c $commit $expand_options $subs src
+  else
+    echo "Copy $fromdir"
+    scp -q -r $fromdir src
+    $prep_code $expand_options $subs src
+  fi
+
+  cd $TESTDIR/$name/src/build/with_fcm/
+  rm -rf arch_*
+  ./make_fcm.sh --arch $archfile 2>&1 | tee Output_compilation
+fi
+
+if [ $run -ge 1 ]; then
+  echo "### Running of commit $commit"
+
+  for t in $(echo $tests | sed 's/,/ /g'); do
+    if [ ! -f $TESTDIR/$name/src/build/with_fcm/arch_${archfile}/build/bin/main_${t}.exe ]; then
+      echo "Pack does not exist ($TESTDIR/$name) or compilation has failed, please check"
+      exit 6
+    fi
+  done
+
+  #Cleaning to suppress old results that may be confusing in case of a crash during the run
+  for t in $(echo $tests | sed 's/,/ /g'); do
+    cd $TESTDIR/$name
+    if [ -d tests/$t ]; then
+      rm -rf tests/$t
+    fi
+  done
+
+  #Run the tests one after the other
+  for t in $(echo $tests | sed 's/,/ /g'); do
+    cd $TESTDIR/$name
+    mkdir -p tests/$t
+    cd tests/$t
+    ln -s $dirdata/$t data
+    $TESTDIR/$name/src/build/with_fcm/arch_${archfile}/build/bin/main_${t}.exe --check 2>&1 > Output_run
+  done
+fi
+
+if [ $check -eq 1 ]; then
+  echo "### Check commit $commit against commit $reference"
+
+  alltests=0
+  message=""
+  for t in $(echo $tests | sed 's/,/ /g'); do
+    file1=$TESTDIR/$name/tests/$t/Output_run
+    file2=$TESTDIR/$refname/tests/$t/Output_run
+    mess=""
+    te=0
+    if [ ! -f "$file1" ]; then
+      mess="Result ($file1) for commit $commit does not exist, please run the simulation"
+      te=1
+    fi
+    if [ ! -f "$file2" ]; then
+      mess2="Result ($file2) for commit $reference does not exist, please run the simulation"
+      te=1
+      if [ "$mess" = "" ]; then
+        mess=$mess2
+      else
+        mess="$mess and $mess2"
+      fi
+    fi
+    if [ $te -eq 0 ]; then
+      set +e
+      mess=$(cmp $file1 $file2 246 246 2>&1)
+      te=$?
+      set -e
+    fi
+    [ $te -ne 0 ] && message="$message $mess \n"
+    alltests=$(($alltests+$te))
+  done
+  if [ $alltests -eq 0 ]; then
+    echo "SUCCESS, files are identical"
+  else
+    echo "*************** Files are different *******************"
+    echo -e "$message"
+  fi
+fi