ctest gfortran UNRES_M_multi_min
[unres.git] / ctest / checkgrad.awk
1 BEGIN{
2 i=0
3 k=1
4 kk=0
5 }{
6 if ($0=="Gradient in virtual-bond and SC vectors") found=1
7 if (found==1 && NF==0) found=2
8 if (found==2 && NF>0) { 
9  i=i+1
10  if (i>3) {
11   i=1
12   k=k+6
13  }
14 # print "###",i
15 # print 
16  if (i==1) {
17 #  print "TTT",substr($0,0,3)
18   if (!(substr($0,0,3) ~ /^[[:blank:]]*[0-9]*$/)) exit
19  }
20  if (found==2) {
21  for (j=0;j<6;j++){
22   a[i,k+j]=strtonum(substr($0,4+j*12,12))
23 #  print "OOO",i,j,k,k+j,a[i,k+j]
24 #  print "AAA",i,a[2,k+j]
25   if(i==3 && ( a[2,k+j]>0.0000001 || a[2,k+j]<-0.0000001) ) {
26    kk++
27    d[kk]=a[i,k+j]
28 #   print "III",i,j,k,kk,d[kk]
29   }
30  }}
31 }
32 }END{
33 diffmax=0
34 for (x in d){
35   diff=d[x]-1
36   if (diff<0)diff=-diff
37   if (diff>diffmax) diffmax=diff
38 }
39       
40 print "Largest abs(1-numerical/analytical)= ",diffmax
41 print "Sorted:"
42 n = asort(d,sorted)
43 for (i = 1; i <= n; i++)
44     printf "%4d %12.5E\n",i,sorted[i]
45 }