subroutine friction_force
implicit none
+#ifdef MPI
+ include 'mpif.h'
+#endif
include 'DIMENSIONS'
include 'COMMON.VAR'
include 'COMMON.CHAIN'
logical lprn /.false./, checkmode /.false./
#ifdef FIVEDIAG
+#ifdef TIMING
+ include 'COMMON.TIME1'
+ double precision time01
+#endif
c Here accelerations due to friction forces are computed right after forces.
- d_t_work=0.0d0
+ d_t_work(:6*nres)=0.0d0
do j=1,3
v_work(j,1)=d_t(j,0)
v_work(j,nnt)=d_t(j,0)
write (iout,'(f10.5)') (vvec(i),i=iposc,ind)
#endif
c write (iout,*) "chain",i," ind",ind," n",n
+#ifdef TIMING
+ time01=MPI_Wtime()
+#endif
call fivediagmult(n,DMfric(iposc),DU1fric(iposc),
& DU2fric(iposc),vvec(iposc),rs)
+#ifdef TIMING
+ time_fricmatmult=time_fricmatmult+MPI_Wtime()-time01
+#endif
#ifdef DEBUG
write (iout,*) "rs"
write (iout,'(f10.5)') (rs(i),i=1,n)
write (iout,'(3f10.5)') (fric_work(j),j=1,dimen3)
#endif
#else
- do i=0,MAXRES2
+ do i=0,2*nres
do j=1,3
friction(j,i)=0.0d0
enddo
integer ichain,innt,inct,iposc
#endif
- do i=0,MAXRES2
+ do i=0,2*nres
do j=1,3
stochforc(j,i)=0.0d0
enddo
enddo
endif
#ifdef FIVEDIAG
- DMfric=0.0d0
- DU1fric=0.0d0
- DU2fric=0.0d0
+ DMfric(:2*nres)=0.0d0
+ DU1fric(:2*nres)=0.0d0
+ DU2fric(:2*nres)=0.0d0
ind=1
do ichain=1,nchain
innt=chain_border(1,ichain)