Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
tsoc
openmm
Commits
63bb38a9
Commit
63bb38a9
authored
Jul 06, 2015
by
peastman
Browse files
Merge pull request #1015 from peastman/cpuneighbors
Reverted an incorrect optimization
parents
47f2af23
f515733e
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
17 additions
and
27 deletions
+17
-27
platforms/cpu/src/CpuNeighborList.cpp
platforms/cpu/src/CpuNeighborList.cpp
+17
-27
No files found.
platforms/cpu/src/CpuNeighborList.cpp
View file @
63bb38a9
...
...
@@ -233,34 +233,24 @@ public:
float
minx
=
centerPos
[
0
];
float
maxx
=
centerPos
[
0
];
float
offset
[
3
]
=
{
-
xoffset
,
-
yoffset
+
voxelSizeY
*
y
+
(
usePeriodic
?
0.0
f
:
miny
),
voxelSizeZ
*
z
+
(
usePeriodic
?
0.0
f
:
minz
)};
for
(
int
k
=
0
;
k
<
(
int
)
blockAtoms
.
size
();
k
+=
4
)
{
fvec4
dist2
=
maxDistanceSquared
;
if
(
y
!=
atomVoxelIndex
[
k
].
y
)
{
fvec4
dy1
=
offset
[
1
]
-
fvec4
(
&
blockAtomY
[
k
]);
fvec4
dy2
=
dy1
+
voxelSizeY
;
if
(
usePeriodic
)
{
dy1
-=
round
(
dy1
*
invBoxSize
[
1
])
*
boxSize
[
1
];
dy2
-=
round
(
dy2
*
invBoxSize
[
1
])
*
boxSize
[
1
];
}
fvec4
dy
=
min
(
abs
(
dy1
),
abs
(
dy2
));
dist2
-=
dy
*
dy
;
}
if
(
z
!=
atomVoxelIndex
[
k
].
z
)
{
fvec4
dz1
=
offset
[
2
]
-
fvec4
(
&
blockAtomZ
[
k
]);
fvec4
dz2
=
dz1
+
voxelSizeZ
;
fvec4
offset
(
-
xoffset
,
-
yoffset
+
voxelSizeY
*
y
+
(
usePeriodic
?
0.0
f
:
miny
),
voxelSizeZ
*
z
+
(
usePeriodic
?
0.0
f
:
minz
),
0
);
for
(
int
k
=
0
;
k
<
(
int
)
blockAtoms
.
size
();
k
++
)
{
const
float
*
atomPos
=
&
sortedPositions
[
4
*
(
blockSize
*
blockIndex
+
k
)];
fvec4
posVec
(
atomPos
);
fvec4
delta1
=
offset
-
posVec
;
fvec4
delta2
=
delta1
+
fvec4
(
0
,
voxelSizeY
,
voxelSizeZ
,
0
);
if
(
usePeriodic
)
{
dz
1
-=
round
(
d
z
1
*
invBoxSize
[
2
]
)
*
boxSize
[
2
]
;
dz
2
-=
round
(
d
z
2
*
invBoxSize
[
2
]
)
*
boxSize
[
2
]
;
}
fvec4
d
z
=
min
(
abs
(
d
z
1
),
abs
(
d
z
2
));
dist2
-=
dz
*
dz
;
}
f
vec4
dist
=
sqrt
(
dist2
)
;
i
nt
numToCheck
=
min
(
4
,
(
int
)
(
blockAtoms
.
size
()
-
k
));
for
(
int
m
=
0
;
m
<
numToCheck
;
m
++
)
{
minx
=
min
(
minx
,
blockAtomX
[
k
+
m
]
-
dist
[
m
]
-
xoffset
);
maxx
=
max
(
maxx
,
blockAtomX
[
k
+
m
]
+
dist
[
m
]
-
xoffset
);
delta
1
-=
round
(
d
elta
1
*
invBoxSize
)
*
boxSize
;
delta
2
-=
round
(
d
elta
2
*
invBoxSize
)
*
boxSize
;
}
fvec4
d
elta
=
min
(
abs
(
d
elta
1
),
abs
(
d
elta
2
));
float
dy
=
(
y
==
atomVoxelIndex
[
k
].
y
?
0.0
f
:
delta
[
1
])
;
float
dz
=
(
z
==
atomVoxelIndex
[
k
].
z
?
0.0
f
:
delta
[
2
]);
f
loat
dist
2
=
maxDistanceSquared
-
dy
*
dy
-
dz
*
dz
;
i
f
(
dist2
>
0
)
{
float
dist
=
sqrtf
(
dist2
);
minx
=
min
(
minx
,
atomPos
[
0
]
-
dist
-
xoffset
);
maxx
=
max
(
maxx
,
atomPos
[
0
]
+
dist
-
xoffset
);
}
}
if
(
minx
==
maxx
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment