ctest multichain
authorCezary Czaplewski <czarek@chem.univ.gda.pl>
Fri, 3 Mar 2017 13:32:49 +0000 (14:32 +0100)
committerCezary Czaplewski <czarek@chem.univ.gda.pl>
Fri, 3 Mar 2017 13:32:49 +0000 (14:32 +0100)
not finished, many failed tests

ctest/prota_unres_energy_check_mult.sh [new file with mode: 0755]
source/unres/src_MD-M/CMakeLists.txt

diff --git a/ctest/prota_unres_energy_check_mult.sh b/ctest/prota_unres_energy_check_mult.sh
new file mode 100755 (executable)
index 0000000..4316c07
--- /dev/null
@@ -0,0 +1,325 @@
+#!/bin/bash
+#
+# Writen by Dawid JagieÅ‚a and Adam Sieradzan
+# and Cezary Czaplewski
+#
+#
+#----------------------------------------
+# variables
+
+if [[ "$2" =~ "MPI" ]]; then
+ file=$1.out_GB000
+ file_stat=$1_GB000.stat
+else
+ file=$1.out_GB                                        # Output file to search energy value from
+ file_stat=$1_GB.stat
+fi
+
+if [ "$1" == "prota_ENE" ]; then
+ extremediff="10000.0"                 # extreme energy difference, comething went terribly wrong
+ expectenergy="145.1742"       # - expected total energy
+ cutoffdiff="0.01"                     # energy cutoff variation - more then this rises warning  
+elif [ "$1" == "prota_MIN_CART" ]; then
+ extremediff="10.0"                    # extreme energy difference, comething went terribly wrong
+ expectenergy="158.3680"               # - expected total energy
+ cutoffdiff="0.1"                      # energy cutoff variation - more then this rises warning  
+ sumsl_return=`grep SUMSL $file|awk '{print $4}'`
+ echo 'SUMSL return code' $sumsl_return
+ if [ "$sumsl_return" != "4" ]; then
+   echo 'ERROR = SUMSL return code' $sumsl_return 'is not 4'
+   exit 1
+ fi
+elif [ "$1" == "1l2y_MIN_INT" ]; then
+ extremediff="10.0"                    # extreme energy difference, comething went terribly wrong
+ expectenergy="-47.88137"                      # expected total energy
+ cutoffdiff="0.1"                      # energy cutoff variation - more then this rises warning  
+ sumsl_return=`grep SUMSL $file|awk '{print $4}'`
+ echo 'SUMSL return code' $sumsl_return
+ if [ "$sumsl_return" != "4" ]; then
+   echo 'ERROR = SUMSL return code' $sumsl_return 'is not 4'
+   exit 1
+ fi
+elif [ "$1" == "1l2y_MIN_REGULAR_INT" ]; then
+ extremediff="10.0"                    # extreme energy difference, comething went terribly wrong
+ expectenergy="47.55"                  # expected total energy
+#
+# something wrong with REGULAR and sometimes gives code 8 and different energy
+# for now 8 is only warning and cutoffdiff is large
+#
+ cutoffdiff="6.0"                      # energy cutoff variation - more then this rises warning  
+ sumsl_return=`grep "SUMSL return code:" $file|awk '{print $4}'`
+ echo 'SUMSL return code' $sumsl_return
+ if [ "$sumsl_return" != "4" ]; then
+   echo 'WARNING = SUMSL return code' $sumsl_return 'is not 4'
+ fi
+
+elif [ "$1" == "1l2y_micro" ]; then
+ refe="74.2623"
+ stat=`awk '{if ( $1 != "#" ) {n++;a=a+$5;a2=a2+$5^2}}END{print a/n,sqrt((a2-a^2/n)/n)}' $file_stat`
+ array=(${stat// / })
+ echo 'average total energy ' ${array[0]}
+ echo 'standard deviation ' ${array[1]}
+ if [ `echo "a=${array[0]}-${refe};if(0>a)a*=-1;a>5.0"|bc -l` != "0" ]; then
+  echo 'difference ' `echo "a=${array[0]}-${refe};if(0>a)a*=-1;a"|bc -l` "from reference ave etot ${refe} greater than 5.0"
+  exit 1
+ elif [ `echo "a=${array[1]};a>0.15"|bc -l` != "0" ]; then
+  echo 'standard deviation greater than 0.15'
+  exit 1
+ else
+  exit 0
+ fi
+elif [ "$1" == "1L2Y_L" ] || [ "$1" == "1L2Y_NH" ]; then
+ if [ ! -s $file_stat ]; then
+  echo 'FATAL error - stat file empty'
+  exit 2
+ fi
+ chi2=`./matplotlib_fit_hist.py $file_stat 111`
+ echo 'Chi2 for fitting theoretical temperature distribution ' ${chi2}
+ echo  "<DartMeasurementFile name=\"Temperature distribution $1\" type=\"image/png\">`pwd`/${file_stat}.png</DartMeasurementFile>"
+ if [ `echo "a=${chi2};a>0.001"|bc -l` != "0" ]; then
+    echo 'chi2 greater than 0.001'
+    exit 1
+ else
+    exit 0
+ fi
+elif [ "$1" == "1L2Y_B" ]; then
+ if [ ! -s $file_stat ]; then
+  echo 'FATAL error - stat file empty'
+  exit 2
+ fi
+ chi2=`./matplotlib_fit_hist.py $file_stat 111`
+ echo 'Chi2 for fitting theoretical temperature distribution ' ${chi2}
+ echo  "<DartMeasurementFile name=\"Temperature distribution $1\" type=\"image/png\">`pwd`/${file_stat}.png</DartMeasurementFile>"
+ if [ `echo "a=${chi2};a>0.01"|bc -l` != "0" ]; then
+    echo 'chi2 greater than 0.01'
+    exit 1
+ else
+    exit 0
+ fi
+
+
+elif [ "$1" == "1L2Y_remd" ]; then
+ rm -rf remd_all.stat
+ tail -q -n +1000 1L2Y_remd*.stat >remd_all.stat
+ if [ ! -s remd_all.stat ]; then
+  echo 'FATAL error - stat files empty'
+  exit 2
+ fi
+ ./matplotlib_hist.py
+
+ echo  "<DartMeasurementFile name=\"Histograms $1\" type=\"image/png\">`pwd`/1L2Y_remd_ene_hist.png</DartMeasurementFile>"
+ echo  "<DartMeasurementFile name=\"Energy $1\" type=\"image/png\">`pwd`/1L2Y_remd_Tene.png</DartMeasurementFile>" 
+ grep ACC 1L2Y_remd.out_GB000 |tail -7
+ exchange=`grep ACC 1L2Y_remd.out_GB000 |tail -7|awk '{a=a+$4}END{print a/NR}'`
+ echo "average exchange = ${exchange}"
+ if [ `echo "a=${exchange};a<0.2"|bc -l` != "0" ]; then
+    echo 'ERROR average exchange smaller than 0.2'
+    exit 1
+ else
+    exit 0
+ fi
+
+elif [ "$1" == "1DKZcut-ber" ]; then
+ chi2=`./matplotlib_fit_hist.py $file_stat 519`
+ echo 'Chi2 for fitting theoretical temperature distribution ' ${chi2}
+ echo  "<DartMeasurementFile name=\"Temperature distribution $1\" type=\"image/png\">`pwd`/${file_stat}.png</DartMeasurementFile>"
+ if [ `echo "a=${chi2};a>0.01"|bc -l` != "0" ]; then
+    echo 'chi2 greater than 0.01'
+    exit 1
+ else
+    exit 0
+ fi
+
+elif [ "$1" == "1DKZcut-lang" ]; then
+ chi2=`./matplotlib_fit_hist.py $file_stat 519`
+ echo 'Chi2 for fitting theoretical temperature distribution ' ${chi2}
+ echo  "<DartMeasurementFile name=\"Temperature distribution $1\" type=\"image/png\">`pwd`/${file_stat}.png</DartMeasurementFile>"
+ if [ `echo "a=${chi2};a>0.001"|bc -l` != "0" ]; then
+    echo 'chi2 greater than 0.001'
+    exit 1
+ else
+    exit 0
+ fi
+
+elif [ "$1" == "1DKZcut-min" ]; then
+ extremediff="10.0"                    # extreme energy difference, comething went terribly wrong
+ expectenergy="332.1213"               # - expected total energy
+ cutoffdiff="3.0"                      # energy cutoff variation - more then this rises warning  
+ sumsl_return=`grep SUMSL $file|awk '{print $4}'`
+ echo 'SUMSL return code' $sumsl_return
+ if [ "$sumsl_return" != "4" ]; then
+   echo 'ERROR = SUMSL return code' $sumsl_return 'is not 4'
+   echo 'but not failing this test, it is known problem with esccor'
+#   exit 1
+ fi
+
+elif [ "$1" == "1DKZcut-ene" ]; then
+ extremediff="10000.0"                 # extreme energy difference, comething went terribly wrong
+ expectenergy="-452.4430"      # - expected total energy
+ cutoffdiff="0.01"                     # energy cutoff variation - more then this rises warning  
+
+elif [ "$1" == "1DKZcut-micro" ]; then
+ refe="-173.573"
+ stat=`awk '{if ( $1 != "#" ) {n++;a=a+$5;a2=a2+$5^2}}END{print a/n,sqrt((a2-a^2/n)/n)}' $file_stat`
+ array=(${stat// / })
+ echo 'average total energy ' ${array[0]}
+ echo 'standard deviation ' ${array[1]}
+ if [ `echo "a=${array[0]}-(${refe});if(0>a)a*=-1;a>5.0"|bc -l` != "0" ]; then
+  echo 'difference ' `echo "a=${array[0]}-${refe};if(0>a)a*=-1;a"|bc -l` "from reference ave etot ${refe} greater than 5.0"
+  exit 1
+ elif [ `echo "a=${array[1]};a>0.005"|bc -l` != "0" ]; then
+  echo 'standard deviation greater than 0.005'
+  exit 1
+ else
+  exit 0
+ fi
+
+elif [ "$1" == "1ei0_min" ]; then
+ extremediff="10.0"                    # extreme energy difference, comething went terribly wrong
+ expectenergy="151.3218"               # - expected total energy
+ cutoffdiff="6.0"                      # energy cutoff variation - more then this rises warning  
+ refe="134.8382"
+ startene=`grep ETOT $file|head -1| awk '{print $2*1.0}'`
+ echo "initial energy=${startene} reference=${refe}"
+ if [ `echo "a=${startene}-(${refe});if(0>a)a*=-1;a>0.01"|bc -l` != "0" ]; then
+  echo 'difference ' `echo "a=${startene}-${refe};if(0>a)a*=-1;a"|bc -l` "from reference etot ${refe} greater than 0.01"
+  exit 1
+ fi
+ sumsl_return=`grep SUMSL $file|awk '{print $4}'`
+ echo 'SUMSL return code' $sumsl_return
+ if [ "$sumsl_return" != "4" ]; then
+   echo 'ERROR = SUMSL return code' $sumsl_return 'is not 4'
+   echo 'but not failing this test, it is known problem with dissulfides'
+#   exit 1
+ fi
+
+elif [ "$1" == "prota_CHECKGRAD" ] || [ "$1" == "1DKZcut-checkgrad" ] || [ "$1" ==  "checkgrad_dfa" ]  ; then
+ diff=`gawk -f checkgrad.awk $file |grep 'Largest abs(1-numerical/analytical)='|awk '{printf "%15.10f",$3}'`
+ gawk -f checkgrad.awk $file 
+ if [ `echo "a=${diff};a>0.0003"|bc -l` != "0" ]; then
+    echo 'ERROR largest abs(1-numerical/analytical)' ${diff}
+    echo ' greater than 0.0003'
+    exit 1
+ else
+    exit 0
+ fi
+
+elif [ "$1" ==  "Ts866_checkgrad_full" ] ; then
+ diff=`gawk -f checkgrad.awk $file |grep 'Largest abs(1-numerical/analytical)='|awk '{printf "%15.10f",$3}'`
+ gawk -f checkgrad.awk $file 
+
+ exit_error=0
+ ene=`grep ETOT $file|head -1| awk '{print $2*1.0}'`
+ hene=`grep H_CONS $file|head -1| awk '{print $2*1.0}'`
+ ene_ref=3132.980
+ hene_ref=1878.060
+ echo "ETOT= " ${ene} " reference= " ${ene_ref}
+ if [ `echo "a=${ene}-(${ene_ref});if(0>a)a*=-1;a>0.01"|bc -l` != "0" ]; then
+  echo 'difference ' `echo "a=${ene}-${ene_ref};if(0>a)a*=-1;a"|bc -l` "from reference etot ${ene_ref} greater than 0.01"
+  exit_error=1
+ fi
+
+ echo "H_CONS= " ${hene} " reference= " ${hene_ref}
+ if [ `echo "a=${hene}-(${hene_ref});if(0>a)a*=-1;a>0.01"|bc -l` != "0" ]; then
+  echo 'difference ' `echo "a=${hene}-${hene_ref};if(0>a)a*=-1;a"|bc -l` "from reference etot ${hene_ref} greater than 0.01"
+  exit_error=1
+ fi
+ if [ `echo "a=${diff};a>0.0020"|bc -l` != "0" ]; then
+    echo 'ERROR largest abs(1-numerical/analytical)' ${diff}
+    echo ' greater than 0.0020'
+    exit_error=1
+ fi
+
+ if [ "${exit_error}" == "1" ]; then
+    exit 1
+ else
+    exit 0
+ fi
+
+
+elif [ "$1" == "remd_dfa" ]; then
+ rm -rf remd_all.stat
+ tail -q -n +100 remd_dfa*.stat >remd_all.stat
+ if [ ! -s remd_all.stat ]; then
+  echo 'FATAL error - stat files empty'
+  exit 2
+ fi
+ ./matplotlib_hist.py
+
+ echo  "<DartMeasurementFile name=\"Histograms $1\" type=\"image/png\">`pwd`/1L2Y_remd_ene_hist.png</DartMeasurementFile>"
+ echo  "<DartMeasurementFile name=\"Energy $1\" type=\"image/png\">`pwd`/1L2Y_remd_Tene.png</DartMeasurementFile>" 
+ grep ACC remd_dfa.out_GB000 |tail -7
+ exchange=`grep ACC remd_dfa.out_GB000 |tail -7|awk '{a=a+$4}END{print a/NR}'`
+ echo "average exchange = ${exchange}"
+ if [ `echo "a=${exchange};a<0.1"|bc -l` != "0" ]; then
+    echo 'ERROR average exchange smaller than 0.1'
+    exit 1
+ else
+    exit 0
+ fi
+
+               
+else
+ exit 1
+fi
+
+
+
+function floating(){
+    echo $1 | sed -e 's/[eE]+/*10^/'
+}
+
+#---------------------------------------------------------------------------
+# MAIN CODE
+#---------------------------------------------------------------------------
+
+# Check if file exist
+if [ ! -f $file ]; then
+    echo "CRITICAL: out file do not exist"
+    exit 2
+fi
+
+# Check if energy value is not a number
+grepene=`grep ETOT $file|tail -1| awk '{print $2}'`
+if [[ $grepene == "NaN" ]]; then
+    echo "CRITICAL: energy is NaN"
+    exit 2
+fi
+
+# Check if energy value is extremely different from expected
+blaene=`floating $grepene`
+myene=`echo $blaene |bc`
+diff=`echo $myene"+("$expectenergy")"|bc`
+absdiff=`echo $diff| sed 's/-//'`
+
+true1=`echo "$absdiff >= $extremediff"|bc`
+if [ $true1 -eq 1 ]; then
+    echo "CRITICAL: energy is loo large $absdiff, ene= $myene"
+    exit 2
+fi
+
+# Check if Energy value is as expected
+true2=`echo "$absdiff<=$cutoffdiff"|bc`
+if [ $true2 -eq 1 ]; then
+    echo "OK: absdiff= $absdiff, ene= $myene"
+    exit 0
+else
+    echo "WARNING: energy is somewhat different $absdiff, ene= $myene"
+    exit 1
+fi
+
index 0e602c0..d9e19e9 100644 (file)
@@ -226,6 +226,10 @@ elseif (Fortran_COMPILER_NAME STREQUAL "f95")
 elseif (Fortran_COMPILER_NAME STREQUAL "gfortran")
   # Add old gfortran flags
   set(CPPFLAGS "${CPPFLAGS} -DG77") 
+elseif (Fortran_COMPILER_NAME STREQUAL "pgf90")
+  set(CPPFLAGS "${CPPFLAGS} -DPGI")
+  FILE(COPY ${CMAKE_SOURCE_DIR}/source/lib/isnan_pgi.f DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
+  list(APPEND UNRES_MDM_SRC0 ${CMAKE_CURRENT_BINARY_DIR}/isnan_pgi.f)
 endif (Fortran_COMPILER_NAME STREQUAL "ifort")
 
 
@@ -456,7 +460,7 @@ FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/1DKZcut-micro.inp
 FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/1DKZcut-min.inp
         DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
 
-FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/prota_unres_energy_check.sh
+FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/prota_unres_energy_check_mult.sh
         DESTINATION ${CMAKE_CURRENT_BINARY_DIR} 
         FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
 )
@@ -471,6 +475,17 @@ FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/matplotlib_hist.py
         FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
 )
 
+FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/checkgrad.awk
+        DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
+
+FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/prota_CHECKGRAD.inp
+        DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
+
+FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/1DKZcut-checkgrad.inp
+        DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
+
+FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/homology_mult/
+      DESTINATION ${CMAKE_CURRENT_BINARY_DIR} FILES_MATCHING PATTERN "*" )
 
 
 #=========================================
@@ -486,23 +501,24 @@ export PREFIX=$1
 UNRES_BIN=${CMAKE_BINARY_DIR}/bin/${UNRES_BIN}
 #-----------------------------------------------------------------------------
 DD=${CMAKE_SOURCE_DIR}/PARAM
-export BONDPAR=$DD/bond_AM1.parm
-export THETPAR=$DD/theta_abinitio.parm
-export ROTPAR=$DD/rotamers_AM1_aura.10022007.parm
-export TORPAR=$DD/torsion_631Gdp.parm
-export TORDPAR=$DD/torsion_double_631Gdp.parm
-export ELEPAR=$DD/electr_631Gdp.parm
-export SIDEPAR=$DD/scinter_$POT.parm
-export FOURIER=$DD/fourier_opt.parm.1igd_hc_iter3_3
-export SCPPAR=$DD/scp.parm
-export SCCORPAR=$DD/sccor_am1_pawel.dat
-export THETPARPDB=$DD/thetaml.5parm
-export ROTPARPDB=$DD/scgauss.parm
+export BONDPAR=$DD/bond_AM1_ext_dum.parm
+export THETPAR=$DD/theta_abinitio_old_ext.parm
+export THETPARPDB=$DD/thetaml_ext.5parm
+export ROTPARPDB=$DD/scgauss_ext.parm
+export ROTPAR=$DD/rotamers_AM1_aura_ext.10022007.parm
+export TORPAR=$DD/torsion_631Gdp_old_ext.parm
+export TORDPAR=$DD/torsion_double_631Gdp_old_ext.parm
+export ELEPAR=$DD/electr_631Gdp_ext.parm
+export SIDEPAR=$DD//scinter_GB_ext_lip.parm
+export FOURIER=$DD/fourier_opt_ext.parm.1igd_hc_iter3_3
+export SCCORPAR=$DD/sccor_am1_pawel_ext.dat
+export SCPPAR=$DD/scp_ext.parm
 export PATTERN=$DD/patterns.cart
+export LIPTRANPAR=$DD/Lip_tran_initial_ext.parm
 #-----------------------------------------------------------------------------
 echo CTEST_FULL_OUTPUT
 $UNRES_BIN
-./prota_unres_energy_check.sh $1 ${UNRES_BIN}
+./prota_unres_energy_check_mult.sh $1 ${UNRES_BIN}
 ")
 
 #  MESSAGE (STATUS "${MPI_Fortran_LIBRARIES}")
@@ -542,23 +558,24 @@ export PREFIX=$1
 UNRES_BIN=${CMAKE_BINARY_DIR}/bin/${UNRES_BIN}
 #-----------------------------------------------------------------------------
 DD=${CMAKE_SOURCE_DIR}/PARAM
-export BONDPAR=$DD/bond_AM1.parm
-export THETPAR=$DD/theta_abinitio.parm
-export ROTPAR=$DD/rotamers_AM1_aura.10022007.parm
-export TORPAR=$DD/torsion_631Gdp.parm
-export TORDPAR=$DD/torsion_double_631Gdp.parm
-export ELEPAR=$DD/electr_631Gdp.parm
-export SIDEPAR=$DD/scinter_$POT.parm
-export FOURIER=$DD/fourier_opt.parm.1igd_hc_iter3_3
-export SCPPAR=$DD/scp.parm
-export SCCORPAR=$DD/sccor_am1_pawel.dat
-export THETPARPDB=$DD/thetaml.5parm
-export ROTPARPDB=$DD/scgauss.parm
+export BONDPAR=$DD/bond_AM1_ext_dum.parm
+export THETPAR=$DD/theta_abinitio_old_ext.parm
+export THETPARPDB=$DD/thetaml_ext.5parm
+export ROTPARPDB=$DD/scgauss_ext.parm
+export ROTPAR=$DD/rotamers_AM1_aura_ext.10022007.parm
+export TORPAR=$DD/torsion_631Gdp_old_ext.parm
+export TORDPAR=$DD/torsion_double_631Gdp_old_ext.parm
+export ELEPAR=$DD/electr_631Gdp_ext.parm
+export SIDEPAR=$DD//scinter_GB_ext_lip.parm
+export FOURIER=$DD/fourier_opt_ext.parm.1igd_hc_iter3_3
+export SCCORPAR=$DD/sccor_am1_pawel_ext.dat
+export SCPPAR=$DD/scp_ext.parm
 export PATTERN=$DD/patterns.cart
+export LIPTRANPAR=$DD/Lip_tran_initial_ext.parm
 #-----------------------------------------------------------------------------
 echo CTEST_FULL_OUTPUT
 ${mpiexec} ${boot_lam} ${np} $3 $UNRES_BIN | grep -v traj1file
-./prota_unres_energy_check.sh $1 ${UNRES_BIN}
+./prota_unres_energy_check_mult.sh $1 ${UNRES_BIN}
 ")
 
 #
@@ -584,6 +601,7 @@ if(NOT UNRES_WITH_MPI)
  
   if(UNRES_MD_FF STREQUAL "E0LL2Y")
     add_test(NAME UNRES_M_ENE_prota COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh prota_ENE 1 )
+    add_test(NAME UNRES_M_CHECKGRAD_prota COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh prota_CHECKGRAD 1 )
     add_test(NAME UNRES_M_MIN_prota COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh prota_MIN_CART 1 )
     add_test(NAME UNRES_M_MIN_INT COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh 1l2y_MIN_INT 1 )
     add_test(NAME UNRES_M_REGULAR COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh 1l2y_MIN_REGULAR_INT 1 )
@@ -593,6 +611,7 @@ if(NOT UNRES_WITH_MPI)
 #    add_test(NAME UNRES_M_NoseHoover COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh 1L2Y_NH 1 )
     add_test(NAME UNRES_M_Berendsen COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh 1L2Y_B 1 )
     add_test(NAME UNRES_M_multi_ene COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh 1DKZcut-ene 1 )
+    add_test(NAME UNRES_M_multi_checkgrad COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh 1DKZcut-checkgrad 1 )
     add_test(NAME UNRES_M_multi_min COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh 1DKZcut-min 1 )
     add_test(NAME UNRES_M_multi_microcanonical COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh 1DKZcut-micro 1 )
     add_test(NAME UNRES_M_multi_Berendsen COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh 1DKZcut-ber 1 )
@@ -607,24 +626,32 @@ else(NOT UNRES_WITH_MPI)
   endif(UNRES_MD_FF STREQUAL "GAB")
 
   if(UNRES_MD_FF STREQUAL "E0LL2Y")
-##    add_test(NAME UNRES_M_ENE_prota COMMAND ${mpiexec} ${boot_lam} ${np} 2 ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh prota_ENE 2 )
-##    add_test(NAME UNRES_M_ENE1_prota COMMAND ${mpiexec} ${boot_lam} ${np} 1 ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh prota_ENE 1 )
-##    add_test(NAME UNRES_M_MIN_prota COMMAND ${mpiexec} ${boot_lam} ${np} 2 ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh prota_MIN_CART 2 )
-##    add_test(NAME UNRES_M_MIN_INT COMMAND ${mpiexec} ${boot_lam} ${np} 1 ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh 1l2y_MIN_INT 1 )
-##    add_test(NAME UNRES_M_REGULAR COMMAND ${mpiexec} ${boot_lam} ${np} 1 ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh 1l2y_MIN_REGULAR_INT 1 )
-##    add_test(NAME UNRES_M_MD_microcanonical COMMAND ${mpiexec} ${boot_lam} ${np} 2 ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh 1l2y_micro 2 )
-##    add_test(NAME UNRES_M_Langevin COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_mpi_E0LL2Y.sh 1L2Y_L 2 2 )
 # no NH in src_MD-M code
-#    add_test(NAME UNRES_M_NoseHoover COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_mpi_E0LL2Y.sh 1L2Y_NH 2 2 )
-##    add_test(NAME UNRES_M_Berendsen COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_mpi_E0LL2Y.sh 1L2Y_B 2 2 )
-##    add_test(NAME UNRES_M_remd COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_mpi_E0LL2Y.sh 1L2Y_remd 1 8 )
-##    add_test(NAME UNRES_M_multi_ene COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_mpi_E0LL2Y.sh 1DKZcut-ene 2 2 )
-##    add_test(NAME UNRES_M_multi_ene1 COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_mpi_E0LL2Y.sh 1DKZcut-ene 1 1 )
-##    add_test(NAME UNRES_M_multi_min COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_mpi_E0LL2Y.sh 1DKZcut-min 2 2 )
-##    add_test(NAME UNRES_M_multi_microcanonical COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_mpi_E0LL2Y.sh 1DKZcut-micro 2 2 )
-##    add_test(NAME UNRES_M_multi_Berendsen COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_mpi_E0LL2Y.sh 1DKZcut-ber 2 2 )
-##    add_test(NAME UNRES_M_multi_Langevin COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_mpi_E0LL2Y.sh 1DKZcut-lang 2 2 )
-
+    add_test(NAME UNRES_M_ENE_prota COMMAND ${mpiexec} ${boot_lam} ${np} 2 ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh prota_ENE 2 )
+    add_test(NAME UNRES_M_ENE1_prota COMMAND ${mpiexec} ${boot_lam} ${np} 1 ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh prota_ENE 1 )
+    add_test(NAME UNRES_M_CHECKGRAD_prota COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_mpi_E0LL2Y.sh prota_CHECKGRAD 2 2 )   
+    add_test(NAME UNRES_M_CHECKGRAD1_prota COMMAND ${mpiexec} ${boot_lam} ${np} 1 ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh prota_CHECKGRAD 1 )   
+    add_test(NAME UNRES_M_CHECKGRAD_homology COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_mpi_E0LL2Y.sh Ts866_checkgrad_full 2 2 )   
+    add_test(NAME UNRES_M_CHECKGRAD1_homology COMMAND ${mpiexec} ${boot_lam} ${np} 1 ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh Ts866_checkgrad_full 1 )   
+    add_test(NAME UNRES_M_MIN_prota COMMAND ${mpiexec} ${boot_lam} ${np} 2 ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh prota_MIN_CART 2 )
+    add_test(NAME UNRES_M_MIN_INT COMMAND ${mpiexec} ${boot_lam} ${np} 1 ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh 1l2y_MIN_INT 1 )
+    add_test(NAME UNRES_M_REGULAR COMMAND ${mpiexec} ${boot_lam} ${np} 1 ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh 1l2y_MIN_REGULAR_INT 1 )
+    add_test(NAME UNRES_M_MD_microcanonical COMMAND ${mpiexec} ${boot_lam} ${np} 2 ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh 1l2y_micro 2 )
+    add_test(NAME UNRES_M_Langevin COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_mpi_E0LL2Y.sh 1L2Y_L 2 2 )
+# no NH in src_MD-M code
+##    add_test(NAME UNRES_M_NoseHoover COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_mpi_E0LL2Y.sh 1L2Y_NH 2 2 )
+    add_test(NAME UNRES_M_Berendsen COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_mpi_E0LL2Y.sh 1L2Y_B 2 2 )
+    add_test(NAME UNRES_M_remd COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_mpi_E0LL2Y.sh 1L2Y_remd 1 8 )
+    add_test(NAME UNRES_M_ss_static_min COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_mpi_E0LL2Y.sh 1ei0_min 1 2 )
+#mutlichain
+    add_test(NAME UNRES_M_multi_ene COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_mpi_E0LL2Y.sh 1DKZcut-ene 2 2 )
+    add_test(NAME UNRES_M_multi_ene1 COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_mpi_E0LL2Y.sh 1DKZcut-ene 1 1 )
+    add_test(NAME UNRES_M_multi_checkgrad COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_mpi_E0LL2Y.sh 1DKZcut-checkgrad 2 2 )
+    add_test(NAME UNRES_M_multi_checkgrad1 COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_mpi_E0LL2Y.sh 1DKZcut-checkgrad 1 1 )
+    add_test(NAME UNRES_M_multi_min COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_mpi_E0LL2Y.sh 1DKZcut-min 2 2 )
+    add_test(NAME UNRES_M_multi_microcanonical COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_mpi_E0LL2Y.sh 1DKZcut-micro 2 2 )
+    add_test(NAME UNRES_M_multi_Berendsen COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_mpi_E0LL2Y.sh 1DKZcut-ber 2 2 )
+    add_test(NAME UNRES_M_multi_Langevin COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_mpi_E0LL2Y.sh 1DKZcut-lang 2 2 )
   endif(UNRES_MD_FF STREQUAL "E0LL2Y")
 
 endif(NOT UNRES_WITH_MPI)