Skip to content

Commit 806281e

Browse files
committed
Rewrote the cubic PBCs in scalar form
1 parent d5fb435 commit 806281e

File tree

1 file changed

+11
-15
lines changed

1 file changed

+11
-15
lines changed

src/boundary_conditions.jl

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -51,21 +51,17 @@ function apply_boundary_conditions!(ri, rj, pbc::PeriodicBoundaryConditions, R2)
5151
end
5252

5353
function apply_boundary_conditions!(ri, rj, pbc::CubicPeriodicBoundaryConditions, R2)
54-
rij = SVector{3,typeof(R2)}(Inf, Inf, Inf)
55-
success = false
56-
rij2 = zero(typeof(R2))
57-
shifts = SVector{3,typeof(R2)}(0, -pbc.L, pbc.L)
58-
for dx shifts, dy shifts, dz shifts
59-
dr = SVector{3,typeof(R2)}(dx, dy, dz)
60-
rij = ri - rj + dr
61-
rij = rij - pbc.L * sign.(rij) .* sign(pbc.L) .* floor.(abs.(rij) / abs(pbc.L))
62-
rij2 = dot(rij, rij)
63-
if rij2 < R2
64-
success = true
65-
break
66-
end
67-
end
68-
return (rij, rij2, success)
54+
rij = ri - rj
55+
x, y, z = rij[1], rij[2], rij[3]
56+
while x >= pbc.L x -= pbc.L end
57+
while x < -pbc.L x += pbc.L end
58+
while y >= pbc.L y -= pbc.L end
59+
while y < -pbc.L y += pbc.L end
60+
while z >= pbc.L z -= pbc.L end
61+
while z < -pbc.L z += pbc.L end
62+
rij = SVector{3,eltype(R2)}(x, y, z)
63+
rij2 = dot(rij, rij)
64+
return (rij, rij2, rij2 < R2)
6965
end
7066

7167
function apply_boundary_conditions!(ri, rj, pbc::BoundaryConditions, R2)

0 commit comments

Comments
 (0)