real(kind=8) :: energia(0:n_ene)
real(kind=8) :: remd_t_bath(Nprocs) !(maxprocs)
integer :: iremd_iset(Nprocs) !(maxprocs)
- integer(kind=2) :: i_index(Nprocs/4,Nprocs/20,Nprocs/200,Nprocs/200)
+ integer(kind=2) :: i_index(Nprocs,Nprocs,Nprocs,Nprocs)
! (maxprocs/4,maxprocs/20,maxprocs/200,maxprocs/200)
real(kind=8) :: remd_ene(0:n_ene+4,Nprocs) !(0:n_ene+4,maxprocs)
integer :: iremd_acc(Nprocs),iremd_tot(Nprocs) !(maxprocs)
endif
mremd_rst_name=prefix(:ilen(prefix))//"_mremd.rst"
-!d print *,'MREMD',nodes
-!d print *,'mmm',me,remd_mlist,(remd_m(i),i=1,nrep)
-!de write (iout,*) "Start MREMD: me",me," t_bath",t_bath
+ print *,'MREMD',nodes
+ print *,'mmm',me,remd_mlist,(remd_m(i),i=1,nrep)
+ write (iout,*) "Start MREMD: me",me," t_bath",t_bath
+ print *,"NSET=",nset, "MSET=", mset
k=0
rep2i(k)=-1
do il=1,max0(nset,1)
!d print '(i4,a6,100i4)',me,' ndown',(ndown(i),i=0,ndown(0))
!el common /przechowalnia/
- if(.not.allocated(d_restart1)) allocate(d_restart1(3,nres2*nodes))
- if(.not.allocated(d_restart2)) allocate(d_restart2(3,nres2*nodes))
+ if(.not.allocated(d_restart1)) allocate(d_restart1(3,0:(nres2+1)*nodes))
+ if(.not.allocated(d_restart2)) allocate(d_restart2(3,0:(nres2+1)*nodes))
if(.not.allocated(p_c)) allocate(p_c(3,(nres2+2)*nodes))
!el-------------
if(me.eq.king.or..not.out1file) &
write(iout,*) me,"iset=",iset,"t_bath=",t_bath
endif
-!
- stdfp=dsqrt(2*Rb*t_bath/d_time)
+!
+ do i=1,5
+ stdfp(i)=dsqrt(2*Rb*t_bath/d_time)
+ enddo
+ do j=1,5
do i=1,ntyp
- stdfsc(i)=dsqrt(2*Rb*t_bath/d_time)
+ stdfsc(i,j)=dsqrt(2*Rb*t_bath/d_time)
enddo
+ enddo
! print *,'irep',me,t_bath
if (.not.rest) then
if (rest) then
if (me.eq.king .or. .not. out1file) &
write (iout,'(a60,f10.5)') "REMD restart Temperature:",t_bath
- stdfp=dsqrt(2*Rb*t_bath/d_time)
+ do j=1,5
+ stdfp(j)=dsqrt(2*Rb*t_bath/d_time)
do i=1,ntyp
- stdfsc(i)=dsqrt(2*Rb*t_bath/d_time)
+ stdfsc(i,j)=dsqrt(2*Rb*t_bath/d_time)
enddo
+ enddo
call rescale_weights(t_bath)
endif
ugamma_cache(i,ntwx_cache)=ugamma(i)
uscdiff_cache(i,ntwx_cache)=uscdiff(i)
enddo
-
+ call returnbox
do i=1,nres*2
do j=1,3
c_cache(j,i,ntwx_cache)=c(j,i)
call rescale_weights(t_bath)
!o write (iout,*) "Processor",me,
!o & " rescaling weights with temperature",t_bath
-
- stdfp=dsqrt(2*Rb*t_bath/d_time)
+ do j=1,5
+ stdfp(j)=dsqrt(2*Rb*t_bath/d_time)
do i=1,ntyp
- stdfsc(i)=dsqrt(2*Rb*t_bath/d_time)
+ stdfsc(i,j)=dsqrt(2*Rb*t_bath/d_time)
enddo
+ enddo
!de write(iout,*) 'REMD after',me,t_bath
time08=MPI_WTIME()
!el real(kind=4) :: d_restart1(3,2*nres*maxprocs),&
!el d_restart2(3,2*nres*maxprocs)
- real(kind=4) :: r_d(3,2*nres)
+ real(kind=4) :: r_d(3,0:2*nres)
real(kind=4) :: t5_restart1(5)
integer :: iret,itmp
- integer(kind=2) :: i_index(Nprocs/4,Nprocs/20,Nprocs/200,Nprocs/200)
+! integer(kind=2) :: i_index(Nprocs/4,Nprocs/20,Nprocs/200,Nprocs/200)
+ integer(kind=2) :: i_index(Nprocs,Nprocs,Nprocs,Nprocs)
+
!(maxprocs/4,maxprocs/20,maxprocs/200,maxprocs/200)
!el common /przechowalnia/ d_restart1,d_restart2
integer :: i,j,il,il1,ierr,ixdrf
t_restart1,5,mpi_real,king,CG_COMM,ierr)
- do i=1,2*nres
+ do i=0,2*nres
do j=1,3
r_d(j,i)=d_t(j,i)
enddo
enddo
- call mpi_gather(r_d,3*2*nres,mpi_real,&
- d_restart1,3*2*nres,mpi_real,king,&
+ call mpi_gather(r_d,3*2*nres+3,mpi_real,&
+ d_restart1,3*2*nres+3,mpi_real,king,&
CG_COMM,ierr)
+ do j=1,3
+ dc(j,0)=c(j,1)
+ enddo
- do i=1,2*nres
+ do i=0,2*nres
do j=1,3
r_d(j,i)=dc(j,i)
enddo
enddo
- call mpi_gather(r_d,3*2*nres,mpi_real,&
- d_restart2,3*2*nres,mpi_real,king,&
+ call mpi_gather(r_d,3*2*nres+3,mpi_real,&
+ d_restart2,3*2*nres+3,mpi_real,king,&
CG_COMM,ierr)
if(me.eq.king) then
enddo
do il=0,nodes-1
- do i=1,2*nres
+ do i=0,2*nres
do j=1,3
- call xdrffloat_(ixdrf, d_restart1(j,i+2*nres*il), iret)
+ call xdrffloat_(ixdrf, d_restart1(j,i+(2*nres+1)*il), iret)
enddo
enddo
enddo
do il=0,nodes-1
- do i=1,2*nres
+ do i=0,2*nres
do j=1,3
- call xdrffloat_(ixdrf, d_restart2(j,i+2*nres*il), iret)
+ call xdrffloat_(ixdrf, d_restart2(j,i+(2*nres+1)*il), iret)
enddo
enddo
enddo
enddo
do il=0,nodes-1
- do i=1,2*nres
+ do i=0,2*nres
do j=1,3
- call xdrffloat(ixdrf, d_restart1(j,i+2*nres*il), iret)
+ call xdrffloat(ixdrf, d_restart1(j,i+(2*nres+1)*il), iret)
enddo
enddo
enddo
do il=0,nodes-1
- do i=1,2*nres
+ do i=0,2*nres
do j=1,3
- call xdrffloat(ixdrf, d_restart2(j,i+2*nres*il), iret)
+ call xdrffloat(ixdrf, d_restart2(j,i+(2*nres+1)*il), iret)
enddo
enddo
enddo
! include 'COMMON.SBRIDGE'
! include 'COMMON.INTERACT'
!el real(kind=4) :: d_restart1(3,2*nres*maxprocs)
- real(kind=4) :: r_d(3,2*nres),t5_restart1(5)
- integer(kind=2) :: i_index(Nprocs/4,Nprocs/20,Nprocs/200,Nprocs/200)
+ real(kind=4) :: r_d(3,0:2*nres),t5_restart1(5)
+! integer(kind=2) :: i_index(Nprocs/4,Nprocs/20,Nprocs/200,Nprocs/200)
+ integer(kind=2) :: i_index(Nprocs,Nprocs,Nprocs,Nprocs)
+
!(maxprocs/4,maxprocs/20,maxprocs/200,maxprocs/200)
!el common /przechowalnia/ d_restart1
integer :: i,j,il,il1,ierr,itmp,iret,ixdrf
if(me.eq.king)then
do il=0,nodes-1
- do i=1,2*nres
+ do i=0,2*nres
! read(irest2,'(3e15.5)')
! & (d_restart1(j,i+2*nres*il),j=1,3)
do j=1,3
#ifdef AIX
- call xdrffloat_(ixdrf, d_restart1(j,i+2*nres*il), iret)
+ call xdrffloat_(ixdrf, d_restart1(j,i+(2*nres+1)*il), iret)
#else
- call xdrffloat(ixdrf, d_restart1(j,i+2*nres*il), iret)
+ call xdrffloat(ixdrf, d_restart1(j,i+(2*nres+1)*il), iret)
#endif
enddo
enddo
enddo
endif
- call mpi_scatter(d_restart1,3*2*nres,mpi_real,&
- r_d,3*2*nres,mpi_real,king,CG_COMM,ierr)
+ call mpi_scatter(d_restart1,3*2*nres+3,mpi_real,&
+ r_d,3*2*nres+3,mpi_real,king,CG_COMM,ierr)
- do i=1,2*nres
+ do i=0,2*nres
do j=1,3
d_t(j,i)=r_d(j,i)
enddo
enddo
if(me.eq.king)then
do il=0,nodes-1
- do i=1,2*nres
+ do i=0,2*nres
! read(irest2,'(3e15.5)')
! & (d_restart1(j,i+2*nres*il),j=1,3)
do j=1,3
#ifdef AIX
- call xdrffloat_(ixdrf, d_restart1(j,i+2*nres*il), iret)
+ call xdrffloat_(ixdrf, d_restart1(j,i+(2*nres+1)*il), iret)
#else
- call xdrffloat(ixdrf, d_restart1(j,i+2*nres*il), iret)
+ call xdrffloat(ixdrf, d_restart1(j,i+(2*nres+1)*il), iret)
#endif
enddo
enddo
enddo
endif
- call mpi_scatter(d_restart1,3*2*nres,mpi_real,&
- r_d,3*2*nres,mpi_real,king,CG_COMM,ierr)
- do i=1,2*nres
+ call mpi_scatter(d_restart1,3*2*nres+3,mpi_real,&
+ r_d,3*2*nres+3,mpi_real,king,CG_COMM,ierr)
+ do i=0,2*nres
do j=1,3
dc(j,i)=r_d(j,i)
enddo
! include 'COMMON.SBRIDGE'
! include 'COMMON.INTERACT'
!el real(kind=4) :: d_restart1(3,2*nres*maxprocs)
- real(kind=4) :: r_d(3,2*nres),t5_restart1(5)
+ real(kind=4) :: r_d(3,0:2*nres),t5_restart1(5)
!el common /przechowalnia/ d_restart1
integer :: i,j,il,ierr
if(me.eq.king)then
do il=0,nodes-1
- do i=1,2*nres
+ do i=0,2*nres
read(irest2,'(3e15.5)') &
- (d_restart1(j,i+2*nres*il),j=1,3)
+ (d_restart1(j,i+(2*nres+1)*il),j=1,3)
enddo
enddo
endif
- call mpi_scatter(d_restart1,3*2*nres,mpi_real,&
- r_d,3*2*nres,mpi_real,king,CG_COMM,ierr)
+ call mpi_scatter(d_restart1,3*2*nres+3,mpi_real,&
+ r_d,3*2*nres+3,mpi_real,king,CG_COMM,ierr)
- do i=1,2*nres
+ do i=0,2*nres
do j=1,3
d_t(j,i)=r_d(j,i)
enddo
do il=0,nodes-1
do i=1,2*nres
read(irest2,'(3e15.5)') &
- (d_restart1(j,i+2*nres*il),j=1,3)
+ (d_restart1(j,i+(2*nres+1)*il),j=1,3)
enddo
enddo
endif
- call mpi_scatter(d_restart1,3*2*nres,mpi_real,&
- r_d,3*2*nres,mpi_real,king,CG_COMM,ierr)
- do i=1,2*nres
+ call mpi_scatter(d_restart1,3*2*nres+3,mpi_real,&
+ r_d,3*2*nres+3,mpi_real,king,CG_COMM,ierr)
+ do i=0,2*nres
do j=1,3
dc(j,i)=r_d(j,i)
enddo
subroutine alloc_MREMD_arrays
! if(.not.allocated(mset)) allocate(mset(max0(nset,1)))
- if(.not.allocated(stdfsc)) allocate(stdfsc(ntyp1)) !(ntyp1))
+ if(.not.allocated(stdfsc)) allocate(stdfsc(ntyp1,5)) !(ntyp1))
! commom.remd
! common /remdcommon/ in io: read_REMDpar
! real(kind=8),dimension(:),allocatable :: remd_t !(maxprocs)