1 subroutine dEconstrQ_num
2 c Calculating numerical dUconst/ddc and dUconst/ddx
3 implicit real*8 (a-h,o-z)
5 include 'COMMON.CONTROL'
9 include 'COMMON.LANGEVIN'
11 include 'COMMON.LANGEVIN.lang0'
13 include 'COMMON.CHAIN'
14 include 'COMMON.DERIV'
16 include 'COMMON.LOCAL'
17 include 'COMMON.INTERACT'
18 include 'COMMON.IOUNITS'
19 include 'COMMON.NAMES'
20 include 'COMMON.TIME1'
21 double precision uzap1,uzap2
22 double precision dUcartan(3,0:MAXRES)
23 & ,dUxcartan(3,0:MAXRES),cdummy(3,0:MAXRES)
24 integer kstart,kend,lstart,lend,idummy
25 double precision delta /1.0d-7/
35 qfrag(ii)=qwolynes(ifrag(1,ii,iset),ifrag(2,ii,iset),.true.
37 uzap2=uzap2+wfrag(ii,iset)*harmonic(qfrag(ii),
41 kstart=ifrag(1,ipair(1,ii,iset),iset)
42 kend=ifrag(2,ipair(1,ii,iset),iset)
43 lstart=ifrag(1,ipair(2,ii,iset),iset)
44 lend=ifrag(2,ipair(2,ii,iset),iset)
45 qpair(ii)=qwolynes(kstart,kend,.false.,lstart,lend)
46 uzap2=uzap2+wpair(ii,iset)*harmonic(qpair(ii),
53 qfrag(ii)=qwolynes(ifrag(1,ii,iset),ifrag(2,ii,iset),.true.
55 uzap1=uzap1+wfrag(ii,iset)*harmonic(qfrag(ii),
59 kstart=ifrag(1,ipair(1,ii,iset),iset)
60 kend=ifrag(2,ipair(1,ii,iset),iset)
61 lstart=ifrag(1,ipair(2,ii,iset),iset)
62 lend=ifrag(2,ipair(2,ii,iset),iset)
63 qpair(ii)=qwolynes(kstart,kend,.false.,lstart,lend)
64 uzap1=uzap1+wpair(ii,iset)*harmonic(qpair(ii),
67 ducartan(j,i)=(uzap2-uzap1)/(delta)
70 c Calculating numerical gradients for dU/ddx
74 cdummy(j,i)=dc(j,i+nres)
75 dc(j,i+nres)=dc(j,i+nres)+delta
79 qfrag(ii)=qwolynes(ifrag(1,ii,iset),ifrag(2,ii,iset),.true.
81 uzap2=uzap2+wfrag(ii,iset)*harmonic(qfrag(ii),
85 kstart=ifrag(1,ipair(1,ii,iset),iset)
86 kend=ifrag(2,ipair(1,ii,iset),iset)
87 lstart=ifrag(1,ipair(2,ii,iset),iset)
88 lend=ifrag(2,ipair(2,ii,iset),iset)
89 qpair(ii)=qwolynes(kstart,kend,.false.,lstart,lend)
90 uzap2=uzap2+wpair(ii,iset)*harmonic(qpair(ii),
93 dc(j,i+nres)=cdummy(j,i)
97 qfrag(ii)=qwolynes(ifrag(1,ii,iset),
98 & ifrag(2,ii,iset),.true.,idummy,idummy)
99 uzap1=uzap1+wfrag(ii,iset)*harmonic(qfrag(ii),
103 kstart=ifrag(1,ipair(1,ii,iset),iset)
104 kend=ifrag(2,ipair(1,ii,iset),iset)
105 lstart=ifrag(1,ipair(2,ii,iset),iset)
106 lend=ifrag(2,ipair(2,ii,iset),iset)
107 qpair(ii)=qwolynes(kstart,kend,.false.,lstart,lend)
108 uzap1=uzap1+wpair(ii,iset)*harmonic(qpair(ii),
111 duxcartan(j,i)=(uzap2-uzap1)/(delta)
114 write(iout,*) "Numerical dUconst/ddc backbone "
116 write(iout,'(i5,3e15.5)') ii,(dUcartan(j,ii),j=1,3)
118 c write(iout,*) "Numerical dUconst/ddx side-chain "
120 c write(iout,'(i5,3e15.5)') ii,(dUxcartan(j,ii),j=1,3)
124 c---------------------------------------------------------------------------