1 subroutine orig_frame_chain(istart)
3 C Define the origin and orientation of the coordinate system starting
4 C at residue istart and locate sites istart+1 and istart+2. The
5 C coordinates of site istart and the respective dc and dc_norm must be
9 integer i,j,istart,ichain
10 double precision cost,sint,cosg,sing,aux
12 include 'COMMON.CHAIN'
13 include 'COMMON.IOUNITS'
14 include 'COMMON.LOCAL'
17 cost=dc_norm(1,istart)
18 aux=dsqrt(dc_norm(2,istart)**2+dc_norm(3,istart)**2)
19 cosg=dc_norm(2,istart)/aux
20 sing=dc_norm(3,istart)/aux
21 cost=dcos(theta(istart+2))
22 sint=dsin(theta(istart+2))
24 prod(1,2,istart)=-sint
25 prod(1,3,istart)=0.0d0
26 prod(2,1,istart)=sint*cosg
27 prod(2,2,istart)=cost*cosg
28 prod(2,3,istart)=-sing
29 prod(3,1,istart)=sint*sing
30 prod(3,2,istart)=cost*sing
32 aux=prod(1,1,istart)*(prod(2,2,istart)*prod(3,3,istart)
33 & -prod(3,2,istart)*prod(2,3,istart))
34 & -prod(1,2,istart)*(prod(2,1,istart)*prod(3,3,istart)
35 & -prod(3,1,istart)*prod(2,3,istart))
36 & +prod(1,3,istart)*(prod(2,1,istart)*prod(3,2,istart)
37 & -prod(3,1,istart)*prod(2,2,istart))
38 c write (iout,*) "orig_frame_chain prod",istart
40 c write(iout,'(i5,3f10.5)') i,(prod(i,j,istart),j=1,3)
42 c write (iout,*) "orig_frame_chain: prod",istart," determinant",aux
63 rt(i,j,istart)=t(i,j,istart)
66 call matmult(prod(1,1,istart),rt(1,1,istart),prod(1,1,istart+1))
67 c aux=prod(1,1,istart+1)*(prod(2,2,istart+1)*prod(3,3,istart+1)
68 c & -prod(3,2,istart+1)*prod(2,3,istart+1))
69 c & -prod(1,2,istart+1)*(prod(2,1,istart+1)*prod(3,3,istart+1)
70 c & -prod(3,1,istart+1)*prod(2,3,istart+1))
71 c & +prod(1,3,istart+1)*(prod(2,1,istart+1)*prod(3,2,istart+1)
72 c & -prod(3,1,istart+1)*prod(2,2,istart+1))
73 c write (iout,*) "orig_frame_chain prod",istart+1
75 c write(iout,'(i5,3f10.5)') i,(prod(i,j,istart+1),j=1,3)
77 c write (iout,*)"orig_frame_chain: prod",istart+1," determinant",aux
79 dc_norm(j,istart+1)=prod(j,1,istart+1)
80 dc(j,istart+1)=vbld(istart+2)*prod(j,1,istart+1)
81 c(j,istart+2)=c(j,istart+1)+dc(j,istart+1)
83 call locate_side_chain(istart+1)