5 include "COMMON.INTERACT"
6 include "COMMON.IOUNITS"
7 integer i,j,k,l,ichain,jchain,ii,lshift(maxchain),lmin(maxchain),
9 double precision sumodl,sumodl_min,shift_coord(3,maxchain),
10 & boxsize(3),cm(3,maxchain),ccm(3),ccm_prev(3)
11 logical previous,change
17 c print *,"ichain",ichain
18 nrestot=nrestot+chain_length(ichain)
22 do i=chain_border(1,ichain),chain_border(2,ichain)
25 cm(j,ichain)=cm(j,ichain)+c(j,i)
29 cm(j,ichain)=cm(j,ichain)/chain_length(ichain)
33 write (iout,*) "CM before shift"
35 write (iout,'(i5,3f10.5)') i,(cm(j,i),j=1,3)
45 lshift(ichain)=mod(ii,3)-1
49 write (iout,'(10i3)') (lshift(ichain),ichain=1,nchain)
54 sumodl=sumodl+dabs(cm(j,ichain)+lshift(ichain)*boxsize(j)
55 & -cm(j,jchain)-lshift(jchain)*boxsize(j))
59 write(iout,*) "sumodl",sumodl," sumodl_min",sumodl_min
61 if (sumodl.lt.sumodl_min) then
67 cm(j,ichain)=cm(j,ichain)+lmin(ichain)*boxsize(j)
68 shift_coord(j,ichain)=lmin(ichain)*boxsize(j)
73 ccm(j)=ccm(j)+cm(j,ichain)*chain_length(ichain)
80 write (iout,'(a,3f10.5)') "ccm ",(ccm(j),j=1,3)
81 write (iout,'(a,3f10.5)') "ccm_prev",(ccm_prev(j),j=1,3)
82 write (iout,'(a,3f10.5)') "diff ",(ccm(j)-ccm_prev(j),j=1,3)
83 write (iout,*) "shift_coord"
85 write (iout,'(i5,3f10.5)') i,(shift_coord(j,i),j=1,3)
90 c Shift the system by box dimensions so that its CM be closest to the
91 c CM of the pevious snapshot
97 if (ccm(j)-ccm_prev(j).gt.boxsize(j)/2) then
99 shift_coord(j,ichain)=shift_coord(j,ichain)-boxsize(j)
101 ccm(j)=ccm(j)-boxsize(j)
102 else if (ccm(j)-ccm_prev(j).lt.-boxsize(j)/2) then
104 shift_coord(j,ichain)=shift_coord(j,ichain)+boxsize(j)
106 ccm(j)=ccm(j)+boxsize(j)
122 c Simply shift the CM of the whole oligomer to the origin of the
126 shift_coord(j,ichain)=shift_coord(j,ichain)-ccm(j)
131 write (iout,*) "shift_coord"
133 write (iout,'(i5,3f10.5)') i,(shift_coord(j,i),j=1,3)
137 c write (iout,*) "shift_coord",shift_coord(:,ichain)
138 do i=chain_border1(1,ichain),chain_border1(2,ichain)
140 c(j,i)=c(j,i)+shift_coord(j,ichain)
141 c(j,i+nres)=c(j,i+nres)+shift_coord(j,ichain)