--- /dev/null
+ subroutine proc_cont
+ implicit real*8 (a-h,o-z)
+ include 'DIMENSIONS'
+ include 'DIMENSIONS.ZSCOPT'
+ include 'DIMENSIONS.COMPAR'
+ include 'COMMON.IOUNITS'
+ include 'COMMON.TIME1'
+ include 'COMMON.SBRIDGE'
+ include 'COMMON.CONTROL'
+ include 'COMMON.COMPAR'
+ include 'COMMON.CHAIN'
+ include 'COMMON.HEADER'
+ include 'COMMON.CONTACTS1'
+ include 'COMMON.PEPTCONT'
+ include 'COMMON.GEO'
+ write (iout,*) "proc_cont: nlevel",nlevel
+ if (nlevel.lt.0) then
+ write (iout,*) "call define_fragments"
+ call define_fragments
+ else
+ write (iout,*) "call secondary2"
+ call secondary2(.true.,.false.,ncont_pept_ref,icont_pept_ref,
+ & isec_ref)
+ endif
+ write (iout,'(80(1h=))')
+ write (iout,*) "Electrostatic contacts"
+ call contacts_between_fragments(.true.,0,ncont_pept_ref,
+ & icont_pept_ref,ncont_frag_ref(1),icont_frag_ref(1,1,1))
+ write (iout,'(80(1h=))')
+ write (iout,*) "Side chain contacts"
+ call contacts_between_fragments(.true.,0,ncont_ref,
+ & icont_ref,nsccont_frag_ref(1),isccont_frag_ref(1,1,1))
+ if (nlevel.lt.0) then
+ do i=1,nfrag(1)
+ ind=icant(i,i)
+ len_cut=1000
+ if (istruct(i).le.1) then
+ len_cut=max0(len_frag(i,1)*4/5,3)
+ else if (istruct(i).eq.2 .or. istruct(i).eq.4) then
+ len_cut=max0(len_frag(i,1)*2/5,3)
+ endif
+ write (iout,*) "i",i," istruct",istruct(i)," ncont_frag",
+ & ncont_frag_ref(ind)," len_cut",len_cut,
+ & " icont_single",icont_single," iloc_single",iloc_single
+ iloc(i)=iloc_single
+ if (iloc(i).gt.0) write (iout,*)
+ & "Local structure used to compare structure of fragment",i,
+ & " to native."
+ if (istruct(i).ne.3 .and. istruct(i).ne.0
+ & .and. icont_single.gt.0 .and.
+ & ncont_frag_ref(ind).ge.len_cut) then
+ write (iout,*) "Electrostatic contacts used to compare",
+ & " structure of fragment",i," to native."
+ ielecont(i,1)=1
+ isccont(i,1)=0
+ else if (icont_single.gt.0 .and. nsccont_frag_ref(ind)
+ & .ge.len_cut) then
+ write (iout,*) "Side chain contacts used to compare",
+ & " structure of fragment",i," to native."
+ isccont(i,1)=1
+ ielecont(i,1)=0
+ else
+ write (iout,*) "Contacts not used to compare",
+ & " structure of fragment",i," to native."
+ ielecont(i,1)=0
+ isccont(i,1)=0
+ nc_req_setf(i,1)=0
+ endif
+ if (irms_single.gt.0 .or. isccont(i,1).eq.0
+ & .and. ielecont(i,1).eq.0) then
+ write (iout,*) "RMSD used to compare",
+ & " structure of fragment",i," to native."
+ irms(i,1)=1
+ else
+ write (iout,*) "RMSD not used to compare",
+ & " structure of fragment",i," to native."
+ irms(i,1)=0
+ endif
+ enddo
+ endif
+ if (nlevel.lt.-1) then
+ call define_pairs
+ nlevel = -nlevel
+ if (nlevel.gt.3) nlevel=3
+ if (nlevel.eq.3) then
+ nfrag(3)=1
+ npiece(1,3)=nfrag(1)
+ do i=1,nfrag(1)
+ ipiece(i,1,3)=i
+ enddo
+ ielecont(1,3)=0
+ isccont(1,3)=0
+ irms(1,3)=1
+ n_shift(1,1,3)=0
+ n_shift(2,1,3)=0
+ endif
+ else if (nlevel.eq.-1) then
+ nlevel=1
+ endif
+ isnfrag(1)=0
+ do i=1,nlevel
+ isnfrag(i+1)=isnfrag(i)+nfrag(i)
+ enddo
+ ndigit=3*nfrag(1)
+ do i=2,nlevel
+ ndigit=ndigit+2*nfrag(i)
+ enddo
+ write (iout,*) "ndigit",ndigit
+ if (.not.binary .and. ndigit.gt.30) then
+ write (iout,*) "Highest class too large; switching to",
+ & " binary representation."
+ binary=.true.
+ endif
+ write (iout,*) "isnfrag",(isnfrag(i),i=1,nlevel+1)
+ write(iout,*) "rmscut_base_up",rmscut_base_up,
+ & " rmscut_base_low",rmscut_base_low," rmsup_lim",rmsup_lim
+ do i=1,nlevel
+ do j=1,nfrag(i)
+ length_frag = 0
+ if (i.eq.1) then
+ do k=1,npiece(j,i)
+ length_frag=length_frag+ifrag(2,k,j)-ifrag(1,k,j)+1
+ enddo
+ else
+ do k=1,npiece(j,i)
+ length_frag=length_frag+len_frag(ipiece(k,j,i),1)
+ enddo
+ endif
+ len_frag(j,i)=length_frag
+ rmscutfrag(1,j,i)=rmscut_base_up*length_frag
+ rmscutfrag(2,j,i)=rmscut_base_low*length_frag
+ if (rmscutfrag(1,j,i).lt.rmsup_lim)
+ & rmscutfrag(1,j,i)=rmsup_lim
+ if (rmscutfrag(1,j,i).gt.rmsupup_lim)
+ & rmscutfrag(1,j,i)=rmsupup_lim
+ enddo
+ enddo
+ write (iout,*) "Level",1," number of fragments:",nfrag(1)
+ do j=1,nfrag(1)
+ write (iout,*) npiece(j,1),(ifrag(1,k,j),ifrag(2,k,j),
+ & k=1,npiece(j,1)),len_frag(j,1),rmscutfrag(1,j,1),
+ & rmscutfrag(2,j,1),n_shift(1,j,1),n_shift(2,j,1),
+ & ang_cut(j)*rad2deg,ang_cut1(j)*rad2deg,frac_min(j),
+ & nc_fragm(j,1),nc_req_setf(j,1),istruct(j)
+ enddo
+ do i=2,nlevel
+ write (iout,*) "Level",i," number of fragments:",nfrag(i)
+ do j=1,nfrag(i)
+ write (iout,*) npiece(j,i),(ipiece(k,j,i),
+ & k=1,npiece(j,i)),len_frag(j,i),rmscutfrag(1,j,i),
+ & rmscutfrag(2,j,i),n_shift(1,j,i),n_shift(2,j,i),
+ & nc_fragm(j,i),nc_req_setf(j,i)
+ enddo
+ enddo
+ return
+ end