&write (iout,'(a,i5,a)') "The following",nhpb-nss,
& " distance constraints have been imposed"
do i=nss+1,nhpb
- write (iout,'(3i6,f10.5)') i-nss,ihpb(i),jhpb(i),forcon(i)
+ write (iout,'(3i6,i2,3f10.5)') i-nss,ihpb(i),jhpb(i),
+ & ibecarb(i),dhpb(i),dhpb1(i),forcon(i)
enddo
#ifdef MPI
endif
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,2)
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
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
& i,' after ',nsi,' trials'
endif
enddo
+C 10/03/12 Adam: Recalculate coordinates with new side chain positions
+ call chainbuild
endif
+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 sequence if not taken from the pdb file.
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
+ call hpb_partition
+ endif
+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
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)')
open (isidep,file=sidename,status='old')
#else
open(1,file=pref_orig(:ilen(pref_orig))//'.inp',status='old',
- & readonly)
+ &action='read')
open (9,file=prefix(:ilen(prefix))//'.intin',status='unknown')
C open (18,file=prefix(:ilen(prefix))//'.entin',status='unknown')
C Get parameter filenames and open the parameter files.
call getenv_loc('BONDPAR',bondname)
- open (ibond,file=bondname,status='old',readonly)
+ open (ibond,file=bondname,status='old',action='read')
call getenv_loc('THETPAR',thetname)
- open (ithep,file=thetname,status='old',readonly)
+ open (ithep,file=thetname,status='old',action='read')
#ifndef CRYST_THETA
call getenv_loc('THETPARPDB',thetname_pdb)
print *,"thetname_pdb ",thetname_pdb
- open (ithep_pdb,file=thetname_pdb,status='old',readonly)
+ open (ithep_pdb,file=thetname_pdb,status='old',action='read')
print *,ithep_pdb," opened"
#endif
call getenv_loc('ROTPAR',rotname)
- open (irotam,file=rotname,status='old',readonly)
+ open (irotam,file=rotname,status='old',action='read')
#ifndef CRYST_SC
call getenv_loc('ROTPARPDB',rotname_pdb)
- open (irotam_pdb,file=rotname_pdb,status='old',readonly)
+ open (irotam_pdb,file=rotname_pdb,status='old',action='read')
#endif
call getenv_loc('TORPAR',torname)
- open (itorp,file=torname,status='old',readonly)
+ open (itorp,file=torname,status='old',action='read')
call getenv_loc('TORDPAR',tordname)
- open (itordp,file=tordname,status='old',readonly)
+ open (itordp,file=tordname,status='old',action='read')
call getenv_loc('SCCORPAR',sccorname)
- open (isccor,file=sccorname,status='old',readonly)
+ open (isccor,file=sccorname,status='old',action='read')
call getenv_loc('FOURIER',fouriername)
- open (ifourier,file=fouriername,status='old',readonly)
+ open (ifourier,file=fouriername,status='old',action='read')
call getenv_loc('ELEPAR',elename)
- open (ielep,file=elename,status='old',readonly)
+ open (ielep,file=elename,status='old',action='read')
call getenv_loc('SIDEPAR',sidename)
- open (isidep,file=sidename,status='old',readonly)
+ open (isidep,file=sidename,status='old',action='read')
#endif
#ifndef OLDSCP
C
#elif (defined G77)
open (iscpp,file=scpname,status='old')
#else
- open (iscpp,file=scpname,status='old',readonly)
+ open (iscpp,file=scpname,status='old',action='read')
#endif
#endif
call getenv_loc('PATTERN',patname)
#elif (defined G77)
open (icbase,file=patname,status='old')
#else
- open (icbase,file=patname,status='old',readonly)
+ open (icbase,file=patname,status='old',action='read')
#endif
#ifdef MPI
C Open output file only for CG processes
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
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-------------------------------------------------------------------------------