implicit real*8 (a-h,o-z)
include 'COMMON.GEO'
IF (DABS(X).LT.1.0D0) GOTO 1
- ARCOS=0.5D0*(PI+DSIGN(1.0D0,X)*PI)
+ ARCOS=PIPOL*(1.0d0-DSIGN(1.0D0,X))
RETURN
1 ARCOS=DACOS(X)
RETURN
character*3 seq,atom,res
character*80 card
dimension sccor(3,20)
+ double precision e1(3),e2(3),e3(3)
+ logical fail
integer rescode
ibeg=1
lsecondary=.false.
nres=nres+1
itype(nres)=21
if (unres_pdb) then
- c(1,nres)=c(1,nres-1)+3.8d0
- c(2,nres)=c(2,nres-1)
- c(3,nres)=c(3,nres-1)
+C 2/15/2013 by Adam: corrected insertion of the last dummy residue
+ call refsys(nres-3,nres-2,nres-1,e1,e2,e3,fail)
+ if (fail) then
+ e2(1)=0.0d0
+ e2(2)=1.0d0
+ e2(3)=0.0d0
+ endif
+ do j=1,3
+ c(j,nres)=c(j,nres-1)-3.8d0*e2(j)
+ enddo
else
do j=1,3
dcj=c(j,nres-2)-c(j,nres-3)
nsup=nsup-1
nstart_sup=2
if (unres_pdb) then
- c(1,1)=c(1,2)-3.8d0
- c(2,1)=c(2,2)
- c(3,1)=c(3,2)
+C 2/15/2013 by Adam: corrected insertion of the first dummy residue
+ call refsys(2,3,4,e1,e2,e3,fail)
+ if (fail) then
+ e2(1)=0.0d0
+ e2(2)=1.0d0
+ e2(3)=0.0d0
+ endif
+ do j=1,3
+ c(j,1)=c(j,2)-3.8d0*e2(j)
+ enddo
else
do j=1,3
dcj=c(j,4)-c(j,3)
enddo
iti=itype(i)
di=dist(i,nres+i)
-C 10/03/12 Adam: Correction for zero SC-SC bond length
- if (itype(i).ne.10 .and. itype(i).ne.21. and. di.eq.0.0d0)
+C 9/29/12 Adam: Correction for zero SC-SC bond length
+ if (itype(i).ne.10 .and. itype(i).ne.21. and. di.eq.0.0d0)
& di=dsc(itype(i))
vbld(i+nres)=di
if (itype(i).ne.10) then
enddo
return
end
-
implicit real*8 (a-h,o-z)
include 'COMMON.GEO'
IF (DABS(X).LT.1.0D0) GOTO 1
- ARCOS=0.5D0*(PI+DSIGN(1.0D0,X)*PI)
+ ARCOS=PIPOL*(1.0d0-DSIGN(1.0D0,X))
RETURN
1 ARCOS=DACOS(X)
RETURN
character*3 seq,atom,res
character*80 card
dimension sccor(3,20)
+ double precision e1(3),e2(3),e3(3)
+ logical fail
integer rescode
ibeg=1
lsecondary=.false.
nres=nres+1
itype(nres)=21
if (unres_pdb) then
- c(1,nres)=c(1,nres-1)+3.8d0
- c(2,nres)=c(2,nres-1)
- c(3,nres)=c(3,nres-1)
+C 2/15/2013 by Adam: corrected insertion of the last dummy residue
+ call refsys(nres-3,nres-2,nres-1,e1,e2,e3,fail)
+ if (fail) then
+ e2(1)=0.0d0
+ e2(2)=1.0d0
+ e2(3)=0.0d0
+ endif
+ do j=1,3
+ c(j,nres)=c(j,nres-1)-3.8d0*e2(j)
+ enddo
else
do j=1,3
dcj=c(j,nres-2)-c(j,nres-3)
nsup=nsup-1
nstart_sup=2
if (unres_pdb) then
- c(1,1)=c(1,2)-3.8d0
- c(2,1)=c(2,2)
- c(3,1)=c(3,2)
+C 2/15/2013 by Adam: corrected insertion of the first dummy residue
+ call refsys(2,3,4,e1,e2,e3,fail)
+ if (fail) then
+ e2(1)=0.0d0
+ e2(2)=1.0d0
+ e2(3)=0.0d0
+ endif
+ do j=1,3
+ c(j,1)=c(j,2)-3.8d0*e2(j)
+ enddo
else
do j=1,3
dcj=c(j,4)-c(j,3)
enddo
iti=itype(i)
di=dist(i,nres+i)
-C 10/03/12 Adam: Correction for zero SC-SC bond length
- if (itype(i).ne.10 .and. itype(i).ne.21. and. di.eq.0.0d0)
+C 9/29/12 Adam: Correction for zero SC-SC bond length
+ if (itype(i).ne.10 .and. itype(i).ne.21. and. di.eq.0.0d0)
& di=dsc(itype(i))
vbld(i+nres)=di
if (itype(i).ne.10) then
enddo
return
end
+C-----------------------------------------------------------------------------
+ subroutine refsys(i2,i3,i4,e1,e2,e3,fail)
+ implicit real*8 (a-h,o-z)
+ include 'DIMENSIONS'
+c this subroutine calculates unity vectors of a local reference system
+c defined by atoms (i2), (i3), and (i4). the x axis is the axis from
+c atom (i3) to atom (i2), and the xy plane is the plane defined by atoms
+c (i2), (i3), and (i4). z axis is directed according to the sign of the
+c vector product (i3)-(i2) and (i3)-(i4). sets fail to .true. if atoms
+c (i2) and (i3) or (i3) and (i4) coincide or atoms (i2), (i3), and (i4)
+c form a linear fragment. returns vectors e1, e2, and e3.
+ logical fail
+ double precision e1(3),e2(3),e3(3)
+ double precision u(3),z(3)
+ include "COMMON.CHAIN"
+ data coinc /1.0d-13/,align /1.0d-13/
+ fail=.false.
+ s1=0.0d0
+ s2=0.0d0
+ do 1 i=1,3
+ zi=c(i,i2)-c(i,i3)
+ ui=c(i,i4)-c(i,i3)
+ s1=s1+zi*zi
+ s2=s2+ui*ui
+ z(i)=zi
+ 1 u(i)=ui
+ s1=sqrt(s1)
+ s2=sqrt(s2)
+ if (s1.gt.coinc) goto 2
+ write (iout,1000) i2,i3,i1
+ fail=.true.
+ return
+ 2 if (s2.gt.coinc) goto 4
+ write(iout,1000) i3,i4,i1
+ fail=.true.
+ return
+ 4 s1=1.0/s1
+ s2=1.0/s2
+ v1=z(2)*u(3)-z(3)*u(2)
+ v2=z(3)*u(1)-z(1)*u(3)
+ v3=z(1)*u(2)-z(2)*u(1)
+ anorm=sqrt(v1*v1+v2*v2+v3*v3)
+ if (anorm.gt.align) goto 6
+ write (iout,1010) i2,i3,i4,i1
+ fail=.true.
+ return
+ 6 anorm=1.0/anorm
+ e3(1)=v1*anorm
+ e3(2)=v2*anorm
+ e3(3)=v3*anorm
+ e1(1)=z(1)*s1
+ e1(2)=z(2)*s1
+ e1(3)=z(3)*s1
+ e2(1)=e1(3)*e3(2)-e1(2)*e3(3)
+ e2(2)=e1(1)*e3(3)-e1(3)*e3(1)
+ e2(3)=e1(2)*e3(1)-e1(1)*e3(2)
+ 1000 format (/1x,' * * * error - atoms',i4,' and',i4,' coincide.')
+ 1010 format (/1x,' * * * error - atoms',2(i4,2h, ),i4,' form a linear')
+ return
+ end
& rattle,RESPA
common /inertia/ IP,ISC,MP,MSC
double precision scal_fric,rwat,etawat,gamp,
- & gamsc(ntyp),stdfp,stdfsc(ntyp),stdforcp(MAXRES),
+ & gamsc(ntyp1),stdfp,stdfsc(ntyp),stdforcp(MAXRES),
& stdforcsc(MAXRES),pstok,restok(ntyp+1),cPoise,Rb
common /langevin/ pstok,restok,gamp,gamsc,
& stdfp,stdfsc,stdforcp,stdforcsc,rwat,etawat,cPoise,Rb,surfarea,
+++ /dev/null
- double precision e1,e2,e3,u,z,s1,s2
- integer i1,i2,i3,i4
- common /refer/ e1(3),e2(3),e3(3),u(3),z(3),s1,s2,i1,i2,i3,i4
FFLAGS2 = -c -w -O0 -I$(INSTALL_DIR)/include
FFLAGSE = -c -w -O3 -ipo -ipo_obj -opt_report -I$(INSTALL_DIR)/include
-BIN = ../../../bin/unres/MD-M/unres_Tc_procor_oldparm_em64-D-symetr.exe
-#LIBS = -L$(INSTALL_DIR)/lib_pgi -lmpich xdrf/libxdrf.a
+BIN = ../../../bin/unres/MD/unres_Tc_procor_oldparm_em64-D-symetr.exe
+#LIBS = -L$(INSTALL_DIR)/lib_pgi -lmpich ../../lib/xdrf/libxdrf.a
#LIBS = -L$(INSTALL_DIR)/lib_ifort -lmpich xdrf/libxdrf.a
-LIBS = -L$(INSTALL_DIR)/lib -lmpich xdrf_em64/libxdrf.a -g -d2 -CA -CB
+LIBS = -L$(INSTALL_DIR)/lib -lmpich ../../lib/xdrf/libxdrf.a -g -d2 -CA -CB
ARCH = LINUX
PP = /lib/cpp -P
cc -o compinfo compinfo.c
./compinfo | true
${FC} ${FFLAGS} cinfo.f
- ${FC} ${OPT} -Wl,-M ${object} proc_proc.o cinfo.o ${LIBS} -o ${BIN}
+ ${FC} ${OPT} ${object} proc_proc.o cinfo.o ${LIBS} -o ${BIN}
+#${FC} ${OPT} -Wl,-M ${object} proc_proc.o cinfo.o ${LIBS} -o ${BIN}
clean:
proc_proc.o: proc_proc.c
${CC} ${CFLAGS} proc_proc.c
+
+add.o: add.f
+ ${FC} ${FFLAGS2} add.f
+
+blas.o: blas.f
+ ${FC} ${FFLAGS2} blas.f
+
+eigen.o: eigen.f
+ ${FC} ${FFLAGS2} eigen.f
implicit real*8 (a-h,o-z)
include 'COMMON.GEO'
IF (DABS(X).LT.1.0D0) GOTO 1
- ARCOS=0.5D0*(PI+DSIGN(1.0D0,X)*PI)
+ ARCOS=PIPOL*(1.0d0-DSIGN(1.0D0,X))
RETURN
1 ARCOS=DACOS(X)
RETURN
include 'COMMON.GEO'
include 'COMMON.CHAIN'
include 'COMMON.VAR'
- include 'COMMON.REFSYS'
include 'COMMON.IOUNITS'
include 'COMMON.MCM'
- dimension x(3),e(3,3),rot(3,3),trans(3,3)
+ dimension x(3),e(3,3),e1(3),e2(3),e3(3),rot(3,3),trans(3,3)
error=.false.
nend=nstart+nbond
if (print_mc.gt.2) then
i2=nend
i3=nstart
i4=nstart+1
- call refsys(error)
+ call refsys(i2,i3,i4,e1,e2,e3,error)
C Return, if couldn't define the reference system.
if (error) return
C Compute the transformation matrix.
character*3 seq,atom,res
character*80 card
dimension sccor(3,20)
+ double precision e1(3),e2(3),e3(3)
integer rescode
+ logical fail
ibeg=1
lsecondary=.false.
nhfrag=0
nres=nres+1
itype(nres)=21
if (unres_pdb) then
- c(1,nres)=c(1,nres-1)+3.8d0
- c(2,nres)=c(2,nres-1)
- c(3,nres)=c(3,nres-1)
+C 2/15/2013 by Adam: corrected insertion of the last dummy residue
+ call refsys(nres-3,nres-2,nres-1,e1,e2,e3,fail)
+ if (fail) then
+ e2(1)=0.0d0
+ e2(2)=1.0d0
+ e2(3)=0.0d0
+ endif
+ do j=1,3
+ c(j,nres)=c(j,nres-1)-3.8d0*e2(j)
+ enddo
else
do j=1,3
dcj=c(j,nres-2)-c(j,nres-3)
nsup=nsup-1
nstart_sup=2
if (unres_pdb) then
- c(1,1)=c(1,2)-3.8d0
- c(2,1)=c(2,2)
- c(3,1)=c(3,2)
+C 2/15/2013 by Adam: corrected insertion of the first dummy residue
+ call refsys(2,3,4,e1,e2,e3,fail)
+ if (fail) then
+ e2(1)=0.0d0
+ e2(2)=1.0d0
+ e2(3)=0.0d0
+ endif
+ do j=1,3
+ c(j,1)=c(j,2)-3.8d0*e2(j)
+ enddo
else
do j=1,3
dcj=c(j,4)-c(j,3)
implicit real*8 (a-h,o-z)
include 'DIMENSIONS'
logical fail
+ double precision e1(3),e2(3),e3(3)
+ double precision u(3),z(3)
include 'COMMON.IOUNITS'
include 'COMMON.CHAIN'
- include 'COMMON.REFSYS'
- double precision coinc/1.0D-4/,align /1.0D-7/
+ double precision coinc/1.0D-13/,align /1.0D-13/
fail=.false.
s1=0.0
s2=0.0
+++ /dev/null
- double precision e1,e2,e3,u,z,s1,s2
- integer i1,i2,i3,i4
- common /refer/ e1(3),e2(3),e3(3),u(3),z(3),s1,s2,i1,i2,i3,i4
implicit real*8 (a-h,o-z)
include 'COMMON.GEO'
IF (DABS(X).LT.1.0D0) GOTO 1
- ARCOS=0.5D0*(PI+DSIGN(1.0D0,X)*PI)
+ ARCOS=PIPOL*(1.0d0-DSIGN(1.0D0,X))
RETURN
1 ARCOS=DACOS(X)
RETURN
include 'COMMON.GEO'
include 'COMMON.CHAIN'
include 'COMMON.VAR'
- include 'COMMON.REFSYS'
include 'COMMON.IOUNITS'
include 'COMMON.MCM'
- dimension x(3),e(3,3),rot(3,3),trans(3,3)
+ dimension x(3),e(3,3),e1(3),e2(3),e3(3),rot(3,3),trans(3,3)
error=.false.
nend=nstart+nbond
if (print_mc.gt.2) then
i2=nend
i3=nstart
i4=nstart+1
- call refsys(error)
+ call refsys(i2,i3,i4,e1,e2,e3,error)
C Return, if couldn't define the reference system.
if (error) return
C Compute the transformation matrix.
character*3 seq,atom,res
character*80 card
dimension sccor(3,20)
+ double precision e1(3),e2(3),e3(3)
+ logical fail
integer rescode
ibeg=1
lsecondary=.false.
nres=nres+1
itype(nres)=21
if (unres_pdb) then
- c(1,nres)=c(1,nres-1)+3.8d0
- c(2,nres)=c(2,nres-1)
- c(3,nres)=c(3,nres-1)
+C 2/15/2013 by Adam: corrected insertion of the last dummy residue
+ call refsys(nres-3,nres-2,nres-1,e1,e2,e3,fail)
+ if (fail) then
+ e2(1)=0.0d0
+ e2(2)=1.0d0
+ e2(3)=0.0d0
+ endif
+ do j=1,3
+ c(j,nres)=c(j,nres-1)-3.8d0*e2(j)
+ enddo
else
do j=1,3
dcj=c(j,nres-2)-c(j,nres-3)
nsup=nsup-1
nstart_sup=2
if (unres_pdb) then
- c(1,1)=c(1,2)-3.8d0
- c(2,1)=c(2,2)
- c(3,1)=c(3,2)
+C 2/15/2013 by Adam: corrected insertion of the first dummy residue
+ call refsys(2,3,4,e1,e2,e3,fail)
+ if (fail) then
+ e2(1)=0.0d0
+ e2(2)=1.0d0
+ e2(3)=0.0d0
+ endif
+ do j=1,3
+ c(j,1)=c(j,2)-3.8d0*e2(j)
+ enddo
else
do j=1,3
dcj=c(j,4)-c(j,3)
enddo
return
end
-
- subroutine refsys(fail)
-c This subroutine calculates unit vectors of a local reference system
-c defined by atoms (i2), (i3), and (i4). The x axis is the axis from
+ subroutine refsys(i2,i3,i4,e1,e2,e3,fail)
+ implicit real*8 (a-h,o-z)
+ include 'DIMENSIONS'
+c this subroutine calculates unity vectors of a local reference system
+c defined by atoms (i2), (i3), and (i4). the x axis is the axis from
c atom (i3) to atom (i2), and the xy plane is the plane defined by atoms
c (i2), (i3), and (i4). z axis is directed according to the sign of the
-c vector product (i3)-(i2) and (i3)-(i4). Sets fail to .true. if atoms
+c vector product (i3)-(i2) and (i3)-(i4). sets fail to .true. if atoms
c (i2) and (i3) or (i3) and (i4) coincide or atoms (i2), (i3), and (i4)
-c form a linear fragment. Returns vectors e1, e2, and e3.
- implicit real*8 (a-h,o-z)
- include 'DIMENSIONS'
+c form a linear fragment. returns vectors e1, e2, and e3.
logical fail
+ double precision e1(3),e2(3),e3(3)
+ double precision u(3),z(3)
include 'COMMON.IOUNITS'
- include 'COMMON.CHAIN'
- include 'COMMON.REFSYS'
- double precision coinc/1.0D-4/,align /1.0D-7/
+ include "COMMON.CHAIN"
+ data coinc /1.0d-13/,align /1.0d-13/
fail=.false.
- s1=0.0
- s2=0.0
+ s1=0.0d0
+ s2=0.0d0
do 1 i=1,3
zi=c(i,i2)-c(i,i3)
ui=c(i,i4)-c(i,i3)
if (s1.gt.coinc) goto 2
write (iout,1000) i2,i3,i1
fail=.true.
-c do 3 i=1,3
-c 3 c(i,i1)=0.0D0
return
2 if (s2.gt.coinc) goto 4
write(iout,1000) i3,i4,i1
fail=.true.
- do 5 i=1,3
- 5 c(i,i1)=0.0D0
return
4 s1=1.0/s1
s2=1.0/s2
v1=z(2)*u(3)-z(3)*u(2)
v2=z(3)*u(1)-z(1)*u(3)
v3=z(1)*u(2)-z(2)*u(1)
- anorm=dsqrt(v1*v1+v2*v2+v3*v3)
+ anorm=sqrt(v1*v1+v2*v2+v3*v3)
if (anorm.gt.align) goto 6
write (iout,1010) i2,i3,i4,i1
fail=.true.
-c do 7 i=1,3
-c 7 c(i,i1)=0.0D0
return
- 6 anorm=1.0D0/anorm
+ 6 anorm=1.0/anorm
e3(1)=v1*anorm
e3(2)=v2*anorm
e3(3)=v3*anorm
e2(1)=e1(3)*e3(2)-e1(2)*e3(3)
e2(2)=e1(1)*e3(3)-e1(3)*e3(1)
e2(3)=e1(2)*e3(1)-e1(1)*e3(2)
- 1000 format (/1x,' * * * Error - atoms',i4,' and',i4,' coincide.',
- 1 'coordinates of atom',i4,' are set to zero.')
- 1010 format (/1x,' * * * Error - atoms',2(i4,2h, ),i4,' form a linear',
- 1 ' fragment. coordinates of atom',i4,' are set to zero.')
+ 1000 format (/1x,' * * * error - atoms',i4,' and',i4,' coincide.')
+ 1010 format (/1x,' * * * error - atoms',2(i4,2h, ),i4,' form a linear')
return
end
cored.o rmdd.o geomout_min.o readpdb.o \
intcartderiv.o \
MP.o printmat.o convert.o int_to_cart.o \
- djacob.o gen_rand_conf.o sc_move.o
+ djacob.o gen_rand_conf.o sc_move.o refsys.o
GAB: CPPFLAGS = -DPROCOR -DLINUX -DPGI -DUNRES -DISNAN \
-DSPLITELE -DLANG0 -DCRYST_BOND -DCRYST_THETA -DCRYST_SC
implicit real*8 (a-h,o-z)
include 'COMMON.GEO'
IF (DABS(X).LT.1.0D0) GOTO 1
- ARCOS=0.5D0*(PI+DSIGN(1.0D0,X)*PI)
+ ARCOS=PIPOL*(1.0d0-DSIGN(1.0D0,X))
RETURN
1 ARCOS=DACOS(X)
RETURN
character*3 seq,atom,res
character*80 card
dimension sccor(3,20)
+ double precision e1(3),e2(3),e3(3)
+ logical fail
integer rescode
ibeg=1
lsecondary=.false.
nres=nres+1
itype(nres)=21
if (unres_pdb) then
- c(1,nres)=c(1,nres-1)+3.8d0
- c(2,nres)=c(2,nres-1)
- c(3,nres)=c(3,nres-1)
+C 2/15/2013 by Adam: corrected insertion of the last dummy residue
+ call refsys(nres-3,nres-2,nres-1,e1,e2,e3,fail)
+ if (fail) then
+ e2(1)=0.0d0
+ e2(2)=1.0d0
+ e2(3)=0.0d0
+ endif
+ do j=1,3
+ c(j,nres)=c(j,nres-1)-3.8d0*e2(j)
+ enddo
else
do j=1,3
dcj=c(j,nres-2)-c(j,nres-3)
nsup=nsup-1
nstart_sup=2
if (unres_pdb) then
- c(1,1)=c(1,2)-3.8d0
- c(2,1)=c(2,2)
- c(3,1)=c(3,2)
+C 2/15/2013 by Adam: corrected insertion of the first dummy residue
+ call refsys(2,3,4,e1,e2,e3,fail)
+ if (fail) then
+ e2(1)=0.0d0
+ e2(2)=1.0d0
+ e2(3)=0.0d0
+ endif
+ do j=1,3
+ c(j,1)=c(j,2)-3.8d0*e2(j)
+ enddo
else
do j=1,3
dcj=c(j,4)-c(j,3)
enddo
return
end
-
do k=1,21
enetb(k,iii+1,iparm)=energia(k)
enddo
-#define DEBUG
#ifdef DEBUG
write (iout,'(2i5,f10.1,3e15.5)') i,iii,
& 1.0d0/(beta_h(ib,ipar)*1.987D-3),energia(0),eini,efree
call pdbout(ii+1,beta_h(ib,ipar),efree,energia(0),0.0d0,rmsdev)
close(ipdb)
#endif
-#undef DEBUG
endif
enddo ! iparm
write(iout,*) 'NNT=',NNT,' NCT=',NCT
c Read distance restraints
if (constr_dist.gt.0) then
+ if (refstr) call read_ref_structure(*11)
call read_dist_constr
call hpb_partition
endif
endif
write (iout,'(a)')
return
+ 11 stop "Error reading reference structure"
end
c-----------------------------------------------------------------------------
logical function seq_comp(itypea,itypeb,length)
call readi(controlcard,'CONSTR_DIST',constr_dist,0)
write (iout,*) "with_dihed_constr ",with_dihed_constr,
& " CONSTR_DIST",constr_dist
+ refstr = index(controlcard,'REFSTR').gt.0
+ pdbref = index(controlcard,'PDBREF').gt.0
call flush(iout)
return
end