corrections
[unres.git] / source / unres / src-HCD-5D / MREMD.F
index 9191402..f22e2f6 100644 (file)
@@ -57,7 +57,7 @@ cold      integer nup(0:maxprocs),ndown(0:maxprocs)
       integer rep2i(0:maxprocs),ireqi(maxprocs)
       integer icache_all(maxprocs)
       integer status(MPI_STATUS_SIZE),statusi(MPI_STATUS_SIZE,maxprocs)
-      logical synflag,end_of_run,file_exist /.false./,ovrtim
+      logical synflag,end_of_run,file_exist /.false./,ovrtim,first_pass
       double precision t_bath_temp,delta,ene_iex_iex,ene_i_i,ene_iex_i,
      & ene_i_iex,xxx,tmp,econstr_temp_iex,econstr_temp_i
       integer iran_num
@@ -145,8 +145,8 @@ cold       endif
 cd       print '(i4,a6,100i4)',me,' ndown',(ndown(i),i=0,ndown(0))
 
        
-       write (*,*) "Processor",me," rest",rest,"
-     &   restart1fie",restart1file
+c       write (*,*) "Processor",me," rest",rest,"
+c     &   restart1fie",restart1file
        if(rest.and.restart1file) then 
            if (me.eq.king)
      &     inquire(file=mremd_rst_name,exist=file_exist)
@@ -424,6 +424,8 @@ c   Entering the MD loop
 #endif
       itime=0
       end_of_run=.false.
+      first_pass=.not.rest
+c      write (iout,*) "first_pass",first_pass
       do while(.not.end_of_run)
         itime=itime+1
         if(itime.eq.n_timestep.and.me.eq.king) end_of_run=.true.
@@ -942,7 +944,10 @@ c               write (iout,*) "ene_i_i",remd_ene(0,i)
 c               call flush(iout)
 c               write (iout,*) "rescaling weights with temperature",
 c     &          remd_t_bath(iex)
-               if (real(ene_i_i).ne.real(remd_ene(0,i))) then
+c               write (iout,*) "first_pass",first_pass
+               if (.not.first_pass.and.
+     &           real(ene_i_i).ne.real(remd_ene(0,i))) 
+     &         then
                 write (iout,*) "ERROR: inconsistent energies:",i,
      &            ene_i_i,remd_ene(0,i)
                endif
@@ -960,7 +965,8 @@ c               write (iout,*) "0,iex",remd_t_bath(iex)
 c               call enerprint(remd_ene(0,iex))
 
                call sum_energy(remd_ene(0,iex),.false.)
-               if (real(ene_iex_iex).ne.real(remd_ene(0,iex))) then
+               if (.not.first_pass.and.
+     &           real(ene_iex_iex).ne.real(remd_ene(0,iex))) then
                 write (iout,*) "ERROR: inconsistent energies:",iex,
      &            ene_iex_iex,remd_ene(0,iex)
                endif
@@ -1065,6 +1071,7 @@ c              call flush(iout)
             endif
            enddo
            enddo
+           first_pass=.false.
 cd           write (iout,*) "exchange completed"
 cd           call flush(iout) 
         ELSE
@@ -1383,7 +1390,7 @@ c-----------------------------------------------------------------------
       include 'COMMON.SBRIDGE'
       include 'COMMON.INTERACT'
                
-      real d_restart1(3,2*maxres*maxprocs),r_d(3,2*maxres),
+      real d_restart1(3,2*maxres*maxprocs),r_d(3,0:2*maxres-1),
      &     d_restart2(3,2*maxres*maxprocs)
       real t5_restart1(5)
       integer iret,itmp
@@ -1403,7 +1410,7 @@ c-----------------------------------------------------------------------
      &      t_restart1,5,mpi_real,king,CG_COMM,ierr)
 
 
-       do i=1,2*nres
+       do i=0,2*nres-1
          do j=1,3
            r_d(j,i)=d_t(j,i)
          enddo
@@ -1413,7 +1420,7 @@ c-----------------------------------------------------------------------
      &           CG_COMM,ierr)
 
 
-       do i=1,2*nres
+       do i=0,2*nres-1
          do j=1,3
            r_d(j,i)=dc(j,i)
          enddo
@@ -1794,14 +1801,14 @@ c end debugging
       include 'COMMON.CHAIN'
       include 'COMMON.SBRIDGE'
       include 'COMMON.INTERACT'
-      real d_restart1(3,2*maxres*maxprocs),r_d(3,2*maxres),
+      real d_restart1(3,2*maxres*maxprocs),r_d(3,0:2*maxres-1),
      &                 t5_restart1(5)
       integer*2 i_index
      &            (maxprocs/4,maxprocs/20,maxprocs/200,maxprocs/200)
       common /przechowalnia/ d_restart1
       integer i,j,il,il1,ixdrf,iret,itmp
       integer ierr
-      write (*,*) "Processor",me," called read1restart"
+c      write (*,*) "Processor",me," called read1restart"
 
          if(me.eq.king)then
               open(irest2,file=mremd_rst_name,status='unknown')
@@ -1888,7 +1895,7 @@ c     &                (d_restart1(j,i+2*nres*il),j=1,3)
          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
+         do i=0,2*nres-1
            do j=1,3
             d_t(j,i)=r_d(j,i)
            enddo
@@ -1910,7 +1917,7 @@ c     &                (d_restart1(j,i+2*nres*il),j=1,3)
          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
+         do i=0,2*nres-1
            do j=1,3
             dc(j,i)=r_d(j,i)
            enddo
@@ -1991,7 +1998,7 @@ c     &           CG_COMM,ierr)
       include 'COMMON.CHAIN'
       include 'COMMON.SBRIDGE'
       include 'COMMON.INTERACT'
-      real d_restart1(3,2*maxres*maxprocs),r_d(3,2*maxres),
+      real d_restart1(3,2*maxres*maxprocs),r_d(3,0:2*maxres-1),
      &                 t5_restart1(5)
       common /przechowalnia/ d_restart1
       integer i,j,il,itmp
@@ -2027,7 +2034,7 @@ c     &           CG_COMM,ierr)
          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
+         do i=0,2*nres-1
            do j=1,3
             d_t(j,i)=r_d(j,i)
            enddo
@@ -2042,7 +2049,7 @@ c     &           CG_COMM,ierr)
          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
+         do i=0,2*nres-1
            do j=1,3
             dc(j,i)=r_d(j,i)
            enddo