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)
44 lshift(ichain)=mod(ii,3)-1
48 write (iout,'(10i3)') (lshift(ichain),ichain=1,nchain)
53 sumodl=sumodl+dabs(cm(j,ichain)+lshift(ichain)*boxsize(j)
54 & -cm(j,jchain)-lshift(jchain)*boxsize(j))
58 write(iout,*) "sumodl",sumodl," sumodl_min",sumodl_min
60 if (sumodl.lt.sumodl_min) then
66 cm(j,ichain)=cm(j,ichain)+lmin(ichain)*boxsize(j)
67 shift_coord(j,ichain)=lmin(ichain)*boxsize(j)
72 ccm(j)=ccm(j)+cm(j,ichain)*chain_length(ichain)
79 write (iout,'(a,3f10.5)') "ccm ",(ccm(j),j=1,3)
80 write (iout,'(a,3f10.5)') "ccm_prev",(ccm_prev(j),j=1,3)
81 write (iout,'(a,3f10.5)') "diff ",(ccm(j)-ccm_prev(j),j=1,3)
82 write (iout,*) "shift_coord"
84 write (iout,'(i5,3f10.5)') i,(shift_coord(j,i),j=1,3)
89 c Shift the system by box dimensions so that its CM be closest to the
90 c CM of the pevious snapshot
96 if (ccm(j)-ccm_prev(j).gt.boxsize(j)/2) then
98 shift_coord(j,ichain)=shift_coord(j,ichain)-boxsize(j)
100 ccm(j)=ccm(j)-boxsize(j)
101 else if (ccm(j)-ccm_prev(j).lt.-boxsize(j)/2) then
103 shift_coord(j,ichain)=shift_coord(j,ichain)+boxsize(j)
105 ccm(j)=ccm(j)+boxsize(j)
121 c Simply shift the CM of the whole oligomer to the origin of the
125 shift_coord(j,ichain)=shift_coord(j,ichain)-ccm(j)
130 write (iout,*) "shift_coord"
132 write (iout,'(i5,3f10.5)') i,(shift_coord(j,i),j=1,3)
136 do i=chain_border1(1,ichain),chain_border1(2,ichain)
138 c(j,i)=c(j,i)+shift_coord(j,ichain)
139 c(j,i+nres)=c(j,i+nres)+shift_coord(j,ichain)