important change for single processor for multi-chain
[unres.git] / source / unres / src_MD-M / MREMD.F
index d9ddba2..5b0fc35 100644 (file)
@@ -527,6 +527,7 @@ c Variable time step algorithm.
             enddo
 C            print *,'przed returnbox'
             call returnbox
+C            call enerprint(remd_ene(0,i))
             do i=1,nres*2
              do j=1,3
               c_cache(j,i,ntwx_cache)=c(j,i)
@@ -832,7 +833,7 @@ c     &          remd_t_bath(iex)
                call rescale_weights(remd_t_bath(iex))
 
 c               write (iout,*) "0,i",remd_t_bath(iex)
-c               call enerprint(remd_ene(0,i))
+               call enerprint(remd_ene(0,i))
 
                call sum_energy(remd_ene(0,i),.false.)
 c               write (iout,*) "ene_i_iex",remd_ene(0,i)
@@ -960,7 +961,7 @@ cd            write(iout,*) "########",ii
 
 cd            write(iout,*) "i=",i,i_temp,i_mult,i_iset,i_mset
 
-            i_dir=iran_num(1,3)
+             i_dir=iran_num(1,3)
 cd            write(iout,*) "i_dir=",i_dir
 
             if(i_dir.eq.1 .and. remd_m(i_temp+1).gt.0 )then            
@@ -1171,7 +1172,7 @@ co     &    " rescaling weights with temperature",t_bath
          stdfp=dsqrt(2*Rb*t_bath/d_time)
          do i=1,ntyp
            stdfsc(i)=dsqrt(2*Rb*t_bath/d_time)
-         enddo 
+         enddo
 
 cde         write(iout,*) 'REMD after',me,t_bath
            time08=MPI_WTIME()
@@ -1501,8 +1502,13 @@ c end debugging
           call xdrffloat_(ixdrf, real(t_restart1(4,il)), iret)
           call xdrfint_(ixdrf, nss, iret) 
           do j=1,nss
-           call xdrfint_(ixdrf, ihpb(j), iret)
-           call xdrfint_(ixdrf, jhpb(j), iret)
+           if (dyn_ss) then
+            call xdrfint(ixdrf, idssb(j)+nres, iret)
+            call xdrfint(ixdrf, jdssb(j)+nres, iret)
+           else
+            call xdrfint_(ixdrf, ihpb(j), iret)
+            call xdrfint_(ixdrf, jhpb(j), iret)
+           endif
           enddo
           call xdrfint_(ixdrf, nfrag+npair+3*nfrag_back, iret)
           call xdrfint_(ixdrf, iset_restart1(il), iret)
@@ -1539,8 +1545,13 @@ c end debugging
           call xdrffloat(ixdrf, real(t_restart1(4,il)), iret)
           call xdrfint(ixdrf, nss, iret) 
           do j=1,nss
-           call xdrfint(ixdrf, ihpb(j), iret)
-           call xdrfint(ixdrf, jhpb(j), iret)
+           if (dyn_ss) then
+            call xdrfint(ixdrf, idssb(j)+nres, iret)
+            call xdrfint(ixdrf, jdssb(j)+nres, iret)
+           else
+            call xdrfint(ixdrf, ihpb(j), iret)
+            call xdrfint(ixdrf, jhpb(j), iret)
+           endif
           enddo
           call xdrfint(ixdrf, nfrag+npair+3*nfrag_back, iret)
           call xdrfint(ixdrf, iset_restart1(il), iret)
@@ -1862,228 +1873,3 @@ c     &                (d_restart1(j,i+2*nres*il),j=1,3)
         if(me.eq.king) close(irest2)
         return
         end
-c------------------------------------------
-      subroutine returnbox
-      include 'DIMENSIONS'
-      include 'mpif.h'
-      include 'COMMON.CONTROL'
-      include 'COMMON.VAR'
-      include 'COMMON.MD'
-#ifndef LANG0
-      include 'COMMON.LANGEVIN'
-#else
-      include 'COMMON.LANGEVIN.lang0'
-#endif
-      include 'COMMON.CHAIN'
-      include 'COMMON.DERIV'
-      include 'COMMON.GEO'
-      include 'COMMON.LOCAL'
-      include 'COMMON.INTERACT'
-      include 'COMMON.IOUNITS'
-      include 'COMMON.NAMES'
-      include 'COMMON.TIME1'
-      include 'COMMON.REMD'
-      include 'COMMON.SETUP'
-      include 'COMMON.MUCA'
-      include 'COMMON.HAIRPIN'
-        j=1
-        chain_beg=1
-C        do i=1,nres
-C       write(*,*) 'initial', i,j,c(j,i)
-C        enddo
-        do i=1,nres-1
-         if ((itype(i).eq.ntyp1).and.(itype(i+1).eq.ntyp1)) then
-          chain_end=i
-          if (allareout.eq.1) then
-            ireturnval=int(c(j,i)/boxxsize)
-            if (c(j,i).le.0) ireturnval=ireturnval-1
-            do k=chain_beg,chain_end
-              c(j,k)=c(j,k)-ireturnval*boxxsize
-              c(j,k+nres)=c(j,k+nres)-ireturnval*boxxsize
-            enddo
-           endif
-           chain_beg=i+1
-           allareout=1
-         else
-          if (int(c(j,i)/boxxsize).eq.0) allareout=0
-         endif
-        enddo
-         if (allareout.eq.1) then
-            ireturnval=int(c(j,i)/boxxsize)
-            if (c(j,i).le.0) ireturnval=ireturnval-1
-            do k=chain_beg,nres
-              c(j,k)=c(j,k)-ireturnval*boxxsize
-              c(j,k+nres)=c(j,k+nres)-ireturnval*boxxsize
-            enddo
-          endif
-C NO JUMP 
-C        do i=1,nres
-C        write(*,*) 'befor no jump', i,j,c(j,i)
-C        enddo
-        nojumpval=0
-        do i=2,nres
-           if (itype(i).eq.ntyp1 .and. itype(i-1).eq.ntyp1) then
-             difference=abs(c(j,i-1)-c(j,i))
-C             print *,'diff', difference
-             if (difference.gt.boxxsize/2.0) then
-                if (c(j,i-1).gt.c(j,i)) then
-                  nojumpval=1
-                 else
-                   nojumpval=-1
-                 endif
-              else
-              nojumpval=0
-              endif
-              endif
-              c(j,k)=c(j,k)+nojumpval*boxxsize
-              c(j,k+nres)=c(j,k+nres)+nojumpval*boxxsize
-         enddo
-       nojumpval=0
-        do i=2,nres
-           if (itype(i).eq.ntyp1 .and. itype(i-1).eq.ntyp1) then
-             difference=abs(c(j,i-1)-c(j,i))
-             if (difference.gt.boxxsize/2.0) then
-                if (c(j,i-1).gt.c(j,i)) then
-                  nojumpval=1
-                 else
-                   nojumpval=-1
-                 endif
-              else
-              nojumpval=0
-              endif
-             endif
-              c(j,k)=c(j,k)+nojumpval*boxxsize
-              c(j,k+nres)=c(j,k+nres)+nojumpval*boxxsize
-         enddo
-
-        do i=1,nres
-        write(*,*) 'after no jump', i,j,c(j,i)
-        enddo
-
-C NOW Y dimension
-        j=2
-        chain_beg=1
-        do i=1,nres-1
-         if ((itype(i).eq.ntyp1).and.(itype(i+1).eq.ntyp1)) then
-          chain_end=i
-          if (allareout.eq.1) then
-            ireturnval=int(c(j,i)/boxysize)
-            if (c(j,i).le.0) ireturnval=ireturnval-1
-            do k=chain_beg,chain_end
-              c(j,k)=c(j,k)-ireturnval*boxysize
-              c(j,k+nres)=c(j,k+nres)-ireturnval*boxysize
-            enddo
-           endif
-           chain_beg=i+1
-           allareout=1
-         else
-          if (int(c(j,i)/boxysize).eq.0) allareout=0
-         endif
-        enddo
-         if (allareout.eq.1) then
-            ireturnval=int(c(j,i)/boxysize)
-            if (c(j,i).le.0) ireturnval=ireturnval-1
-            do k=chain_beg,nres
-              c(j,k)=c(j,k)-ireturnval*boxysize
-              c(j,k+nres)=c(j,k+nres)-ireturnval*boxysize
-            enddo
-          endif
-        nojumpval=0
-        do i=2,nres
-           if (itype(i).eq.ntyp1 .and. itype(i-1).eq.ntyp1) then
-             difference=abs(c(j,i-1)-c(j,i))
-             if (difference.gt.boxysize/2.0) then
-                if (c(j,i-1).gt.c(j,i)) then
-                  nojumpval=1
-                 else
-                   nojumpval=-1
-                 endif
-              else
-              nojumpval=0
-              endif
-           endif
-              c(j,k)=c(j,k)+nojumpval*boxysize
-              c(j,k+nres)=c(j,k+nres)+nojumpval*boxysize
-         enddo
-      nojumpval=0
-        do i=2,nres
-           if (itype(i).eq.ntyp1 .and. itype(i-1).eq.ntyp1) then
-             difference=abs(c(j,i-1)-c(j,i))
-             if (difference.gt.boxysize/2.0) then
-                if (c(j,i-1).gt.c(j,i)) then
-                  nojumpval=1
-                 else
-                   nojumpval=-1
-                 endif
-              else
-              nojumpval=0
-              endif
-            endif
-              c(j,k)=c(j,k)+nojumpval*boxysize
-              c(j,k+nres)=c(j,k+nres)+nojumpval*boxysize
-         enddo
-
-        j=3
-        chain_beg=1
-        do i=1,nres-1
-         if ((itype(i).eq.ntyp1).and.(itype(i+1).eq.ntyp1)) then
-          chain_end=i
-          if (allareout.eq.1) then
-            ireturnval=int(c(j,i)/boxysize)
-            if (c(j,i).le.0) ireturnval=ireturnval-1
-            do k=chain_beg,chain_end
-              c(j,k)=c(j,k)-ireturnval*boxzsize
-              c(j,k+nres)=c(j,k+nres)-ireturnval*boxzsize
-            enddo
-           endif
-           chain_beg=i+1
-           allareout=1
-         else
-          if (int(c(j,i)/boxzsize).eq.0) allareout=0
-         endif
-        enddo
-         if (allareout.eq.1) then
-            ireturnval=int(c(j,i)/boxzsize)
-            if (c(j,i).le.0) ireturnval=ireturnval-1
-            do k=chain_beg,nres
-              c(j,k)=c(j,k)-ireturnval*boxzsize
-              c(j,k+nres)=c(j,k+nres)-ireturnval*boxzsize
-            enddo
-          endif
-        nojumpval=0
-        do i=2,nres
-           if (itype(i).eq.ntyp1 .and. itype(i-1).eq.ntyp1) then
-             difference=abs(c(j,i-1)-c(j,i))
-             if (difference.gt.(boxzsize/2.0)) then
-                if (c(j,i-1).gt.c(j,i)) then
-                  nojumpval=1
-                 else
-                   nojumpval=-1
-                 endif
-              else
-              nojumpval=0
-              endif
-            endif
-              c(j,k)=c(j,k)+nojumpval*boxzsize
-              c(j,k+nres)=c(j,k+nres)+nojumpval*boxzsize
-         enddo
-       nojumpval=0
-        do i=2,nres
-           if (itype(i).eq.ntyp1 .and. itype(i-1).eq.ntyp1) then
-             difference=abs(c(j,i-1)-c(j,i))
-             if (difference.gt.boxzsize/2.0) then
-                if (c(j,i-1).gt.c(j,i)) then
-                  nojumpval=1
-                 else
-                   nojumpval=-1
-                 endif
-              else
-              nojumpval=0
-              endif
-            endif
-              c(j,k)=c(j,k)+nojumpval*boxzsize
-              c(j,k+nres)=c(j,k+nres)+nojumpval*boxzsize
-         enddo
-
-        return
-        end