& ntermd_2(-maxtor:maxtor,-maxtor:maxtor,-maxtor:maxtor,2)
C 9/18/99 - added Fourier coeffficients of the expansion of local energy
C surface
- double precision b1,b2,cc,dd,ee,ctilde,dtilde,b2tilde
+ double precision b1,b2,cc,dd,ee,ctilde,dtilde,b2tilde,b1tilde
integer nloctyp
common/fourier/ b1(2,-maxtor:maxtor),b2(2,-maxtor:maxtor)
& ,cc(2,2,-maxtor:maxtor),
C DO NOT EDIT THIS FILE - IT HAS BEEN GENERATED BY COMPINFO.C
-C 2 3 3401
+C 2 3 3404
subroutine cinfo
include 'COMMON.IOUNITS'
write(iout,*)'++++ Compile info ++++'
- write(iout,*)'Version 2.3 build 3401'
- write(iout,*)'compiled Mon Aug 6 05:26:44 2012'
+ write(iout,*)'Version 2.3 build 3404'
+ write(iout,*)'compiled Thu Aug 16 11:51:48 2012'
write(iout,*)'compiled by aks255@matrix.chem.cornell.edu'
write(iout,*)'OS name: Linux '
write(iout,*)'OS release: 2.6.34.9-69.fc13.x86_64 '
write (iout,*)
write (iout,*) 'Constants for double torsionals'
do iblock=1,2
- do i=1,ntortyp
- do j=-ntortyp,ntortyp
- do k=-ntortyp,ntortyp
+ do i=0,ntortyp-1
+ do j=-ntortyp+1,ntortyp-1
+ do k=-ntortyp+1,ntortyp-1
write (iout,*) 'ityp',i,' jtyp',j,' ktyp',k,
& ' nsingle',ntermd_1(i,j,k,iblock),
& ' ndouble',ntermd_2(i,j,k,iblock)
do i=1,nres-1
vbld(i+1)=vbl
vbld_inv(i+1)=1.0d0/vbld(i+1)
- vbld(i+1+nres)=dsc(itype(i+1))
- vbld_inv(i+1+nres)=dsc_inv(itype(i+1))
+ vbld(i+1+nres)=dsc(iabs(itype(i+1)))
+ vbld_inv(i+1+nres)=dsc_inv(iabs(itype(i+1)))
c print *,vbld(i+1),vbld(i+1+nres)
enddo
return
& vbldsc0_all(maxbondterm,ntyp,max_parm),
& aksc_all(maxbondterm,ntyp,max_parm),
& abond0_all(maxbondterm,ntyp,max_parm),
- & a0thet_all(ntyp,max_parm),athet_all(2,ntyp,max_parm),
- & bthet_all(2,ntyp,max_parm),polthet_all(0:3,ntyp,max_parm),
- & gthet_all(3,ntyp,max_parm),theta0_all(ntyp,max_parm),
- & sig0_all(ntyp,max_parm),sigc0_all(ntyp,max_parm),
+ & a0thet_all(-ntyp:ntyp,max_parm),
+ & athet_all(2,-ntyp:ntyp,-1:1,-1:1,max_parm),
+ & bthet_all(2,-ntyp:ntyp,-1:1,-1:1,max_parm),
+ & polthet_all(0:3,-ntyp:ntyp,max_parm),
+ & gthet_all(3,-ntyp:ntyp,max_parm),theta0_all(-ntyp:ntyp,max_parm),
+ & sig0_all(-ntyp:ntyp,max_parm),sigc0_all(-ntyp:ntyp,max_parm),
& aa0thet_all(maxthetyp1,maxthetyp1,maxthetyp1,max_parm),
& aathet_all(maxtheterm,maxthetyp1,maxthetyp1,maxthetyp1,max_parm),
& bbthet_all(maxsingle,maxtheterm2,maxthetyp1,maxthetyp1,
& ggthet_all(maxdouble,maxdouble,maxtheterm3,maxthetyp1,maxthetyp1,
& maxthetyp1,max_parm),
& dsc_all(ntyp1,max_parm),bsc_all(maxlob,ntyp,max_parm),
- & censc_all(3,maxlob,ntyp,max_parm),
- & gaussc_all(3,3,maxlob,ntyp,max_parm),dsc0_all(ntyp1,max_parm),
+ & censc_all(3,maxlob,-ntyp:ntyp,max_parm),
+ & gaussc_all(3,3,maxlob,-ntyp:ntyp,max_parm),
+ & dsc0_all(ntyp1,max_parm),
& sc_parmin_all(65,ntyp,max_parm),
- & v0_all(maxtor,maxtor,max_parm),
- & v1_all(maxterm,maxtor,maxtor,max_parm),
- & v2_all(maxterm,maxtor,maxtor,max_parm),
+ & v0_all(-maxtor:maxtor,-maxtor:maxtor,2,max_parm),
+ & v1_all(maxterm,-maxtor:maxtor,-maxtor:maxtor,2,max_parm),
+ & v2_all(maxterm,-maxtor:maxtor,-maxtor:maxtor,2,max_parm),
& vlor1_all(maxlor,maxtor,maxtor,max_parm),
& vlor2_all(maxlor,maxtor,maxtor,max_parm),
& vlor3_all(maxlor,maxtor,maxtor,max_parm),
- & v1c_all(2,maxtermd_1,maxtor,maxtor,maxtor,max_parm),
- & v1s_all(2,maxtermd_1,maxtor,maxtor,maxtor,max_parm),
- & v2c_all(maxtermd_2,maxtermd_2,maxtor,maxtor,maxtor,max_parm),
- & v2s_all(maxtermd_2,maxtermd_2,maxtor,maxtor,maxtor,max_parm),
- & b1_all(2,maxtor,max_parm),b2_all(2,maxtor,max_parm),
- & cc_all(2,2,maxtor,max_parm),dd_all(2,2,maxtor,max_parm),
- & ee_all(2,2,maxtor,max_parm),ctilde_all(2,2,maxtor,max_parm),
- & dtilde_all(2,2,maxtor,max_parm),b1tilde_all(2,maxtor,max_parm),
+ & v1c_all(2,maxtermd_1,-maxtor:maxtor,-maxtor:maxtor,
+ & -maxtor:maxtor,2,max_parm),
+ & v1s_all(2,maxtermd_1,-maxtor:maxtor,-maxtor:maxtor,
+ & -maxtor:maxtor,2,max_parm),
+ & v2c_all(maxtermd_2,maxtermd_2,-maxtor:maxtor,
+ & -maxtor:maxtor,-maxtor:maxtor,2,max_parm),
+ & v2s_all(maxtermd_2,maxtermd_2,-maxtor:maxtor,-maxtor:maxtor,
+ & -maxtor:maxtor,2,max_parm),
+ & b1_all(2,-maxtor:maxtor,max_parm),
+ & b2_all(2,-maxtor:maxtor,max_parm),
+ & cc_all(2,2,-maxtor:maxtor,max_parm),
+ & dd_all(2,2,-maxtor:maxtor,max_parm),
+ & ee_all(2,2,-maxtor:maxtor,max_parm),
+ & ctilde_all(2,2,-maxtor:maxtor,max_parm),
+ & dtilde_all(2,2,-maxtor:maxtor,max_parm),
+ & b1tilde_all(2,-maxtor:maxtor,max_parm),
& app_all(2,2,max_parm),bpp_all(2,2,max_parm),
& ael6_all(2,2,max_parm),ael3_all(2,2,max_parm),
& aad_all(ntyp,2,max_parm),bad_all(ntyp,2,max_parm),
& v1ss_all(max_parm),v2ss_all(max_parm),v3ss_all(max_parm),
& v1sccor_all(maxterm_sccor,ntyp,ntyp,max_parm),
& v2sccor_all(maxterm_sccor,ntyp,ntyp,max_parm)
- integer nlob_all(ntyp1,max_parm),nlor_all(maxtor,maxtor,max_parm),
- & nterm_all(maxtor,maxtor,max_parm),
- & ntermd1_all(maxtor,maxtor,maxtor,max_parm),
- & ntermd2_all(maxtor,maxtor,maxtor,max_parm),
+ integer nlob_all(ntyp1,max_parm),
+ & nlor_all(-maxtor:maxtor,-maxtor:maxtor,2,max_parm),
+ & nterm_all(-maxtor:maxtor,-maxtor:maxtor,2,max_parm),
+ & ntermd1_all(-maxtor:maxtor,-maxtor:maxtor,
+ & -maxtor:maxtor,2,max_parm),
+ & ntermd2_all(-maxtor:maxtor,-maxtor:maxtor,
+ & -maxtor:maxtor,2,max_parm),
& nbondterm_all(ntyp,max_parm),nthetyp_all(max_parm),
& ithetyp_all(ntyp1,max_parm),ntheterm_all(max_parm),
& ntheterm2_all(max_parm),ntheterm3_all(max_parm),
INSTALL_DIR = /users/software/mpich-1.2.7p1_intel-10.1_em64_ssh
-BIN = ../bin
+BIN = ../../../bin
CC = cc
FC = ifort
#OPT = -O3 -ip -w
OPT = -g -CB
FFLAGS = -c ${OPT} -I. -I./include_unres -I$(INSTALL_DIR)/include
#FFLAGS = -c -g -C -I. -I./include_unres -I$(INSTALL_DIR)/include
-LIBS = -L$(INSTALL_DIR)/lib -lmpich xdrf/libxdrf.a
+LIBS = -L$(INSTALL_DIR)/lib -lmpich ../../lib/xdrf/libxdrf.a
#LIBS = -L$(INSTALL_DIR)/lib_pgi -lmpich -lpmpich -Vaxlib
#CPPFLAGS = -DMPI -DLINUX -DUNRES -DMOMENT -DCHECKGRAD -DPGI
#CPPFLAGS = -DMPI -DLINUX -DUNRES -DCHECKGRAD -DPGI -DMYGETENV
* Derivatives in alpha and omega:
*
do i=2,nres-1
- dsci=dsc(itype(i))
+ dsci=dsc(iabs(itype(i)))
alphi=alph(i)
omegi=omeg(i)
cd print *,'i=',i,' dsci=',dsci,' alphi=',alphi,' omegi=',omegi
C DO NOT EDIT THIS FILE - IT HAS BEEN GENERATED BY COMPINFO.C
-C 0 0 657
+C 0 0 678
subroutine cinfo
include 'COMMON.IOUNITS'
write(iout,*)'++++ Compile info ++++'
- write(iout,*)'Version 0.0 build 657'
- write(iout,*)'compiled Mon Feb 20 21:53:55 2012'
+ write(iout,*)'Version 0.0 build 678'
+ write(iout,*)'compiled Fri Aug 17 02:06:23 2012'
write(iout,*)'compiled by aks255@matrix.chem.cornell.edu'
write(iout,*)'OS name: Linux '
- write(iout,*)'OS release: 2.6.34.8-68.fc13.x86_64 '
- write(iout,*)'OS version: #1 SMP Thu Feb 17 15:03:58 UTC 2011 '
+ write(iout,*)'OS release: 2.6.34.9-69.fc13.x86_64 '
+ write(iout,*)'OS version:',
+ & ' #1 SMP Tue May 3 09:23:03 UTC 2011 '
write(iout,*)'flags:'
write(iout,*)'INSTALL_DIR = /users/software/mpich-1.2.7p1_int...'
- write(iout,*)'BIN = ../bin'
+ write(iout,*)'BIN = ../../../bin'
write(iout,*)'CC = cc'
write(iout,*)'FC = ifort'
write(iout,*)'OPT = -g -CB'
write(iout,*)'FFLAGS = -c ${OPT} -I. -I./include_unres -I$(IN...'
- write(iout,*)'LIBS = -L$(INSTALL_DIR)/lib -lmpich xdrf/libxdr...'
+ write(iout,*)'LIBS = -L$(INSTALL_DIR)/lib -lmpich ../../lib/x...'
write(iout,*)'CPPFLAGS = -DMPI -DLINUX -DUNRES -DSPLITELE -DP...'
write(iout,*)'objects = \\'
write(iout,*)' wham_multparm.o \\'
endif
110 format (a,'(',i3,')',9f8.3)
do i=ist,ien-kkk
- iti=itype(i)
+ iti=iabs(itype(i))
if (iti.le.0 .or. iti.gt.ntyp) cycle
do j=i+kkk,ien
- itj=itype(j)
+ itj=iabs(itype(j))
if (itj.le.0 .or. itj.gt.ntyp) cycle
itypi=iti
itypj=itj
it2=itype(i2)
write (iout,'(i3,2x,a,i4,2x,a,i4,5f8.3,3f10.5)')
& i,restyp(it1),i1,restyp(it2),i2,cscore(i),
- & sc_cutoff(it1,it2),ddsc(i),ddla(i),ddlb(i),
+ & sc_cutoff(iabs(it1),iabs(it2)),ddsc(i),ddla(i),ddlb(i),
& omt1(i),omt2(i),omt12(i)
enddo
endif
& " the value read in: ",energia(0),eini," point",
& iii+1,indstart(me1)+iii," T",
& 1.0d0/(1.987D-3*beta_h(ib,ipar))
+c call intout
+ call pdbout(indstart(me1)+iii,
+ & 1.0d0/(1.987D-3*beta_h(ib,ipar)),
+ &energia(0),eini,0.0d0,0.0d0)
+ call enerprint(energia(0),fT)
errmsg_count=errmsg_count+1
if (errmsg_count.gt.maxerrmsg_count)
& write (iout,*) "Too many warning messages"
do j=nnt,nct
itj=itype(j)
if (itype(j).ne.10 .and.itype(j).ne.21 .and.
- & (vbld(nres+j)-dsc(itj)).gt.2.0d0) then
+ & (vbld(nres+j)-dsc(iabs(itj))).gt.2.0d0) then
if (iprint.gt.0)
& write (iout,*) "Bad CA-SC bond length",j," ",vbld(nres+j),
& " for conformation",ii
evdw=0.0D0
evdw_t=0.0d0
do i=iatsc_s,iatsc_e
- itypi=itype(i)
+ itypi=iabs(itype(i))
if (itypi.eq.21) cycle
- itypi1=itype(i+1)
+ itypi1=iabs(itype(i+1))
xi=c(1,nres+i)
yi=c(2,nres+i)
zi=c(3,nres+i)
cd write (iout,*) 'i=',i,' iint=',iint,' istart=',istart(i,iint),
cd & 'iend=',iend(i,iint)
do j=istart(i,iint),iend(i,iint)
- itypj=itype(j)
+ itypj=iabs(itype(j))
if (itypj.eq.21) cycle
xj=c(1,nres+j)-xi
yj=c(2,nres+j)-yi
evdw=0.0D0
evdw_t=0.0d0
do i=iatsc_s,iatsc_e
- itypi=itype(i)
+ itypi=iabs(itype(i))
if (itypi.eq.21) cycle
- itypi1=itype(i+1)
+ itypi1=iabs(itype(i+1))
xi=c(1,nres+i)
yi=c(2,nres+i)
zi=c(3,nres+i)
C
do iint=1,nint_gr(i)
do j=istart(i,iint),iend(i,iint)
- itypj=itype(j)
+ itypj=iabs(itype(j))
if (itypj.eq.21) cycle
xj=c(1,nres+j)-xi
yj=c(2,nres+j)-yi
c endif
ind=0
do i=iatsc_s,iatsc_e
- itypi=itype(i)
+ itypi=iabs(itype(i))
if (itypi.eq.21) cycle
- itypi1=itype(i+1)
+ itypi1=iabs(itype(i+1))
xi=c(1,nres+i)
yi=c(2,nres+i)
zi=c(3,nres+i)
do iint=1,nint_gr(i)
do j=istart(i,iint),iend(i,iint)
ind=ind+1
- itypj=itype(j)
+ itypj=iabs(itype(j))
if (itypj.eq.21) cycle
dscj_inv=vbld_inv(j+nres)
chi1=chi(itypi,itypj)
c if (icall.gt.0) lprn=.true.
ind=0
do i=iatsc_s,iatsc_e
- itypi=itype(i)
+ itypi=iabs(itype(i))
if (itypi.eq.21) cycle
- itypi1=itype(i+1)
+ itypi1=iabs(itype(i+1))
xi=c(1,nres+i)
yi=c(2,nres+i)
zi=c(3,nres+i)
do iint=1,nint_gr(i)
do j=istart(i,iint),iend(i,iint)
ind=ind+1
- itypj=itype(j)
+ itypj=iabs(itype(j))
if (itypj.eq.21) cycle
dscj_inv=vbld_inv(j+nres)
sig0ij=sigma(itypi,itypj)
c if (icall.gt.0) lprn=.true.
ind=0
do i=iatsc_s,iatsc_e
- itypi=itype(i)
+ itypi=iabs(itype(i))
if (itypi.eq.21) cycle
- itypi1=itype(i+1)
+ itypi1=iabs(itype(i+1))
xi=c(1,nres+i)
yi=c(2,nres+i)
zi=c(3,nres+i)
do iint=1,nint_gr(i)
do j=istart(i,iint),iend(i,iint)
ind=ind+1
- itypj=itype(j)
+ itypj=iabs(itype(j))
if (itypj.eq.21) cycle
dscj_inv=vbld_inv(j+nres)
sig0ij=sigma(itypi,itypj)
do iint=1,nscp_gr(i)
do j=iscpstart(i,iint),iscpend(i,iint)
- itypj=itype(j)
+ itypj=iabs(itype(j))
if (itypj.eq.21) cycle
C Uncomment following three lines for SC-p interactions
c xj=c(1,nres+j)-xi
endif
C 24/11/03 AL: SS bridges handled separately because of introducing a specific
C distance and angle dependent SS bond potential.
- if (ii.gt.nres .and. itype(iii).eq.1 .and. itype(jjj).eq.1) then
+ if (ii.gt.nres .and. iabs(itype(iii)).eq.1 .and.
+ & iabs(itype(jjj)).eq.1) then
call ssbond_ene(iii,jjj,eij)
ehpb=ehpb+2*eij
else
include 'COMMON.VAR'
include 'COMMON.IOUNITS'
double precision erij(3),dcosom1(3),dcosom2(3),gg(3)
- itypi=itype(i)
+ itypi=iabs(itype(i))
xi=c(1,nres+i)
yi=c(2,nres+i)
zi=c(3,nres+i)
dyi=dc_norm(2,nres+i)
dzi=dc_norm(3,nres+i)
dsci_inv=dsc_inv(itypi)
- itypj=itype(j)
+ itypj=iabs(itype(j))
dscj_inv=dsc_inv(itypj)
xj=c(1,nres+j)-xi
yj=c(2,nres+j)-yi
logical energy_dec /.false./
double precision u(3),ud(3)
estr=0.0d0
+ estr1=0.0d0
write (iout,*) "distchainmax",distchainmax
do i=nnt+1,nct
if (itype(i-1).eq.21 .or. itype(i).eq.21) then
endif
enddo
- estr=0.5d0*AKP*estr
+ estr=0.5d0*AKP*estr+estr1
c
c 09/18/07 AL: multimodal bond potential based on AM1 CA-SC PMF's included
c
do i=nnt,nct
- iti=itype(i)
+ iti=iabs(itype(i))
if (iti.ne.10 .and. iti.ne.21) then
nbi=nbondterm(iti)
if (nbi.eq.1) then
C Zero the energy function and its derivative at 0 or pi.
call splinthet(theta(i),0.5d0*delta,ss,ssd)
it=itype(i-1)
+ ichir1=isign(1,itype(i-2))
+ ichir2=isign(1,itype(i))
+ if (itype(i-2).eq.10) ichir1=isign(1,itype(i-1))
+ if (itype(i).eq.10) ichir2=isign(1,itype(i-1))
+ if (itype(i-1).eq.10) then
+ itype1=isign(10,itype(i-2))
+ ichir11=isign(1,itype(i-2))
+ ichir12=isign(1,itype(i-2))
+ itype2=isign(10,itype(i))
+ ichir21=isign(1,itype(i))
+ ichir22=isign(1,itype(i))
+ endif
+
if (i.gt.3 .and. itype(i-2).ne.21) then
#ifdef OSF
phii=phi(i)
C In following comments this theta will be referred to as t_c.
thet_pred_mean=0.0d0
do k=1,2
- athetk=athet(k,it)
- bthetk=bthet(k,it)
+ athetk=athet(k,it,ichir1,ichir2)
+ bthetk=bthet(k,it,ichir1,ichir2)
+ if (it.eq.10) then
+ athetk=athet(k,itype1,ichir11,ichir12)
+ bthetk=bthet(k,itype2,ichir21,ichir22)
+ endif
thet_pred_mean=thet_pred_mean+athetk*y(k)+bthetk*z(k)
enddo
c write (iout,*) "thet_pred_mean",thet_pred_mean
thet_pred_mean=thet_pred_mean*ss+a0thet(it)
c write (iout,*) "thet_pred_mean",thet_pred_mean
C Derivatives of the "mean" values in gamma1 and gamma2.
- dthetg1=(-athet(1,it)*y(2)+athet(2,it)*y(1))*ss
- dthetg2=(-bthet(1,it)*z(2)+bthet(2,it)*z(1))*ss
+ dthetg1=(-athet(1,it,ichir1,ichir2)*y(2)
+ &+athet(2,it,ichir1,ichir2)*y(1))*ss
+ dthetg2=(-bthet(1,it,ichir1,ichir2)*z(2)
+ & +bthet(2,it,ichir1,ichir2)*z(1))*ss
+ if (it.eq.10) then
+ dthetg1=(-athet(1,itype1,ichir11,ichir12)*y(2)
+ &+athet(2,itype1,ichir11,ichir12)*y(1))*ss
+ dthetg2=(-bthet(1,itype2,ichir21,ichir22)*z(2)
+ & +bthet(2,itype2,ichir21,ichir22)*z(1))*ss
+ endif
if (theta(i).gt.pi-delta) then
call theteng(pi-delta,thet_pred_mean,theta0(it),f0,fprim0,
& E_tc0)
dephii=0.0d0
dephii1=0.0d0
theti2=0.5d0*theta(i)
- ityp2=ithetyp(itype(i-1))
+ ityp2=ithetyp(iabs(itype(i-1)))
do k=1,nntheterm
coskt(k)=dcos(k*theti2)
sinkt(k)=dsin(k*theti2)
#else
phii=phi(i)
#endif
- ityp1=ithetyp(itype(i-2))
+ ityp1=ithetyp(iabs(itype(i-2)))
do k=1,nsingle
cosph1(k)=dcos(k*phii)
sinph1(k)=dsin(k*phii)
#else
phii1=phi(i+1)
#endif
- ityp3=ithetyp(itype(i))
+ ityp3=ithetyp(iabs(itype(i)))
do k=1,nsingle
cosph2(k)=dcos(k*phii1)
sinph2(k)=dsin(k*phii1)
it=itype(i)
if (it.eq.21) cycle
if (it.eq.10) goto 1
- nlobit=nlob(it)
+ nlobit=nlob(iabs(it))
c print *,'i=',i,' it=',it,' nlobit=',nlobit
c write (iout,*) 'i=',i,' ssa=',ssa,' ssad=',ssad
theti=theta(i+1)-pipol
do iii=-1,1
do j=1,nlobit
- expfac=dexp(bsc(j,it)-0.5D0*contr(j,iii)+emin)
+ expfac=dexp(bsc(j,iabs(it))-0.5D0*contr(j,iii)+emin)
cd print *,'j=',j,' expfac=',expfac
escloc_i=escloc_i+expfac
do k=1,3
dersc12=0.0d0
do j=1,nlobit
- expfac=dexp(bsc(j,it)-0.5D0*contr(j)+emin)
+ expfac=dexp(bsc(j,iabs(it))-0.5D0*contr(j)+emin)
escloc_i=escloc_i+expfac
do k=1,2
dersc(k)=dersc(k)+Ax(k,j)*expfac
if (itype(i-2).eq.21 .or. itype(i-1).eq.21
& .or. itype(i).eq.21) cycle
if (itel(i-2).eq.0 .or. itel(i-1).eq.0) goto 1215
+ if (iabs(itype(i)).eq.20) then
+ iblock=2
+ else
+ iblock=1
+ endif
itori=itortyp(itype(i-2))
itori1=itortyp(itype(i-1))
phii=phi(i)
gloci=0.0D0
C Regular cosine and sine terms
- do j=1,nterm(itori,itori1)
- v1ij=v1(j,itori,itori1)
- v2ij=v2(j,itori,itori1)
+ do j=1,nterm(itori,itori1,iblock)
+ v1ij=v1(j,itori,itori1,iblock)
+ v2ij=v2(j,itori,itori1,iblock)
cosphi=dcos(j*phii)
sinphi=dsin(j*phii)
etors=etors+v1ij*cosphi+v2ij*sinphi
C
cosphi=dcos(0.5d0*phii)
sinphi=dsin(0.5d0*phii)
- do j=1,nlor(itori,itori1)
+ do j=1,nlor(itori,itori1,iblock)
vl1ij=vlor1(j,itori,itori1)
vl2ij=vlor2(j,itori,itori1)
vl3ij=vlor3(j,itori,itori1)
pom=vl2ij*cosphi+vl3ij*sinphi
pom1=1.0d0/(pom*pom+1.0d0)
etors=etors+vl1ij*pom1
+c if (energy_dec) etors_ii=etors_ii+
+c & vl1ij*pom1
pom=-pom*pom1*pom1
gloci=gloci+vl1ij*(vl3ij*cosphi-vl2ij*sinphi)*pom
enddo
C Subtract the constant term
- etors=etors-v0(itori,itori1)
+ etors=etors-v0(itori,itori1,iblock)
if (lprn)
& write (iout,'(2(a3,2x,i3,2x),2i3,6f8.3/26x,6f8.3/)')
& restyp(itype(i-2)),i-2,restyp(itype(i-1)),i-1,itori,itori1,
- & (v1(j,itori,itori1),j=1,6),(v2(j,itori,itori1),j=1,6)
+ & (v1(j,itori,itori1,1),j=1,6),(v2(j,itori,itori1,1),j=1,6)
gloc(i-3,icg)=gloc(i-3,icg)+wtor*fact*gloci
c write (iout,*) 'i=',i,' gloc=',gloc(i-3,icg)
1215 continue
phii1=phi(i+1)
gloci1=0.0D0
gloci2=0.0D0
+ iblock=1
+ if (iabs(itype(i+1)).eq.20) iblock=2
C Regular cosine and sine terms
- do j=1,ntermd_1(itori,itori1,itori2)
- v1cij=v1c(1,j,itori,itori1,itori2)
- v1sij=v1s(1,j,itori,itori1,itori2)
- v2cij=v1c(2,j,itori,itori1,itori2)
- v2sij=v1s(2,j,itori,itori1,itori2)
+ do j=1,ntermd_1(itori,itori1,itori2,iblock)
+ v1cij=v1c(1,j,itori,itori1,itori2,iblock)
+ v1sij=v1s(1,j,itori,itori1,itori2,iblock)
+ v2cij=v1c(2,j,itori,itori1,itori2,iblock)
+ v2sij=v1s(2,j,itori,itori1,itori2,iblock)
cosphi1=dcos(j*phii)
sinphi1=dsin(j*phii)
cosphi2=dcos(j*phii1)
gloci1=gloci1+j*(v1sij*cosphi1-v1cij*sinphi1)
gloci2=gloci2+j*(v2sij*cosphi2-v2cij*sinphi2)
enddo
- do k=2,ntermd_2(itori,itori1,itori2)
+ do k=2,ntermd_2(itori,itori1,itori2,iblock)
do l=1,k-1
- v1cdij = v2c(k,l,itori,itori1,itori2)
- v2cdij = v2c(l,k,itori,itori1,itori2)
- v1sdij = v2s(k,l,itori,itori1,itori2)
- v2sdij = v2s(l,k,itori,itori1,itori2)
+ v1cdij = v2c(k,l,itori,itori1,itori2,iblock)
+ v2cdij = v2c(l,k,itori,itori1,itori2,iblock)
+ v1sdij = v2s(k,l,itori,itori1,itori2,iblock)
+ v2sdij = v2s(l,k,itori,itori1,itori2,iblock)
cosphi1p2=dcos(l*phii+(k-l)*phii1)
cosphi1m2=dcos(l*phii-(k-l)*phii1)
sinphi1p2=dsin(l*phii+(k-l)*phii1)
gloci1=gloci1+l*(v1sdij*cosphi1p2+v2sdij*cosphi1m2
& -v1cdij*sinphi1p2-v2cdij*sinphi1m2)
gloci2=gloci2+(k-l)*(v1sdij*cosphi1p2-v2sdij*cosphi1m2
- & -v1cdij*sinphi1p2+v2cdij*sinphi1m2)
+ & -v1cdij*sinphi1p2+v2cdij*sinphi1m2)
enddo
enddo
gloc(i-3,icg)=gloc(i-3,icg)+wtor_d*fact2*gloci1
do i=iphi_start,iphi_end
if (itype(i-2).eq.21 .or. itype(i-1).eq.21) cycle
esccor_ii=0.0D0
- itori=itype(i-2)
- itori1=itype(i-1)
+ itori=iabs(itype(i-2))
+ itori1=iabs(itype(i-1))
phii=phi(i)
gloci=0.0D0
do j=1,nterm_sccor
double precision a0thet,athet,bthet,polthet,gthet,theta0,sig0,
- & sigc0,dsc,dsc_inv,bsc,censc,gaussc,dsc0,vbl,vblinv,vblinv2,
- & vbl_cis,vbl0,vbld_inv
- integer nlob,loc_start,loc_end,ithet_start,ithet_end,
- & iphi_start,iphi_end
+ & sigc0,dsc,dsc_inv,bsc,censc,gaussc,dsc0
+ integer nlob
C Parameters of the virtual-bond-angle probability distribution
- common /thetas/ a0thet(ntyp),athet(2,ntyp),bthet(2,ntyp),
- & polthet(0:3,ntyp),gthet(3,ntyp),theta0(ntyp),sig0(ntyp),
- & sigc0(ntyp)
+ common /thetas/ a0thet(-ntyp:ntyp),athet(2,-ntyp:ntyp,-1:1,-1:1),
+ & bthet(2,-ntyp:ntyp,-1:1,-1:1),polthet(0:3,-ntyp:ntyp),
+ & gthet(3,-ntyp:ntyp),theta0(-ntyp:ntyp),sig0(-ntyp:ntyp),
+ & sigc0(-ntyp:ntyp)
+C Parameters of the side-chain probability distribution
+ common /sclocal/ dsc(ntyp1),dsc_inv(ntyp1),bsc(maxlob,ntyp),
+ & censc(3,maxlob,-ntyp:ntyp),gaussc(3,3,maxlob,-ntyp:ntyp),
+ &d sc0(ntyp1),
+ & nlob(ntyp1)
C Parameters of ab initio-derived potential of virtual-bond-angle bending
integer nthetyp,ntheterm,ntheterm2,ntheterm3,nsingle,ndouble,
& ithetyp(ntyp1),nntheterm
& ffthet,
& ggthet,ithetyp,nthetyp,ntheterm,ntheterm2,ntheterm3,nsingle,
& ndouble,nntheterm
-C Parameters of the side-chain probability distribution
- common /sclocal/ dsc(ntyp1),dsc_inv(ntyp1),bsc(maxlob,ntyp),
- & censc(3,maxlob,ntyp),gaussc(3,3,maxlob,ntyp),dsc0(ntyp1),
- & nlob(ntyp1)
C Virtual-bond lenghts
+ double precision vbl,vblinv,vblinv2,vbl_cis,vbl0,vbld_inv
+ integer loc_start,loc_end,ithet_start,ithet_end,iphi_start,
+ & iphi_end,iphid_start,iphid_end,ibond_start,ibond_end,
+ & ibondp_start,ibondp_end,ivec_start,ivec_end,iset_start,iset_end,
+ & iturn3_start,iturn3_end,iturn4_start,iturn4_end,iint_start,
+ & iint_end,iphi1_start,iphi1_end
common /peptbond/ vbl,vblinv,vblinv2,vbl_cis,vbl0
common /indices/ loc_start,loc_end,ithet_start,ithet_end,
- & iphi_start,iphi_end
+ & iphi_start,iphi_end,iphid_start,iphid_end,ibond_start,ibond_end,
+ & ibondp_start,ibondp_end,ivec_start,ivec_end,iset_start,iset_end,
+ & iturn3_start,iturn3_end,iturn4_start,iturn4_end,iint_start,
+ & iint_end,iphi1_start,iphi1_end
C Inverses of the actual virtual bond lengths
common /invlen/ vbld_inv(maxres2)
character*3 restyp
character*1 onelet
- common /names/ restyp(ntyp+1),onelet(ntyp+1)
+ common /names/ restyp(-ntyp1:ntyp1),
+ & onelet(-ntyp1:ntyp1)
character*10 ename,wname
integer nprint_ene,print_order
common /namterm/ ename(max_ene),wname(max_ene),nprint_ene,
C Torsional constants of the rotation about virtual-bond dihedral angles
double precision v1,v2,vlor1,vlor2,vlor3,v0
integer itortyp,ntortyp,nterm,nlor,nterm_old
- common/torsion/v0(maxtor,maxtor),v1(maxterm,maxtor,maxtor),
- & v2(maxterm,maxtor,maxtor),vlor1(maxlor,maxtor,maxtor),
+ common/torsion/v0(-maxtor:maxtor,-maxtor:maxtor,2),
+ & v1(maxterm,-maxtor:maxtor,-maxtor:maxtor,2),
+ & v2(maxterm,-maxtor:maxtor,-maxtor:maxtor,2),
+ & vlor1(maxlor,-maxtor:maxtor,-maxtor:maxtor),
& vlor2(maxlor,maxtor,maxtor),vlor3(maxlor,maxtor,maxtor),
- & itortyp(ntyp),ntortyp,nterm(maxtor,maxtor),
- & nlor(maxtor,maxtor),nterm_old
+ & itortyp(-ntyp:ntyp),ntortyp,
+ & nterm(-maxtor:maxtor,-maxtor:maxtor,2),
+ & nlor(-maxtor:maxtor,-maxtor:maxtor,2)
+ & ,nterm_old
C 6/23/01 - constants for double torsionals
double precision v1c,v1s,v2c,v2s
integer ntermd_1,ntermd_2
- common /torsiond/ v1c(2,maxtermd_1,maxtor,maxtor,maxtor),
- & v1s(2,maxtermd_1,maxtor,maxtor,maxtor),
- & v2c(maxtermd_2,maxtermd_2,maxtor,maxtor,maxtor),
- & v2s(maxtermd_2,maxtermd_2,maxtor,maxtor,maxtor),
- & ntermd_1(maxtor,maxtor,maxtor),ntermd_2(maxtor,maxtor,maxtor)
+ common /torsiond/
+ &v1c(2,maxtermd_1,-maxtor:maxtor,-maxtor:maxtor,-maxtor:maxtor,2),
+ &v1s(2,maxtermd_1,-maxtor:maxtor,-maxtor:maxtor,-maxtor:maxtor,2),
+ &v2c(maxtermd_2,maxtermd_2,-maxtor:maxtor,-maxtor:maxtor,
+ & -maxtor:maxtor,2),
+ &v2s(maxtermd_2,maxtermd_2,-maxtor:maxtor,-maxtor:maxtor,
+ & -maxtor:maxtor,2),
+ & ntermd_1(-maxtor:maxtor,-maxtor:maxtor,-maxtor:maxtor,2),
+ & ntermd_2(-maxtor:maxtor,-maxtor:maxtor,-maxtor:maxtor,2)
C 9/18/99 - added Fourier coeffficients of the expansion of local energy
C surface
- double precision b1,b2,cc,dd,ee,ctilde,dtilde,b1tilde
+ double precision b1,b2,cc,dd,ee,ctilde,dtilde,b2tilde,b1tilde
integer nloctyp
- common/fourier/ b1(2,maxtor),b2(2,maxtor),cc(2,2,maxtor),
- & dd(2,2,maxtor),ee(2,2,maxtor),ctilde(2,2,maxtor),
- & dtilde(2,2,maxtor),b1tilde(2,maxtor),nloctyp
+ common/fourier/ b1(2,-maxtor:maxtor),b2(2,-maxtor:maxtor)
+ & ,cc(2,2,-maxtor:maxtor),
+ & dd(2,2,-maxtor:maxtor),ee(2,2,-maxtor:maxtor),
+ & ctilde(2,2,-maxtor:maxtor),
+ & dtilde(2,2,-maxtor:maxtor),b1tilde(2,-maxtor:maxtor),nloctyp
double precision b
- common /fourier1/ b(13,maxtor)
+ common /fourier1/ b(13,0:maxtor)
sigii(i)=0.0D0
rr0(i)=0.0D0
a0thet(i)=0.0D0
- do j=1,2
- athet(j,i)=0.0D0
- bthet(j,i)=0.0D0
+ do j=1,2
+ do ichir1=-1,1
+ do ichir2=-1,1
+ athet(j,i,ichir1,ichir2)=0.0D0
+ bthet(j,i,ichir1,ichir2)=0.0D0
+ enddo
+ enddo
enddo
do j=0,3
polthet(j,i)=0.0D0
enddo
nlob(ntyp1)=0
dsc(ntyp1)=0.0D0
- do i=1,maxtor
- itortyp(i)=0
- do j=1,maxtor
- do k=1,maxterm
- v1(k,j,i)=0.0D0
- v2(k,j,i)=0.0D0
+ do i=-maxtor,maxtor
+ itortyp(i)=0
+ do iblock=1,2
+ do j=-maxtor,maxtor
+ do k=1,maxterm
+ v1(k,j,i,iblock)=0.0D0
+ v2(k,j,i,iblock)=0.0D0
enddo
enddo
+ enddo
enddo
+ do iblock=1,2
+ do i=-maxtor,maxtor
+ do j=-maxtor,maxtor
+ do k=-maxtor,maxtor
+ do l=1,maxtermd_1
+ v1c(1,l,i,j,k,iblock)=0.0D0
+ v1s(1,l,i,j,k,iblock)=0.0D0
+ v1c(2,l,i,j,k,iblock)=0.0D0
+ v1s(2,l,i,j,k,iblock)=0.0D0
+ enddo !l
+ do l=1,maxtermd_2
+ do m=1,maxtermd_2
+ v2c(m,l,i,j,k,iblock)=0.0D0
+ v2s(m,l,i,j,k,iblock)=0.0D0
+ enddo !m
+ enddo !l
+ enddo !k
+ enddo !j
+ enddo !i
+ enddo !iblock
do i=1,maxres
itype(i)=0
itel(i)=0
include 'COMMON.WEIGHTS'
include 'COMMON.FFIELD'
data restyp /
+ &'DD' ,'DPR','DLY','DAR','DHI','DAS','DGL','DSG','DGN','DSN','DTH',
+ &'DYY','DAL','DTY','DTR','DVA','DLE','DIL','DPN','MED','DCY','ZER',
&'CYS','MET','PHE','ILE','LEU','VAL','TRP','TYR','ALA','GLY','THR',
&'SER','GLN','ASN','GLU','ASP','HIS','ARG','LYS','PRO','D'/
data onelet /
+ &'z','p','k','r','h','d','e','n','q','s','t','g',
+ &'a','y','w','v','l','i','f','m','c','x',
&'C','M','F','I','L','V','W','Y','A','G','T',
&'S','Q','N','E','D','H','R','K','P','X'/
data potname /'LJ','LJK','BP','GB','GBV'/
include 'COMMON.FREE'
character*1 t1,t2,t3
character*1 onelett(4) /"G","A","P","D"/
+ character*1 toronelet(-2:2) /"p","a","G","A","P"/
logical lprint
dimension blower(3,3,maxlob)
character*800 controlcard
C of the virtual-bond valence angles theta
C
do i=1,ntyp
- read (ithep,*) a0thet(i),(athet(j,i),j=1,2),(bthet(j,i),j=1,2)
+ read (ithep,*) a0thet(i),(athet(j,i,1,1),j=1,2),
+ & (bthet(j,i,1,1),j=1,2)
read (ithep,*) (polthet(j,i),j=0,3)
- read (ithep,*) (gthet(j,i),j=1,3)
- read (ithep,*) theta0(i),sig0(i),sigc0(i)
- sigc0(i)=sigc0(i)**2
+ read (ithep,*) (gthet(j,i),j=1,3)
+ read (ithep,*) theta0(i),sig0(i),sigc0(i)
+ sigc0(i)=sigc0(i)**2
+ enddo
+ do i=1,ntyp
+ athet(1,i,1,-1)=athet(1,i,1,1)
+ athet(2,i,1,-1)=athet(2,i,1,1)
+ bthet(1,i,1,-1)=-bthet(1,i,1,1)
+ bthet(2,i,1,-1)=-bthet(2,i,1,1)
+ athet(1,i,-1,1)=-athet(1,i,1,1)
+ athet(2,i,-1,1)=-athet(2,i,1,1)
+ bthet(1,i,-1,1)=bthet(1,i,1,1)
+ bthet(2,i,-1,1)=bthet(2,i,1,1)
+ enddo
+ do i=-ntyp,-1
+ a0thet(i)=a0thet(-i)
+ athet(1,i,-1,-1)=athet(1,-i,1,1)
+ athet(2,i,-1,-1)=-athet(2,-i,1,1)
+ bthet(1,i,-1,-1)=bthet(1,-i,1,1)
+ bthet(2,i,-1,-1)=-bthet(2,-i,1,1)
+ athet(1,i,-1,1)=athet(1,-i,1,1)
+ athet(2,i,-1,1)=-athet(2,-i,1,1)
+ bthet(1,i,-1,1)=-bthet(1,-i,1,1)
+ bthet(2,i,-1,1)=bthet(2,-i,1,1)
+ athet(1,i,1,-1)=-athet(1,-i,1,1)
+ athet(2,i,1,-1)=athet(2,-i,1,1)
+ bthet(1,i,1,-1)=bthet(1,-i,1,1)
+ bthet(2,i,1,-1)=-bthet(2,-i,1,1)
+ theta0(i)=theta0(-i)
+ sig0(i)=sig0(-i)
+ sigc0(i)=sigc0(-i)
+ do j=0,3
+ polthet(j,i)=polthet(j,-i)
+ enddo
+ do j=1,3
+ gthet(j,i)=gthet(j,-i)
+ enddo
enddo
close (ithep)
if (lprint) then
& ' b1*10^1 ',' b2*10^1 '
do i=1,ntyp
write(iout,'(a3,1h&,2x,5(f8.3,1h&))') restyp(i),
- & a0thet(i),(100*athet(j,i),j=1,2),(10*bthet(j,i),j=1,2)
+ & a0thet(i),(100*athet(j,i,1,1),j=1,2),
+ & (10*bthet(j,i,1,1),j=1,2)
enddo
write (iout,'(/a/9x,5a/79(1h-))')
& 'Parameters of the expression for sigma(theta_c):',
C of the side chains.
C
do i=1,ntyp
+cc write (iout,*) "tu dochodze",i
read (irotam,'(3x,i3,f8.3)') nlob(i),dsc(i)
if (i.eq.10) then
dsc_inv(i)=0.0D0
enddo
bsc(1,i)=0.0D0
read(irotam,*)(censc(k,1,i),k=1,3),((blower(k,l,1),l=1,k),k=1,3)
+ censc(1,1,-i)=censc(1,1,i)
+ censc(2,1,-i)=censc(2,1,i)
+ censc(3,1,-i)=-censc(3,1,i)
do j=2,nlob(i)
read (irotam,*) bsc(j,i)
read (irotam,*) (censc(k,j,i),k=1,3),
& ((blower(k,l,j),l=1,k),k=1,3)
+ censc(1,j,-i)=censc(1,j,i)
+ censc(2,j,-i)=censc(2,j,i)
+ censc(3,j,-i)=-censc(3,j,i)
+C BSC is amplitude of Gaussian
enddo
do j=1,nlob(i)
do k=1,3
enddo
gaussc(k,l,j,i)=akl
gaussc(l,k,j,i)=akl
+ if (((k.eq.3).and.(l.ne.3))
+ & .or.((l.eq.3).and.(k.ne.3))) then
+ gaussc(k,l,j,-i)=-akl
+ gaussc(l,k,j,-i)=-akl
+ else
+ gaussc(k,l,j,-i)=akl
+ gaussc(l,k,j,-i)=akl
+ endif
enddo
enddo
enddo
read (itorp,*) ntortyp
read (itorp,*) (itortyp(i),i=1,ntyp)
write (iout,*) 'ntortyp',ntortyp
- do i=1,ntortyp
- do j=1,ntortyp
- read (itorp,*) nterm(i,j),nlor(i,j)
+ do iblock=1,2
+ do i=-ntyp,-1
+ itortyp(i)=-itortyp(-i)
+ enddo
+c write (iout,*) 'ntortyp',ntortyp
+ do i=0,ntortyp-1
+ do j=-ntortyp+1,ntortyp-1
+ read (itorp,*) nterm(i,j,iblock),
+ & nlor(i,j,iblock)
+ nterm(-i,-j,iblock)=nterm(i,j,iblock)
+ nlor(-i,-j,iblock)=nlor(i,j,iblock)
v0ij=0.0d0
si=-1.0d0
- do k=1,nterm(i,j)
- read (itorp,*) kk,v1(k,i,j),v2(k,i,j)
- v0ij=v0ij+si*v1(k,i,j)
+ do k=1,nterm(i,j,iblock)
+ read (itorp,*) kk,v1(k,i,j,iblock),
+ & v2(k,i,j,iblock)
+ v1(k,-i,-j,iblock)=v1(k,i,j,iblock)
+ v2(k,-i,-j,iblock)=-v2(k,i,j,iblock)
+ v0ij=v0ij+si*v1(k,i,j,iblock)
si=-si
- enddo
- do k=1,nlor(i,j)
- read (itorp,*) kk,vlor1(k,i,j),vlor2(k,i,j),vlor3(k,i,j)
+ enddo
+ do k=1,nlor(i,j,iblock)
+ read (itorp,*) kk,vlor1(k,i,j),
+ & vlor2(k,i,j),vlor3(k,i,j)
v0ij=v0ij+vlor1(k,i,j)/(1+vlor3(k,i,j)**2)
enddo
- v0(i,j)=v0ij
+ v0(i,j,iblock)=v0ij
+ v0(-i,-j,iblock)=v0ij
enddo
enddo
+ enddo
close (itorp)
if (lprint) then
- write (iout,'(/a/)') 'Torsional constants:'
- do i=1,ntortyp
- do j=1,ntortyp
+ write (iout,'(/a/)') 'Torsional constants:'
+ do i=1,ntortyp
+ do j=1,ntortyp
write (iout,*) 'ityp',i,' jtyp',j
write (iout,*) 'Fourier constants'
- do k=1,nterm(i,j)
- write (iout,'(2(1pe15.5))') v1(k,i,j),v2(k,i,j)
+ do k=1,nterm(i,j,iblock)
+ write (iout,'(2(1pe15.5))') v1(k,i,j,iblock),
+ & v2(k,i,j,iblock)
enddo
write (iout,*) 'Lorenz constants'
- do k=1,nlor(i,j)
- write (iout,'(3(1pe15.5))')
+ do k=1,nlor(i,j,iblock)
+ write (iout,'(3(1pe15.5))')
& vlor1(k,i,j),vlor2(k,i,j),vlor3(k,i,j)
enddo
enddo
C
C 6/23/01 Read parameters for double torsionals
C
- do i=1,ntortyp
- do j=1,ntortyp
- do k=1,ntortyp
+ do iblock=1,2
+ do i=0,ntortyp-1
+ do j=-ntortyp+1,ntortyp-1
+ do k=-ntortyp+1,ntortyp-1
read (itordp,'(3a1)') t1,t2,t3
- if (t1.ne.onelett(i) .or. t2.ne.onelett(j)
- & .or. t3.ne.onelett(k)) then
+c write (iout,*) "OK onelett",
+c & i,j,k,t1,t2,t3
+
+ if (t1.ne.toronelet(i) .or. t2.ne.toronelet(j)
+ & .or. t3.ne.toronelet(k)) then
write (iout,*) "Error in double torsional parameter file",
& i,j,k,t1,t2,t3
+#ifdef MPI
+ call MPI_Finalize(Ierror)
+#endif
stop "Error in double torsional parameter file"
endif
- read (itordp,*) ntermd_1(i,j,k),ntermd_2(i,j,k)
- read (itordp,*) (v1c(1,l,i,j,k),l=1,ntermd_1(i,j,k))
- read (itordp,*) (v1s(1,l,i,j,k),l=1,ntermd_1(i,j,k))
- read (itordp,*) (v1c(2,l,i,j,k),l=1,ntermd_1(i,j,k))
- read (itordp,*) (v1s(2,l,i,j,k),l=1,ntermd_1(i,j,k))
- read (itordp,*) ((v2c(l,m,i,j,k),v2c(m,l,i,j,k),
- & v2s(l,m,i,j,k),v2s(m,l,i,j,k),m=1,l-1),l=1,ntermd_2(i,j,k))
- enddo
- enddo
- enddo
+ read (itordp,*) ntermd_1(i,j,k,iblock),
+ & ntermd_2(i,j,k,iblock)
+ ntermd_1(-i,-j,-k,iblock)=ntermd_1(i,j,k,iblock)
+ ntermd_2(-i,-j,-k,iblock)=ntermd_2(i,j,k,iblock)
+ read (itordp,*) (v1c(1,l,i,j,k,iblock),l=1,
+ & ntermd_1(i,j,k,iblock))
+ read (itordp,*) (v1s(1,l,i,j,k,iblock),l=1,
+ & ntermd_1(i,j,k,iblock))
+ read (itordp,*) (v1c(2,l,i,j,k,iblock),l=1,
+ & ntermd_1(i,j,k,iblock))
+ read (itordp,*) (v1s(2,l,i,j,k,iblock),l=1,
+ & ntermd_1(i,j,k,iblock))
+C Martix of D parameters for one dimesional foureir series
+ do l=1,ntermd_1(i,j,k,iblock)
+ v1c(1,l,-i,-j,-k,iblock)=v1c(1,l,i,j,k,iblock)
+ v1s(1,l,-i,-j,-k,iblock)=-v1s(1,l,i,j,k,iblock)
+ v1c(2,l,-i,-j,-k,iblock)=v1c(2,l,i,j,k,iblock)
+ v1s(2,l,-i,-j,-k,iblock)=-v1s(2,l,i,j,k,iblock)
+c write(iout,*) "whcodze" ,
+c & v1s(2,l,-i,-j,-k,iblock),v1s(2,l,i,j,k,iblock)
+ enddo
+ read (itordp,*) ((v2c(l,m,i,j,k,iblock),
+ & v2c(m,l,i,j,k,iblock),v2s(l,m,i,j,k,iblock),
+ & v2s(m,l,i,j,k,iblock),
+ & m=1,l-1),l=1,ntermd_2(i,j,k,iblock))
+C Martix of D parameters for two dimesional fourier series
+ do l=1,ntermd_2(i,j,k,iblock)
+ do m=1,l-1
+ v2c(l,m,-i,-j,-k,iblock)=v2c(l,m,i,j,k,iblock)
+ v2c(m,l,-i,-j,-k,iblock)=v2c(m,l,i,j,k,iblock)
+ v2s(l,m,-i,-j,-k,iblock)=-v2s(l,m,i,j,k,iblock)
+ v2s(m,l,-i,-j,-k,iblock)=-v2s(m,l,i,j,k,iblock)
+ enddo!m
+ enddo!l
+ enddo!k
+ enddo!j
+ enddo!i
+ enddo!iblock
if (lprint) then
- write (iout,*)
+ write (iout,*)
write (iout,*) 'Constants for double torsionals'
- do i=1,ntortyp
- do j=1,ntortyp
- do k=1,ntortyp
+ do iblock=1,2
+ do i=0,ntortyp-1
+ do j=-ntortyp+1,ntortyp-1
+ do k=-ntortyp+1,ntortyp-1
write (iout,*) 'ityp',i,' jtyp',j,' ktyp',k,
- & ' nsingle',ntermd_1(i,j,k),' ndouble',ntermd_2(i,j,k)
+ & ' nsingle',ntermd_1(i,j,k,iblock),
+ & ' ndouble',ntermd_2(i,j,k,iblock)
write (iout,*)
write (iout,*) 'Single angles:'
- do l=1,ntermd_1(i,j,k)
- write (iout,'(i5,2f10.5,5x,2f10.5)') l,
- & v1c(1,l,i,j,k),v1s(1,l,i,j,k),
- & v1c(2,l,i,j,k),v1s(2,l,i,j,k)
+ do l=1,ntermd_1(i,j,k,iblock)
+ write (iout,'(i5,2f10.5,5x,2f10.5,5x,2f10.5)') l,
+ & v1c(1,l,i,j,k,iblock),v1s(1,l,i,j,k,iblock),
+ & v1c(2,l,i,j,k,iblock),v1s(2,l,i,j,k,iblock),
+ & v1s(1,l,-i,-j,-k,iblock),v1s(2,l,-i,-j,-k,iblock)
enddo
write (iout,*)
write (iout,*) 'Pairs of angles:'
- write (iout,'(3x,20i10)') (l,l=1,ntermd_2(i,j,k))
- do l=1,ntermd_2(i,j,k)
- write (iout,'(i5,20f10.5)')
- & l,(v2c(l,m,i,j,k),m=1,ntermd_2(i,j,k))
+ write (iout,'(3x,20i10)') (l,l=1,ntermd_2(i,j,k,iblock))
+ do l=1,ntermd_2(i,j,k,iblock)
+ write (iout,'(i5,20f10.5)')
+ & l,(v2c(l,m,i,j,k,iblock),m=1,ntermd_2(i,j,k,iblock))
enddo
write (iout,*)
- write (iout,'(3x,20i10)') (l,l=1,ntermd_2(i,j,k))
- do l=1,ntermd_2(i,j,k)
- write (iout,'(i5,20f10.5)')
- & l,(v2s(l,m,i,j,k),m=1,ntermd_2(i,j,k))
+ write (iout,'(3x,20i10)') (l,l=1,ntermd_2(i,j,k,iblock))
+ do l=1,ntermd_2(i,j,k,iblock)
+ write (iout,'(i5,20f10.5)')
+ & l,(v2s(l,m,i,j,k,iblock),m=1,ntermd_2(i,j,k,iblock)),
+ & (v2s(l,m,-i,-j,-k,iblock),m=1,ntermd_2(i,j,k,iblock))
enddo
write (iout,*)
enddo
enddo
enddo
+ enddo
endif
#endif
C
C interaction energy of the Gly, Ala, and Pro prototypes.
C
read (ifourier,*) nloctyp
- do i=1,nloctyp
+ do i=0,nloctyp-1
read (ifourier,*)
read (ifourier,*) (b(ii,i),ii=1,13)
if (lprint) then
endif
B1(1,i) = b(3,i)
B1(2,i) = b(5,i)
+ B1(1,-i) = b(3,i)
+ B1(2,-i) = -b(5,i)
+c b1(1,i)=0.0d0
+c b1(2,i)=0.0d0
B1tilde(1,i) = b(3,i)
- B1tilde(2,i) =-b(5,i)
+ B1tilde(2,i) =-b(5,i)
+ B1tilde(1,-i) =-b(3,i)
+ B1tilde(2,-i) =b(5,i)
+c b1tilde(1,i)=0.0d0
+c b1tilde(2,i)=0.0d0
B2(1,i) = b(2,i)
B2(2,i) = b(4,i)
+ B2(1,-i) =b(2,i)
+ B2(2,-i) =-b(4,i)
+
+c b2(1,i)=0.0d0
+c b2(2,i)=0.0d0
CC(1,1,i)= b(7,i)
CC(2,2,i)=-b(7,i)
CC(2,1,i)= b(9,i)
CC(1,2,i)= b(9,i)
+ CC(1,1,-i)= b(7,i)
+ CC(2,2,-i)=-b(7,i)
+ CC(2,1,-i)=-b(9,i)
+ CC(1,2,-i)=-b(9,i)
+c CC(1,1,i)=0.0d0
+c CC(2,2,i)=0.0d0
+c CC(2,1,i)=0.0d0
+c CC(1,2,i)=0.0d0
Ctilde(1,1,i)=b(7,i)
Ctilde(1,2,i)=b(9,i)
Ctilde(2,1,i)=-b(9,i)
Ctilde(2,2,i)=b(7,i)
+ Ctilde(1,1,-i)=b(7,i)
+ Ctilde(1,2,-i)=-b(9,i)
+ Ctilde(2,1,-i)=b(9,i)
+ Ctilde(2,2,-i)=b(7,i)
+
+c Ctilde(1,1,i)=0.0d0
+c Ctilde(1,2,i)=0.0d0
+c Ctilde(2,1,i)=0.0d0
+c Ctilde(2,2,i)=0.0d0
DD(1,1,i)= b(6,i)
DD(2,2,i)=-b(6,i)
DD(2,1,i)= b(8,i)
DD(1,2,i)= b(8,i)
+ DD(1,1,-i)= b(6,i)
+ DD(2,2,-i)=-b(6,i)
+ DD(2,1,-i)=-b(8,i)
+ DD(1,2,-i)=-b(8,i)
+c DD(1,1,i)=0.0d0
+c DD(2,2,i)=0.0d0
+c DD(2,1,i)=0.0d0
+c DD(1,2,i)=0.0d0
Dtilde(1,1,i)=b(6,i)
Dtilde(1,2,i)=b(8,i)
Dtilde(2,1,i)=-b(8,i)
Dtilde(2,2,i)=b(6,i)
+ Dtilde(1,1,-i)=b(6,i)
+ Dtilde(1,2,-i)=-b(8,i)
+ Dtilde(2,1,-i)=b(8,i)
+ Dtilde(2,2,-i)=b(6,i)
+
+c Dtilde(1,1,i)=0.0d0
+c Dtilde(1,2,i)=0.0d0
+c Dtilde(2,1,i)=0.0d0
+c Dtilde(2,2,i)=0.0d0
EE(1,1,i)= b(10,i)+b(11,i)
EE(2,2,i)=-b(10,i)+b(11,i)
EE(2,1,i)= b(12,i)-b(13,i)
EE(1,2,i)= b(12,i)+b(13,i)
+ EE(1,1,-i)= b(10,i)+b(11,i)
+ EE(2,2,-i)=-b(10,i)+b(11,i)
+ EE(2,1,-i)=-b(12,i)+b(13,i)
+ EE(1,2,-i)=-b(12,i)-b(13,i)
+
+c ee(1,1,i)=1.0d0
+c ee(2,2,i)=1.0d0
+c ee(2,1,i)=0.0d0
+c ee(1,2,i)=0.0d0
+c ee(2,1,i)=ee(1,2,i)
+
enddo
if (lprint) then
do i=1,nloctyp
if (itype.eq.0) then
- do i=1,ntyp1
+ do i=-ntyp1,ntyp1
if (ucase(nam).eq.restyp(i)) then
rescode=i
return
else
- do i=1,ntyp1
+ do i=-ntyp1,ntyp1
if (nam(1:1).eq.onelet(i)) then
rescode=i
return
include 'COMMON.SCROT'
include 'COMMON.SCCOR'
include 'COMMON.ALLPARM'
- integer i,j,k,l,m,mm,iparm
+ integer i,j,k,l,m,mm,iparm,ichir1,ichir2,iblock,iii
c Store weights
ww_all(1,iparm)=wsc
enddo
c Store bond angle parameters
#ifdef CRYST_THETA
- do i=1,ntyp
+ do i=-ntyp,ntyp
a0thet_all(i,iparm)=a0thet(i)
+ do ichir1=-1,1
+ do ichir2=-1,1
do j=1,2
- athet_all(j,i,iparm)=athet(j,i)
- bthet_all(j,i,iparm)=bthet(j,i)
+ athet_all(j,i,ichir1,ichir2,iparm)=athet(j,i,ichir1,ichir2)
+ bthet_all(j,i,ichir1,ichir2,iparm)=bthet(j,i,ichir1,ichir2)
+ enddo
+ enddo
enddo
do j=0,3
polthet_all(j,i,iparm)=polthet(j,i)
#endif
#ifdef CRYST_SC
c Store the sidechain rotamer parameters
- do i=1,ntyp
- nlob_all(i,iparm)=nlob(i)
- do j=1,nlob(i)
- bsc_all(j,i,iparm)=bsc(j,i)
+ do i=-ntyp,ntyp
+ iii=iabs(i)
+cc write (iout,*) i,"storeparm1"
+ if (i.eq.0) cycle
+ nlob_all(iii,iparm)=nlob(iii)
+ do j=1,nlob(iii)
+ bsc_all(j,iii,iparm)=bsc(j,iii)
do k=1,3
censc_all(k,j,i,iparm)=censc(k,j,i)
enddo
enddo
#endif
c Store the torsional parameters
- do i=1,ntortyp
- do j=1,ntortyp
- v0_all(i,j,iparm)=v0(i,j)
- nterm_all(i,j,iparm)=nterm(i,j)
- nlor_all(i,j,iparm)=nlor(i,j)
- do k=1,nterm(i,j)
- v1_all(k,i,j,iparm)=v1(k,i,j)
- v2_all(k,i,j,iparm)=v2(i,i,j)
+ do iblock=1,2
+ do i=-ntortyp+1,ntortyp-1
+ do j=-ntortyp+1,ntortyp-1
+ v0_all(i,j,iblock,iparm)=v0(i,j,iblock)
+ nterm_all(i,j,iblock,iparm)=nterm(i,j,iblock)
+ nlor_all(i,j,iblock,iparm)=nlor(i,j,iblock)
+ do k=1,nterm(i,j,iblock)
+ v1_all(k,i,j,iblock,iparm)=v1(k,i,j,iblock)
+ v2_all(k,i,j,iblock,iparm)=v2(k,i,j,iblock)
enddo
- do k=1,nlor(i,j)
+ do k=1,nlor(i,j,iblock)
vlor1_all(k,i,j,iparm)=vlor1(k,i,j)
vlor2_all(k,i,j,iparm)=vlor2(k,i,j)
vlor3_all(k,i,j,iparm)=vlor3(k,i,j)
enddo
enddo
+ enddo
enddo
c Store the double torsional parameters
- do i=1,ntortyp
- do j=1,ntortyp
- do k=1,ntortyp
- ntermd1_all(i,j,k,iparm)=ntermd_1(i,j,k)
- ntermd2_all(i,j,k,iparm)=ntermd_2(i,j,k)
- do l=1,ntermd_1(i,j,k)
- v1c_all(1,l,i,j,k,iparm)=v1c(1,l,i,j,k)
- v1c_all(2,l,i,j,k,iparm)=v1c(2,l,i,j,k)
- v2c_all(1,l,i,j,k,iparm)=v2c(1,l,i,j,k)
- v2c_all(2,l,i,j,k,iparm)=v2c(2,l,i,j,k)
+ do iblock=1,2
+ do i=-ntortyp+1,ntortyp-1
+ do j=-ntortyp+1,ntortyp-1
+ do k=-ntortyp+1,ntortyp-1
+ ntermd1_all(i,j,k,iblock,iparm)=ntermd_1(i,j,k,iblock)
+ ntermd2_all(i,j,k,iblock,iparm)=ntermd_2(i,j,k,iblock)
+ do l=1,ntermd_1(i,j,k,iblock)
+ v1c_all(1,l,i,j,k,iblock,iparm)=v1c(1,l,i,j,k,iblock)
+ v1c_all(2,l,i,j,k,iblock,iparm)=v1c(2,l,i,j,k,iblock)
+ v2c_all(1,l,i,j,k,iblock,iparm)=v2c(1,l,i,j,k,iblock)
+ v2c_all(2,l,i,j,k,iblock,iparm)=v2c(2,l,i,j,k,iblock)
enddo
- do l=1,ntermd_2(i,j,k)
- do m=1,ntermd_2(i,j,k)
- v2s_all(l,m,i,j,k,iparm)=v2s(l,m,i,j,k)
+ do l=1,ntermd_2(i,j,k,iblock)
+ do m=1,ntermd_2(i,j,k,iblock)
+ v2s_all(l,m,i,j,k,iblock,iparm)=v2s(l,m,i,j,k,iblock)
enddo
enddo
enddo
enddo
enddo
+ enddo
c Store parameters of the cumulants
- do i=1,nloctyp
+ do i=-nloctyp,nloctyp
do j=1,2
b1_all(j,i,iparm)=b1(j,i)
b1tilde_all(j,i,iparm)=b1tilde(j,i)
include 'COMMON.SCROT'
include 'COMMON.SCCOR'
include 'COMMON.ALLPARM'
- integer i,j,k,l,m,mm,iparm
+ integer i,j,k,l,m,mm,iparm,ichir1,ichir2,iblock,iii
c Restore weights
wsc=ww_all(1,iparm)
enddo
c Restore bond angle parameters
#ifdef CRYST_THETA
- do i=1,ntyp
+ do i=-ntyp,ntyp
a0thet(i)=a0thet_all(i,iparm)
+ do ichir1=-1,1
+ do ichir2=-1,1
do j=1,2
- athet(j,i)=athet_all(j,i,iparm)
- bthet(j,i)=bthet_all(j,i,iparm)
+ athet(j,i,ichir1,ichir2)=athet_all(j,i,ichir1,ichir2,iparm)
+ bthet(j,i,ichir1,ichir2)=bthet_all(j,i,ichir1,ichir2,iparm)
+ enddo
+ enddo
enddo
do j=0,3
polthet(j,i)=polthet_all(j,i,iparm)
#endif
c Restore the sidechain rotamer parameters
#ifdef CRYST_SC
- do i=1,ntyp
- nlob(i)=nlob_all(i,iparm)
- do j=1,nlob(i)
- bsc(j,i)=bsc_all(j,i,iparm)
+ do i=-ntyp,ntyp
+ if (i.eq.0) cycle
+ iii=iabs(i)
+ nlob(iii)=nlob_all(iii,iparm)
+ do j=1,nlob(iii)
+ bsc(j,iii)=bsc_all(j,iii,iparm)
do k=1,3
censc(k,j,i)=censc_all(k,j,i,iparm)
enddo
enddo
#endif
c Restore the torsional parameters
- do i=1,ntortyp
- do j=1,ntortyp
- v0(i,j)=v0_all(i,j,iparm)
- nterm(i,j)=nterm_all(i,j,iparm)
- nlor(i,j)=nlor_all(i,j,iparm)
- do k=1,nterm(i,j)
- v1(k,i,j)=v1_all(k,i,j,iparm)
- v2(i,i,j)=v2_all(k,i,j,iparm)
+ do iblock=1,2
+ do i=-ntortyp+1,ntortyp-1
+ do j=-ntortyp+1,ntortyp-1
+ v0(i,j,iblock)=v0_all(i,j,iblock,iparm)
+ nterm(i,j,iblock)=nterm_all(i,j,iblock,iparm)
+ nlor(i,j,iblock)=nlor_all(i,j,iblock,iparm)
+ do k=1,nterm(i,j,iblock)
+ v1(k,i,j,iblock)=v1_all(k,i,j,iblock,iparm)
+ v2(k,i,j,iblock)=v2_all(k,i,j,iblock,iparm)
enddo
- do k=1,nlor(i,j)
+ do k=1,nlor(i,j,iblock)
vlor1(k,i,j)=vlor1_all(k,i,j,iparm)
vlor2(k,i,j)=vlor2_all(k,i,j,iparm)
vlor3(k,i,j)=vlor3_all(k,i,j,iparm)
enddo
enddo
enddo
+ enddo
c Restore the double torsional parameters
- do i=1,ntortyp
- do j=1,ntortyp
- do k=1,ntortyp
- ntermd_1(i,j,k)=ntermd1_all(i,j,k,iparm)
- ntermd_2(i,j,k)=ntermd2_all(i,j,k,iparm)
- do l=1,ntermd_1(i,j,k)
- v1c(1,l,i,j,k)=v1c_all(1,l,i,j,k,iparm)
- v1c(2,l,i,j,k)=v1c_all(2,l,i,j,k,iparm)
- v2c(1,l,i,j,k)=v2c_all(1,l,i,j,k,iparm)
- v2c(2,l,i,j,k)=v2c_all(2,l,i,j,k,iparm)
+ do iblock=1,2
+ do i=-ntortyp+1,ntortyp-1
+ do j=-ntortyp+1,ntortyp-1
+ do k=-ntortyp+1,ntortyp-1
+ ntermd_1(i,j,k,iblock)=ntermd1_all(i,j,k,iblock,iparm)
+ ntermd_2(i,j,k,iblock)=ntermd2_all(i,j,k,iblock,iparm)
+ do l=1,ntermd_1(i,j,k,iblock)
+ v1c(1,l,i,j,k,iblock)=v1c_all(1,l,i,j,k,iblock,iparm)
+ v1c(2,l,i,j,k,iblock)=v1c_all(2,l,i,j,k,iblock,iparm)
+ v2c(1,l,i,j,k,iblock)=v2c_all(1,l,i,j,k,iblock,iparm)
+ v2c(2,l,i,j,k,iblock)=v2c_all(2,l,i,j,k,iblock,iparm)
enddo
- do l=1,ntermd_2(i,j,k)
- do m=1,ntermd_2(i,j,k)
- v2s(l,m,i,j,k)=v2s_all(l,m,i,j,k,iparm)
+ do l=1,ntermd_2(i,j,k,iblock)
+ do m=1,ntermd_2(i,j,k,iblock)
+ v2s(l,m,i,j,k,iblock)=v2s_all(l,m,i,j,k,iblock,iparm)
enddo
enddo
enddo
enddo
enddo
+ enddo
c Restore parameters of the cumulants
- do i=1,nloctyp
+ do i=-nloctyp,nloctyp
do j=1,2
b1(j,i)=b1_all(j,i,iparm)
b1tilde(j,i)=b1tilde_all(j,i,iparm)