double precision tole /1.0d-1/
integer i,itj,ii,iii,j,k,l,licz
integer ir,ib,ipar,iparm
- integer iscor,islice
+ integer iscor,islice,scount_buff(0:99)
real*4 csingle(3,maxres2)
double precision energ
double precision temp
121 continue
enddo
#ifdef MPI
- scount(me)=iii
- write (iout,*) "Me",me," scount",scount(me)
+ scount_buff(me)=iii
+ write (iout,*) "Me",me," scount_buff",scount_buff(me)
call flush(iout)
c Master gathers updated numbers of conformations written by all procs.
- call MPI_AllGather( scount(me), 1, MPI_INTEGER, scount(0), 1,
+c call MPI_AllGather(MPI_IN_PLACE,1,MPI_DATATYPE_NULL,scount(0),1,
+c & MPI_INTEGER, WHAM_COMM, IERROR)
+ call MPI_AllGather( scount_buff(me), 1, MPI_INTEGER, scount(0), 1,
& MPI_INTEGER, WHAM_COMM, IERROR)
+
indstart(0)=1
indend(0)=scount(0)
do i=1, Nprocs-1
double precision energ
integer ilen,iroof
external ilen,iroof
- integer ir,ib,iparm
+ integer ir,ib,iparm, scount_buff(0:99)
integer isecstr(maxres)
write (licz2,'(bz,i2.2)') islice
call opentmp(islice,ientout,bprotfile_temp)
& delthe0,sig0inv,sigtc,sigsqtc,delthec,it
double precision y(2),z(2)
delta=0.02d0*pi
- time11=dexp(-2*time)
- time12=1.0d0
+c time11=dexp(-2*time)
+c time12=1.0d0
etheta=0.0D0
c write (iout,*) "nres",nres
c write (*,'(a,i2)') 'EBEND ICG=',icg
if (i.gt.3 .and. itype(i-2).ne.ntyp1) then
#ifdef OSF
phii=phi(i)
- icrc=0
- call proc_proc(phii,icrc)
+c icrc=0
+c call proc_proc(phii,icrc)
if (icrc.eq.1) phii=150.0
#else
phii=phi(i)
if (i.lt.nres .and. itype(i).ne.ntyp1) then
#ifdef OSF
phii1=phi(i+1)
- icrc=0
- call proc_proc(phii1,icrc)
+c icrc=0
+c call proc_proc(phii1,icrc)
if (icrc.eq.1) phii1=150.0
phii1=pinorm(phii1)
z(1)=cos(phii1)
if (i.gt.3) gloc(i-3,icg)=gloc(i-3,icg)+wang*E_tc*dthetg1
if (i.lt.nres) gloc(i-2,icg)=gloc(i-2,icg)+wang*E_tc*dthetg2
gloc(nphi+i-2,icg)=wang*(E_theta+E_tc*dthett)
- 1215 continue
+c 1215 continue
enddo
C Ufff.... We've done all this!!!
return
etheta=0.0D0
c write (iout,*) "ithetyp",(ithetyp(i),i=1,ntyp1)
do i=ithet_start,ithet_end
- if (itype(i-1).eq.ntyp1) cycle
+c if (itype(i-1).eq.ntyp1) cycle
+ if ((itype(i-1).eq.ntyp1).or.(itype(i-2).eq.ntyp1).or.
+ &(itype(i).eq.ntyp1)) cycle
if (iabs(itype(i+1)).eq.20) iblock=2
if (iabs(itype(i+1)).ne.20) iblock=1
dethetai=0.0d0
coskt(k)=dcos(k*theti2)
sinkt(k)=dsin(k*theti2)
enddo
- if (i.gt.3 .and. itype(i-2).ne.ntyp1) then
+ if (i.gt.3 .and. itype(i-3).ne.ntyp1) then
#ifdef OSF
phii=phi(i)
if (phii.ne.phii) phii=150.0
enddo
else
phii=0.0d0
- ityp1=nthetyp+1
+c ityp1=nthetyp+1
do k=1,nsingle
+ ityp1=ithetyp((itype(i-2)))
cosph1(k)=0.0d0
sinph1(k)=0.0d0
enddo
endif
- if (i.lt.nres .and. itype(i).ne.ntyp1) then
+ if (i.lt.nres .and. itype(i+1).ne.ntyp1) then
#ifdef OSF
phii1=phi(i+1)
if (phii1.ne.phii1) phii1=150.0
enddo
else
phii1=0.0d0
- ityp3=nthetyp+1
+c ityp3=nthetyp+1
+ ityp3=ithetyp((itype(i)))
do k=1,nsingle
cosph2(k)=0.0d0
sinph2(k)=0.0d0
etheta=etheta+ethetai
if (i.gt.3) gloc(i-3,icg)=gloc(i-3,icg)+wang*dephii
if (i.lt.nres) gloc(i-2,icg)=gloc(i-2,icg)+wang*dephii1
- gloc(nphi+i-2,icg)=wang*dethetai
+c gloc(nphi+i-2,icg)=wang*dethetai
+ gloc(nphi+i-2,icg)=gloc(nphi+i-2,icg)+wang*dethetai
enddo
return
end
external ilen,iroof
double precision rmsdev,energia(0:max_ene),efree,eini,temp
double precision prop(maxQ)
- integer ntot_all(maxslice,0:maxprocs-1)
+ integer ntot_all(maxslice,0:maxprocs-1), maxslice_buff
integer iparm,ib,iib,ir,nprop,nthr,npars
double precision etot,time
integer ixdrf,iret
#ifdef MPI
c Check if everyone has the same number of conformations
- call MPI_Allgather(stot(1),maxslice,MPI_INTEGER,
+
+c call MPI_ALLgather(MPI_IN_PLACE,stot(1),MPI_DATATYPE_NULL,
+c & ntot_all(1,0),maxslice,MPI_INTEGER,MPI_Comm_World,IERROR)
+
+ maxslice_buff=maxslice
+
+ call MPI_Allgather(stot(1),maxslice_buff,MPI_INTEGER,
& ntot_all(1,0),maxslice,MPI_INTEGER,MPI_Comm_World,IERROR)
lerr=.false.
do i=0,nprocs-1