Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
SWIFT
SWIFTsim
Commits
f3d1aed7
Commit
f3d1aed7
authored
Nov 15, 2013
by
Pedro Gonnet
Browse files
cells shouldn't be flipped when sent to subset routines.
Former-commit-id: 3d717410180a9a7d814ec8431576a1c3c654cfe8
parent
ad5aa875
Changes
1
Hide whitespace changes
Inline
Side-by-side
src/runner_doiact.h
View file @
f3d1aed7
...
...
@@ -355,6 +355,10 @@ void DOPAIR_SUBSET ( struct runner *r , struct cell *restrict ci , struct part *
flipped
=
runner_flip
[
sid
];
sid
=
sortlistID
[
sid
];
/* Have the cells been sorted? */
if
(
!
(
cj
->
sorted
&
(
1
<<
sid
)
)
)
error
(
"Trying to interact unsorted cells."
);
/* printf( "runner_dopair_naive: doing pair [ %g %g %g ]/[ %g %g %g ] with %i/%i parts and shift = [ %g %g %g ].\n" ,
ci->loc[0] , ci->loc[1] , ci->loc[2] , cj->loc[0] , cj->loc[1] , cj->loc[2] ,
ci->count , cj->count , shift[0] , shift[1] , shift[2] ); fflush(stdout);
...
...
@@ -2293,13 +2297,13 @@ void DOSUB_SUBSET ( struct runner *r , struct cell *ci , struct part *parts , in
/* Get the cell dimensions. */
h
=
fmin
(
ci
->
h
[
0
]
,
fmin
(
ci
->
h
[
1
]
,
ci
->
h
[
2
]
)
);
/* Get the type of pair if not specified explicitly. */
sid
=
space_getsid
(
s
,
&
ci
,
&
cj
,
shift
);
/* Recurse? */
if
(
ci
->
split
&&
cj
->
split
&&
fmaxf
(
ci
->
h_max
,
cj
->
h_max
)
*
kernel_gamma
+
ci
->
dx_max
+
cj
->
dx_max
<
h
/
2
)
{
/* Get the type of pair if not specified explicitly. */
sid
=
space_getsid
(
s
,
&
ci
,
&
cj
,
shift
);
/* Different types of flags. */
switch
(
sid
)
{
...
...
@@ -2654,6 +2658,19 @@ void DOSUB_SUBSET ( struct runner *r , struct cell *ci , struct part *parts , in
/* Otherwise, compute the pair directly. */
else
if
(
ci
->
dt_min
<=
dt_step
||
cj
->
dt_min
<=
dt_step
)
{
/* Get the relative distance between the pairs, wrapping. */
for
(
k
=
0
;
k
<
3
;
k
++
)
{
if
(
cj
->
loc
[
k
]
-
ci
->
loc
[
k
]
<
-
s
->
dim
[
k
]
/
2
)
shift
[
k
]
=
s
->
dim
[
k
];
else
if
(
cj
->
loc
[
k
]
-
ci
->
loc
[
k
]
>
s
->
dim
[
k
]
/
2
)
shift
[
k
]
=
-
s
->
dim
[
k
];
}
/* Get the sorting index. */
for
(
sid
=
0
,
k
=
0
;
k
<
3
;
k
++
)
sid
=
3
*
sid
+
(
(
cj
->
loc
[
k
]
-
ci
->
loc
[
k
]
+
shift
[
k
]
<
0
)
?
0
:
(
cj
->
loc
[
k
]
-
ci
->
loc
[
k
]
+
shift
[
k
]
>
0
)
?
2
:
1
);
sid
=
sortlistID
[
sid
];
/* Do any of the cells need to be sorted first? */
if
(
!
(
cj
->
sorted
&
(
1
<<
sid
)
)
)
runner_dosort
(
r
,
cj
,
(
1
<<
sid
)
,
1
);
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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