ctest for thermostats: Langevin, Nose-Hoover and Berendsen
[unres.git] / ctest / prota_unres_energy_check.sh
index e8107d7..3aa859d 100755 (executable)
 #!/bin/bash
 #
 # Writen by Dawid JagieÅ‚a and Adam Sieradzan
+# and Cezary Czaplewski
 #
 #
 #----------------------------------------
 # variables
 
-extremediff="10000.0"                  # extreme energy difference, comething went terribly wrong
-expectenergy="-56066670.000000"                # expected total energy
-cutoffdiff="0.1"                       # energy cutoff variation - more then this rises warning 
-file=$1                                        # Output file to search energy value from
+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="-56066670.000000"       # expected total energy
+ cutoffdiff="0.1"                      # 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="123.8713"               # 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="-49.435"                        # 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="-1.192"                 # 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
+ 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]}-103.162;if(0>a)a*=-1;a>5.0"|bc -l` != "0" ]; then
+  echo 'difference ' `echo "a=${array[0]}-103.162;if(0>a)a*=-1;a"|bc -l` 'from reference ave etot 103.162 greater than 5.0'
+  exit 1
+ elif [ `echo "a=${array[1]};a>0.01"|bc -l` != "0" ]; then
+  echo 'standard deviation greater than 0.01'
+  exit 1
+ else
+  exit 0
+ fi
+elif [ "$1" == "1L2Y_L" ] || [ "$1" == "1L2Y_NH" ]; then
+ chi2=`./matplotlib_fit_hist.py $file_stat`
+ 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
+ chi2=`./matplotlib_fit_hist.py $file_stat`
+ 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
+
+else
+ exit 1
+fi
+
+
 
 function floating(){
     echo $1 | sed -e 's/[eE]+/*10^/'
@@ -26,7 +114,7 @@ if [ ! -f $file ]; then
 fi
 
 # Check if energy value is not a number
-grepene=`grep ETOT $file| awk '{print $2}'`
+grepene=`grep ETOT $file|tail -1| awk '{print $2}'`
 if [[ $grepene == "NaN" ]]; then
     echo "CRITICAL: energy is NaN"
     exit 2