From 5464a69bec1071f24a02d91a6c4483c3ace66c04 Mon Sep 17 00:00:00 2001 From: Cezary Czaplewski Date: Mon, 27 Feb 2017 02:24:09 +0100 Subject: [PATCH] checkgrad added to ctest --- ctest/checkgrad.awk | 45 ++++++++++++++++++++++++++++++++++++ ctest/prota_CHECKGRAD.inp | 12 ++++++++++ ctest/prota_unres_energy_check.sh | 12 ++++++++++ source/unres/src_MD/CMakeLists.txt | 9 ++++++++ 4 files changed, 78 insertions(+) create mode 100644 ctest/checkgrad.awk create mode 100644 ctest/prota_CHECKGRAD.inp diff --git a/ctest/checkgrad.awk b/ctest/checkgrad.awk new file mode 100644 index 0000000..c8968f6 --- /dev/null +++ b/ctest/checkgrad.awk @@ -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 index 0000000..bf5813e --- /dev/null +++ b/ctest/prota_CHECKGRAD.inp @@ -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 diff --git a/ctest/prota_unres_energy_check.sh b/ctest/prota_unres_energy_check.sh index 8497f9d..c6e52b3 100755 --- a/ctest/prota_unres_energy_check.sh +++ b/ctest/prota_unres_energy_check.sh @@ -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 diff --git a/source/unres/src_MD/CMakeLists.txt b/source/unres/src_MD/CMakeLists.txt index a3d755f..21e07a2 100644 --- a/source/unres/src_MD/CMakeLists.txt +++ b/source/unres/src_MD/CMakeLists.txt @@ -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 ) -- 1.7.9.5