Skip to content
reset_pos.F90 1.22 KiB
Newer Older
Fabio Roberto Vitello's avatar
Fabio Roberto Vitello committed
!***********************************************************************
!
!
                           SUBROUTINE reset_pos
!
!
!***********************************************************************
!
!
!     Subroutine to reset bodies in a box so that it contains all bodies.
!
!=======================================================================

	 USE fly_h 
	implicit none

!   Declaration of local variables.
!   -------------------------------
	
	INTEGER 		:: p,k,imult
	REAL(KIND=8)		:: diff

!=======================================================================
	
	IF(me.eq.0) write(uterm,*)"Executing Reset Pos"

! remember:	rsize=Lbox


        DO  p=1,nb_res_loc(me+1)
           DO  k=1,ndim

	      IF(pos(k,p).lt.rmin(k)) THEN

	        diff=rmin(k)-pos(k,p)
	        imult=diff/rsize+1

	        IF(imult.gt.1) write(uterm,*)'WARNING - RP: pos(',k,',',p+idisp,') =',pos(k,p)
	    		pos(k,p)=pos(k,p)+rsize*imult
	      ENDIF
	      
	      IF(pos(k,p).ge.rmin(k)+rsize) THEN
		diff=pos(k,p)-rmin(k)
	      	imult=diff/rsize
		IF(imult.gt.1) write(uterm,*)'WARNING + RP: pos(',k,',',p+idisp,') =',pos(k,p)
		pos(k,p)=pos(k,p)-rsize*imult
	      
	      ENDIF
	
           END DO
       END DO
        
	RETURN
        END