checkgrad added to ctest
authorCezary Czaplewski <czarek@chem.univ.gda.pl>
Mon, 27 Feb 2017 01:24:09 +0000 (02:24 +0100)
committerCezary Czaplewski <czarek@chem.univ.gda.pl>
Mon, 27 Feb 2017 01:24:09 +0000 (02:24 +0100)
ctest/checkgrad.awk [new file with mode: 0644]
ctest/prota_CHECKGRAD.inp [new file with mode: 0644]
ctest/prota_unres_energy_check.sh
source/unres/src_MD/CMakeLists.txt

diff --git a/ctest/checkgrad.awk b/ctest/checkgrad.awk
new file mode 100644 (file)
index 0000000..c8968f6
--- /dev/null
@@ -0,0 +1,45 @@
+BEGIN{
+i=0
+k=1
+kk=0
+}{
+if ($0=="Gradient in virtual-bond and SC vectors") found=1
+if (found==1 && NF==0) found=2
+if (found==2 && NF>0) { 
+ i=i+1
+ if (i>3) {
+  i=1
+  k=k+6
+ }
+# print "###",i
+# print 
+ if (i==1) {
+#  print "TTT",substr($0,0,3)
+  if (!(substr($0,0,3) ~ /^[[:blank:]]*[0-9]*$/)) exit
+ }
+ if (found==2) {
+ for (j=0;j<6;j++){
+  a[i,k+j]=strtonum(substr($0,4+j*12,12))
+#  print "OOO",i,j,k,k+j,a[i,k+j]
+#  print "AAA",i,a[2,k+j]
+  if(i==3 && a[2,k+j]!=0) {
+   kk++
+   d[kk]=a[i,k+j]
+#   print "III",i,j,k,kk,d[kk]
+  }
+ }}
+}
+}END{
+diffmax=0
+for (x in d){
+  diff=d[x]-1
+  if (diff<0)diff=-diff
+  if (diff>diffmax) diffmax=diff
+}
+      
+print "Largest abs(numerical/analytical)= ",diffmax
+print "Sorted:"
+n = asort(d,sorted)
+for (i = 1; i <= n; i++)
+    printf "%4d %12.5E\n",i,sorted[i]
+}
\ No newline at end of file
diff --git a/ctest/prota_CHECKGRAD.inp b/ctest/prota_CHECKGRAD.inp
new file mode 100644 (file)
index 0000000..bf5813e
--- /dev/null
@@ -0,0 +1,12 @@
+Test of cartesian gradient - 1bdd - pdbstart unres_pdb
+SEED=-3059743 pdbstart pdbref refstr rescale_mode=2 unres_pdb checkgrad cart
+WLONG=1.00000 WSCP=1.23315 WELEC=0.84476 WBOND=1.00000 WANG=0.62954            &
+WSCLOC=0.10554 WTOR=1.34316 WTORD=1.26571 WCORRH=0.19212 WCORR5=0.00000        &
+WCORR6=0.00000 WEL_LOC=0.37357 WTURN3=1.40323 WTURN4=0.64673 WTURN6=0.00000    &
+WVDWPP=0.23173 WHPB=1.00000 WSCCOR=0.25                                        &
+CUTOFF=7.00000 WCORR4=0.00000
+prota_unres.pdb
+ 0
+ 0
+0 0 0 0
+300.0
index 8497f9d..c6e52b3 100755 (executable)
@@ -203,6 +203,18 @@ elif [ "$1" == "1ei0_min" ]; then
 #   exit 1
  fi
 
+elif [ "$1" == "prota_CHECKGRAD" ]; then
+ diff=`awk -f checkgrad.awk $file |grep 'Largest abs(numerical/analytical)='|awk '{printf "%15.10f",$3}'`
+ awk -f checkgrad.awk $file 
+ if [ `echo "a=${diff};a>0.0001"|bc -l` != "0" ]; then
+    echo 'ERROR largest abs(numerical/analytical)' ${diff}
+    echo ' greater than 0.0001'
+    exit 1
+ else
+    exit 0
+ fi
+
                
 else
  exit 1
index a3d755f..21e07a2 100644 (file)
@@ -444,6 +444,13 @@ 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} )
+
+
 
 
 #=========================================
@@ -557,6 +564,7 @@ if(NOT UNRES_WITH_MPI)
  
   if(UNRES_MD_FF STREQUAL "E0LL2Y")
     add_test(NAME UNRES_ENE_prota COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh prota_ENE 1 )
+    add_test(NAME UNRES_CHECKGRAD_prota COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh prota_CHECKGRAD 1 )
     add_test(NAME UNRES_MIN_prota COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh prota_MIN_CART 1 )
     add_test(NAME UNRES_MIN_INT COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh 1l2y_MIN_INT 1 )
     add_test(NAME UNRES_REGULAR COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh 1l2y_MIN_REGULAR_INT 1 )
@@ -577,6 +585,7 @@ else(NOT UNRES_WITH_MPI)
   if(UNRES_MD_FF STREQUAL "E0LL2Y")
     add_test(NAME UNRES_ENE_prota COMMAND ${mpiexec} ${boot_lam} ${np} 2 ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh prota_ENE 2 )
     add_test(NAME UNRES_ENE1_prota COMMAND ${mpiexec} ${boot_lam} ${np} 1 ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh prota_ENE 1 )
+    add_test(NAME UNRES_CHECKGRAD_prota COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh prota_CHECKGRAD 1 )   
     add_test(NAME UNRES_MIN_prota COMMAND ${mpiexec} ${boot_lam} ${np} 2 ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh prota_MIN_CART 2 )
     add_test(NAME UNRES_MIN_INT COMMAND ${mpiexec} ${boot_lam} ${np} 1 ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh 1l2y_MIN_INT 1 )
     add_test(NAME UNRES_REGULAR COMMAND ${mpiexec} ${boot_lam} ${np} 1 ${CMAKE_CURRENT_BINARY_DIR}/test_prota_E0LL2Y.sh 1l2y_MIN_REGULAR_INT 1 )