Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
!***********************************************************************
!
!
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