endif
c print *,"Processor",myrank," computed Utord"
C
- call eback_sc_corr(esccor)
+ if (wsccor.gt.0.0d0) then
+ call eback_sc_corr(esccor)
+ else
+ esccor=0.0d0
+ endif
if (wliptran.gt.0) then
call Eliptransfer(eliptran)
c write (iout,*) i,j,xj,yj,zj
rrij=1.0D0/(xj*xj+yj*yj+zj*zj)
rij=dsqrt(rrij)
- sss=sscale(1.0d0/rij))
+ sss=sscale(1.0d0/rij)
sssgrad=sscagrad(1.0d0/rij)
if (sss.le.0.0) cycle
C Calculate angle-dependent terms of energy and contributions to their
C
c write(iout,*) 'SET_MATRICES nphi=',nphi,nres
do i=3,nres+1
- if (i.gt. nnt+2 .and. i.lt.nct+2) then
+ ii=ireschain(i-2)
+ if (ii.eq.0) cycle
+ innt=chain_border(1,ii)
+ inct=chain_border(2,ii)
+ if (i.gt. innt+2 .and. i.lt.inct+2) then
iti = itype2loc(itype(i-2))
else
iti=nloctyp
endif
c if (i.gt. iatel_s+1 .and. i.lt.iatel_e+4) then
- if (i.gt. nnt+1 .and. i.lt.nct+1) then
+ if (i.gt. innt+1 .and. i.lt.inct+1) then
iti1 = itype2loc(itype(i-1))
else
iti1=nloctyp
write (iout,*) 'theta=', theta(i-1)
#endif
#else
+ if (i.gt. innt+2 .and. i.lt.inct+2) then
+c if (i.gt. nnt+2 .and. i.lt.nct+2) then
+ iti = itype2loc(itype(i-2))
+ else
+ iti=nloctyp
+ endif
+c write (iout,*) "i",i-1," itype",itype(i-2)," iti",iti
+c if (i.gt. iatel_s+1 .and. i.lt.iatel_e+4) then
+ if (i.gt. nnt+1 .and. i.lt.nct+1) then
+ iti1 = itype2loc(itype(i-1))
+ else
+ iti1=nloctyp
+ endif
c if (i.gt. nnt+2 .and. i.lt.nct+2) then
c iti = itype2loc(itype(i-2))
c else
call transpose2(DtUg2der(1,1,i-1),auxmat(1,1))
call matmat2(auxmat(1,1),EUg(1,1,i),Ug2DtEUgder(1,1,1,i))
endif
-#endif
enddo
endif
+#endif
return
end
C--------------------------------------------------------------------------
include 'COMMON.INTERACT'
#ifdef FOURBODY
include 'COMMON.CONTACTS'
- include 'COMMON.CONTMAP'
+ include 'COMMON.CONTMAT'
#endif
include 'COMMON.CORRMAT'
include 'COMMON.TORSION'
include 'COMMON.INTERACT'
#ifdef FOURBODY
include 'COMMON.CONTACTS'
- include 'COMMON.CONTMAP'
+ include 'COMMON.CONTMAT'
#endif
include 'COMMON.CORRMAT'
include 'COMMON.TORSION'
include 'COMMON.CHAIN'
include 'COMMON.DERIV'
include 'COMMON.INTERACT'
- include 'COMMON.CONTACTS'
+ include 'COMMON.CORRMAT'
include 'COMMON.TORSION'
include 'COMMON.VECTORS'
include 'COMMON.FFIELD'
include 'COMMON.CHAIN'
include 'COMMON.DERIV'
include 'COMMON.INTERACT'
- include 'COMMON.CONTACTS'
+ include 'COMMON.CORRMAT'
include 'COMMON.TORSION'
include 'COMMON.VECTORS'
include 'COMMON.FFIELD'
estr1=0.0d0
c write (iout,*) "distchainmax",distchainmax
do i=nnt+1,nct
+#ifdef FIVEDIAG
+ if (itype(i-1).eq.ntyp1 .or. itype(i).eq.ntyp1) cycle
+ diff = vbld(i)-vbldp0
+#else
if (itype(i-1).eq.ntyp1 .and. itype(i).eq.ntyp1) cycle
C estr1=estr1+gnmr1(vbld(i),-1.0d0,distchainmax)
C do j=1,3
diff = vbld(i)-vbldp0
c write (iout,*) i,vbld(i),vbldp0,diff,AKP*diff*diff
endif
+#endif
+ if (energy_dec) write (iout,'(a7,i5,4f7.3)')
+ & "estr bb",i,vbld(i),vbldp0,diff,AKP*diff*diff
estr=estr+diff*diff
do j=1,3
gradb(j,i-1)=AKP*diff*dc(j,i-1)/vbld(i)
nbi=nbondterm(iti)
if (nbi.eq.1) then
diff=vbld(i+nres)-vbldsc0(1,iti)
-C write (iout,*) i,iti,vbld(i+nres),vbldsc0(1,iti),diff,
-C & AKSC(1,iti),AKSC(1,iti)*diff*diff
+ if (energy_dec) write (iout,*)
+ & i,iti,vbld(i+nres),vbldsc0(1,iti),diff,
+ & AKSC(1,iti),AKSC(1,iti)*diff*diff
estr=estr+0.5d0*AKSC(1,iti)*diff*diff
do j=1,3
gradbx(j,i)=AKSC(1,iti)*diff*dc(j,i+nres)/vbld(i+nres)
coskt(k)=dcos(k*theti2)
sinkt(k)=dsin(k*theti2)
enddo
- if (i.eq.3) then
- phii=0.0d0
- ityp1=nthetyp+1
- do k=1,nsingle
- cosph1(k)=0.0d0
- sinph1(k)=0.0d0
- enddo
- else
+cu if (i.eq.3) then
+cu phii=0.0d0
+cu ityp1=nthetyp+1
+cu do k=1,nsingle
+cu cosph1(k)=0.0d0
+cu sinph1(k)=0.0d0
+cu enddo
+cu else
if (i.gt.3 .and. itype(i-3).ne.ntyp1) then
#ifdef OSF
phii=phi(i)
sinph1(k)=0.0d0
enddo
endif
- endif
if (i.lt.nres .and. itype(i+1).ne.ntyp1) then
#ifdef OSF
phii1=phi(i+1)