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
ed945100
Commit
ed945100
authored
Mar 10, 2016
by
Matthieu Schaller
Browse files
space_split() now does its job correctly even with 0 parts
parent
72ae8ff1
Changes
1
Hide whitespace changes
Inline
Side-by-side
src/space.c
View file @
ed945100
...
...
@@ -1003,7 +1003,9 @@ void space_map_cells_pre(struct space *s, int full,
void
space_do_split
(
struct
space
*
s
,
struct
cell
*
c
)
{
int
k
,
count
=
c
->
count
,
gcount
=
c
->
gcount
,
maxdepth
=
0
;
const
int
count
=
c
->
count
;
const
int
gcount
=
c
->
gcount
;
int
maxdepth
=
0
;
float
h
,
h_max
=
0
.
0
f
;
int
ti_end_min
=
max_nr_timesteps
,
ti_end_max
=
0
,
ti_end
;
struct
cell
*
temp
;
...
...
@@ -1020,7 +1022,7 @@ void space_do_split(struct space *s, struct cell *c) {
c
->
split
=
1
;
/* Create the cell's progeny. */
for
(
k
=
0
;
k
<
8
;
k
++
)
{
for
(
int
k
=
0
;
k
<
8
;
k
++
)
{
temp
=
space_getcell
(
s
);
temp
->
count
=
0
;
temp
->
gcount
=
0
;
...
...
@@ -1047,7 +1049,7 @@ void space_do_split(struct space *s, struct cell *c) {
cell_split
(
c
);
/* Remove any progeny with zero parts. */
for
(
k
=
0
;
k
<
8
;
k
++
)
for
(
int
k
=
0
;
k
<
8
;
k
++
)
if
(
c
->
progeny
[
k
]
->
count
==
0
&&
c
->
progeny
[
k
]
->
gcount
==
0
)
{
space_recycle
(
s
,
c
->
progeny
[
k
]);
c
->
progeny
[
k
]
=
NULL
;
...
...
@@ -1077,8 +1079,7 @@ void space_do_split(struct space *s, struct cell *c) {
c
->
maxdepth
=
c
->
depth
;
/* Get dt_min/dt_max. */
for
(
k
=
0
;
k
<
count
;
k
++
)
{
for
(
int
k
=
0
;
k
<
count
;
k
++
)
{
p
=
&
parts
[
k
];
xp
=
&
xparts
[
k
];
xp
->
x_old
[
0
]
=
p
->
x
[
0
];
...
...
@@ -1096,7 +1097,10 @@ void space_do_split(struct space *s, struct cell *c) {
}
/* Set ownership according to the start of the parts array. */
c
->
owner
=
((
c
->
parts
-
s
->
parts
)
%
s
->
nr_parts
)
*
s
->
nr_queues
/
s
->
nr_parts
;
if
(
count
>
0
)
c
->
owner
=
((
c
->
parts
-
s
->
parts
)
%
s
->
nr_parts
)
*
s
->
nr_queues
/
s
->
nr_parts
;
else
c
->
owner
=
((
c
->
gparts
-
s
->
gparts
)
%
s
->
nr_gparts
)
*
s
->
nr_queues
/
s
->
nr_gparts
;
}
/**
...
...
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