1 subroutine Econstr_back
2 c MD with umbrella_sampling using Wolyne's distance measure as a constraint
5 include 'COMMON.CONTROL'
8 include 'COMMON.QRESTR'
10 include 'COMMON.LANGEVIN'
13 include 'COMMON.LANGEVIN.lang0.5diag'
15 include 'COMMON.LANGEVIN.lang0'
18 include 'COMMON.CHAIN'
19 include 'COMMON.DERIV'
21 include 'COMMON.LOCAL'
22 include 'COMMON.INTERACT'
23 include 'COMMON.IOUNITS'
24 include 'COMMON.NAMES'
25 include 'COMMON.TIME1'
27 double precision utheta_i,dtheta_i,ugamma_i,dgamma_i,dxx,dyy,dzz
28 double precision pinorm
39 ii = ifrag_back(2,i,iset)-ifrag_back(1,i,iset)
41 c Deviations from theta angles
44 do j=ifrag_back(1,i,iset)+2,ifrag_back(2,i,iset)
45 dtheta_i=theta(j)-thetaref(j)
46 utheta_i=utheta_i+0.5d0*dtheta_i*dtheta_i
47 dutheta(j-2)=dutheta(j-2)+wfrag_back(1,i,iset)*dtheta_i/(ii-1)
49 utheta(i)=utheta_i/(ii-1)
51 c Deviations from gamma angles
54 do j=ifrag_back(1,i,iset)+3,ifrag_back(2,i,iset)
55 dgamma_i=pinorm(phi(j)-phiref(j))
56 c write (iout,*) j,phi(j),phi(j)-phiref(j)
57 ugamma_i=ugamma_i+0.5d0*dgamma_i*dgamma_i
58 dugamma(j-3)=dugamma(j-3)+wfrag_back(2,i,iset)*dgamma_i/(ii-2)
59 c write (iout,*) i,j,dgamma_i,wfrag_back(2,i,iset),dugamma(j-3)
61 ugamma(i)=ugamma_i/(ii-2)
63 c Deviations from local SC geometry
66 do j=ifrag_back(1,i,iset)+1,ifrag_back(2,i,iset)-1
70 uscdiff(i)=uscdiff(i)+dxx*dxx+dyy*dyy+dzz*dzz
72 duscdiff(k,j-1)=duscdiff(k,j-1)+wfrag_back(3,i,iset)*
73 & (dXX_C1tab(k,j)*dxx+dYY_C1tab(k,j)*dyy+dZZ_C1tab(k,j)*dzz)/
75 duscdiff(k,j)=duscdiff(k,j)+wfrag_back(3,i,iset)*
76 & (dXX_Ctab(k,j)*dxx+dYY_Ctab(k,j)*dyy+dZZ_Ctab(k,j)*dzz)/
78 duscdiffx(k,j)=duscdiffx(k,j)+wfrag_back(3,i,iset)*
79 & (dXX_XYZtab(k,j)*dxx+dYY_XYZtab(k,j)*dyy+dZZ_XYZtab(k,j)*dzz)
82 c write (iout,'(i5,6f10.5)') j,xxtab(j),yytab(j),zztab(j),
83 c & xxref(j),yyref(j),zzref(j)
85 uscdiff(i)=0.5d0*uscdiff(i)/(ii-1)
86 c write (iout,*) i," uscdiff",uscdiff(i)
88 c Put together deviations from local geometry
90 Uconst_back=Uconst_back+wfrag_back(1,i,iset)*utheta(i)+
91 & wfrag_back(2,i,iset)*ugamma(i)+wfrag_back(3,i,iset)*uscdiff(i)
92 c write(iout,*) "i",i," utheta",utheta(i)," ugamma",ugamma(i),
93 c & " uconst_back",uconst_back
94 utheta(i)=dsqrt(utheta(i))
95 ugamma(i)=dsqrt(ugamma(i))
96 uscdiff(i)=dsqrt(uscdiff(i))