include 'COMMON.MCM'
c include 'COMMON.MAP'
include 'COMMON.HEADER'
-c include 'COMMON.CSA'
+ include 'COMMON.CSA'
include 'COMMON.CHAIN'
c include 'COMMON.MUCA'
c include 'COMMON.MD'
call readi(controlcard,'MAXGEN',maxgen,10000)
call readi(controlcard,'MAXOVERLAP',maxoverlap,1000)
call readi(controlcard,"KDIAG",kdiag,0)
- call readi(controlcard,"RESCALE_MODE",rescale_mode,1)
+ call readi(controlcard,"RESCALE_MODE",rescale_mode,0)
if(me.eq.king .or. .not. out1file .and. fg_rank.eq.0)
& write (iout,*) "RESCALE_MODE",rescale_mode
split_ene=index(controlcard,'SPLIT_ENE').gt.0
bad(i,1)=scalscp*bad(i,1)
bad(i,2)=scalscp*bad(i,2)
enddo
- call rescale_weights(t_bath)
+c call rescale_weights(t_bath)
if(me.eq.king.or..not.out1file)
& write (iout,22) wsc,wscp,welec,wvdwpp,wbond,wang,wscloc,wtor,
& wtor_d,wstrain,wel_loc,wcorr,wcorr5,wcorr6,wsccor,wturn3,
call contact(.false.,ncont_ref,icont_ref,co)
if (sideadd) then
+C Following 2 lines for diagnostics; comment out if not needed
+ write (iout,*) "Before sideadd"
+ call intout
if(me.eq.king.or..not.out1file)
& write(iout,*)'Adding sidechains'
maxsi=1000
endif
enddo
endif
+C 10/03/12 Adam: Recalculate coordinates with new side chain positions
+ call chainbuild
+C Following 2 lines for diagnostics; comment out if not needed
+ write (iout,*) "After sideadd"
+ call intout
endif
if (indpdb.eq.0) then
C READ fragment information!!
C both routines should be in dfa.F file!!
- if (.not. (wdfa_dist.eq.0.0 .and. wdfa_tor.eq.0.0
+ if (.not. (wdfa_dist.eq.0.0 .and. wdfa_tor.eq.0.0 .and.
& wdfa_nei.eq.0.0 .and. wdfa_beta.eq.0.0)) then
call init_dfa_vars
print*, 'init_dfa_vars finished!'
enddo
call contact(.true.,ncont_ref,icont_ref,co)
endif
-c write (iout,*) "constr_dist",constr_dist,nstart_sup,nsup
- call flush(iout)
- if (constr_dist.gt.0) call read_dist_constr
-c write (iout,*) "After read_dist_constr nhpb",nhpb
- call hpb_partition
if(me.eq.king.or..not.out1file)
& write (iout,*) 'Contact order:',co
if (pdbref) then
enddo
endif
endif
+c write (iout,*) "constr_dist",constr_dist,nstart_sup,nsup
+ if (constr_dist.gt.0) then
+ call read_dist_constr
+ endif
+ if (nhpb.gt.0) call hpb_partition
+c write (iout,*) "After read_dist_constr nhpb",nhpb
+c call flush(iout)
if (indpdb.eq.0 .and. modecalc.ne.2 .and. modecalc.ne.4
& .and. modecalc.ne.8 .and. modecalc.ne.9 .and.
& modecalc.ne.10) then
endif
C Generate distance constraints, if the PDB structure is to be regularized.
- if (nthread.gt.0) then
- call read_threadbase
- endif
call setup_var
if (me.eq.king .or. .not. out1file)
& call intout
call readi(minimcard,'MINFUN',minfun,maxmin)
call reada(minimcard,'TOLF',tolf,1.0D-2)
call reada(minimcard,'RTOLF',rtolf,1.0D-4)
+ print_min_stat=min0(index(minimcard,'PRINT_MIN_STAT'),1)
+ print_min_res=min0(index(minimcard,'PRINT_MIN_RES'),1)
+ print_min_ini=min0(index(minimcard,'PRINT_MIN_INI'),1)
write (iout,'(/80(1h*)/20x,a/80(1h*))')
& 'Options in energy minimization:'
write (iout,'(4(a,i5),a,1pe14.5,a,1pe14.5)')
integer ifrag_(2,100),ipair_(2,100)
double precision wfrag_(100),wpair_(100)
character*500 controlcard
- write (iout,*) "Calling read_dist_constr"
- write (iout,*) "nres",nres," nstart_sup",nstart_sup," nsup",nsup
- call flush(iout)
+c write (iout,*) "Calling read_dist_constr"
+c write (iout,*) "nres",nres," nstart_sup",nstart_sup," nsup",nsup
+c call flush(iout)
call card_concat(controlcard)
call readi(controlcard,"NFRAG",nfrag_,0)
call readi(controlcard,"NPAIR",npair_,0)
c do i=1,npair_
c write (iout,*) i,ipair_(1,i),ipair_(2,i),wpair_(i)
c enddo
+ if (.not.refstr .and. nfrag.gt.0) then
+ write (iout,*)
+ & "ERROR: no reference structure to compute distance restraints"
+ write (iout,*)
+ & "Restraints must be specified explicitly (NDIST=number)"
+ stop
+ endif
+ if (nfrag.lt.2 .and. npair.gt.0) then
+ write (iout,*) "ERROR: Less than 2 fragments specified",
+ & " but distance restraints between pairs requested"
+ stop
+ endif
call flush(iout)
do i=1,nfrag_
if (ifrag_(1,i).lt.nstart_sup) ifrag_(1,i)=nstart_sup
if (wfrag_(i).gt.0.0d0) then
do j=ifrag_(1,i),ifrag_(2,i)-1
do k=j+1,ifrag_(2,i)
- write (iout,*) "j",j," k",k
+c write (iout,*) "j",j," k",k
ddjk=dist(j,k)
if (constr_dist.eq.1) then
nhpb=nhpb+1
endif
enddo
do i=1,ndist_
- read (inp,*) ihpb(nhpb+1),jhpb(nhpb+1),forcon(nhpb+1)
+ read (inp,*) ihpb(nhpb+1),jhpb(nhpb+1),dhpb(i),dhpb1(i),
+ & ibecarb(i),forcon(nhpb+1)
if (forcon(nhpb+1).gt.0.0d0) then
nhpb=nhpb+1
- dhpb(nhpb)=dist(ihpb(nhpb),jhpb(nhpb))
+ if (ibecarb(i).gt.0) then
+ ihpb(i)=ihpb(i)+nres
+ jhpb(i)=jhpb(i)+nres
+ endif
+ if (dhpb(nhpb).eq.0.0d0)
+ & dhpb(nhpb)=dist(ihpb(nhpb),jhpb(nhpb))
+ endif
+ enddo
#ifdef MPI
- if (.not.out1file .or. me.eq.king)
- & write (iout,'(a,3i5,f8.2,f10.1)') "+dist.constr ",
- & nhpb,ihpb(nhpb),jhpb(nhpb),dhpb(nhpb),forcon(nhpb)
-#else
- write (iout,'(a,3i5,f8.2,f10.1)') "+dist.constr ",
- & nhpb,ihpb(nhpb),jhpb(nhpb),dhpb(nhpb),forcon(nhpb)
+ if (.not.out1file .or. me.eq.king) then
#endif
- endif
+ do i=1,nhpb
+ write (iout,'(a,3i5,2f8.2,i2,f10.1)') "+dist.constr ",
+ & i,ihpb(i),jhpb(i),dhpb(i),dhpb1(i),ibecarb(i),forcon(i)
enddo
call flush(iout)
+#ifdef MPI
+ endif
+#endif
return
end
c-------------------------------------------------------------------------------