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
a7c8ce11
Commit
a7c8ce11
authored
Jun 17, 2016
by
Matthieu Schaller
Browse files
Moved the debugging code between #define guards
parent
f8c92e57
Changes
6
Hide whitespace changes
Inline
Side-by-side
src/cell.c
View file @
a7c8ce11
...
...
@@ -406,12 +406,14 @@ void cell_split(struct cell *c) {
xparts
[
j
]
=
xtemp
;
}
}
/* for ( k = 0 ; k <= j ; k++ )
if ( parts[k].x[0] > pivot[0] )
error( "cell_split: sorting failed." );
for ( k = i ; k < count ; k++ )
if ( parts[k].x[0] < pivot[0] )
error( "cell_split: sorting failed." ); */
#ifdef SWIFT_DEBUG_CHECKS
for
(
int
k
=
0
;
k
<=
j
;
k
++
)
if
(
parts
[
k
].
x
[
0
]
>
pivot
[
0
])
error
(
"cell_split: sorting failed."
);
for
(
int
k
=
i
;
k
<
count
;
k
++
)
if
(
parts
[
k
].
x
[
0
]
<
pivot
[
0
])
error
(
"cell_split: sorting failed."
);
#endif
left
[
1
]
=
i
;
right
[
1
]
=
count
-
1
;
left
[
0
]
=
0
;
...
...
@@ -433,14 +435,17 @@ void cell_split(struct cell *c) {
xparts
[
j
]
=
xtemp
;
}
}
/* for ( int kk = left[k] ; kk <= j ; kk++ )
if ( parts[kk].x[1] > pivot[1] ) {
message( "ival=[%i,%i], i=%i, j=%i." , left[k] , right[k] , i , j );
error( "sorting failed (left)." );
}
for ( int kk = i ; kk <= right[k] ; kk++ )
if ( parts[kk].x[1] < pivot[1] )
error( "sorting failed (right)." ); */
#ifdef SWIFT_DEBUG_CHECKS
for
(
int
kk
=
left
[
k
];
kk
<=
j
;
kk
++
)
if
(
parts
[
kk
].
x
[
1
]
>
pivot
[
1
])
{
message
(
"ival=[%i,%i], i=%i, j=%i."
,
left
[
k
],
right
[
k
],
i
,
j
);
error
(
"sorting failed (left)."
);
}
for
(
int
kk
=
i
;
kk
<=
right
[
k
];
kk
++
)
if
(
parts
[
kk
].
x
[
1
]
<
pivot
[
1
])
error
(
"sorting failed (right)."
);
#endif
left
[
2
*
k
+
1
]
=
i
;
right
[
2
*
k
+
1
]
=
right
[
k
];
left
[
2
*
k
]
=
left
[
k
];
...
...
@@ -463,16 +468,20 @@ void cell_split(struct cell *c) {
xparts
[
j
]
=
xtemp
;
}
}
/* for ( int kk = left[k] ; kk <= j ; kk++ )
if ( parts[kk].x[2] > pivot[2] ) {
message( "ival=[%i,%i], i=%i, j=%i." , left[k] , right[k] , i , j );
error( "sorting failed (left)." );
}
for ( int kk = i ; kk <= right[k] ; kk++ )
if ( parts[kk].x[2] < pivot[2] ) {
message( "ival=[%i,%i], i=%i, j=%i." , left[k] , right[k] , i , j );
error( "sorting failed (right)." );
} */
#ifdef SWIFT_DEBUG_CHECKS
for
(
int
kk
=
left
[
k
];
kk
<=
j
;
kk
++
)
if
(
parts
[
kk
].
x
[
2
]
>
pivot
[
2
])
{
message
(
"ival=[%i,%i], i=%i, j=%i."
,
left
[
k
],
right
[
k
],
i
,
j
);
error
(
"sorting failed (left)."
);
}
for
(
int
kk
=
i
;
kk
<=
right
[
k
];
kk
++
)
if
(
parts
[
kk
].
x
[
2
]
<
pivot
[
2
])
{
message
(
"ival=[%i,%i], i=%i, j=%i."
,
left
[
k
],
right
[
k
],
i
,
j
);
error
(
"sorting failed (right)."
);
}
#endif
left
[
2
*
k
+
1
]
=
i
;
right
[
2
*
k
+
1
]
=
right
[
k
];
left
[
2
*
k
]
=
left
[
k
];
...
...
@@ -490,32 +499,34 @@ void cell_split(struct cell *c) {
for
(
int
k
=
0
;
k
<
count
;
k
++
)
if
(
parts
[
k
].
gpart
!=
NULL
)
parts
[
k
].
gpart
->
part
=
&
parts
[
k
];
#ifdef SWIFT_DEBUG_CHECKS
/* Verify that _all_ the parts have been assigned to a cell. */
/*
for ( k = 1
; k < 8
; k++
)
if (
&c->progeny[k
-
1]->parts[
c->progeny[k
-
1]->count
] !=
c->progeny[k]->parts
)
error(
"Particle sorting failed (internal consistency)."
);
if (
c->progeny[0]->parts != c->parts
)
error(
"Particle sorting failed (left edge)."
);
if (
&c->progeny[7]->parts[
c->progeny[7]->count
] != &c->parts[
count
]
)
error(
"Particle sorting failed (right edge)."
);
*/
for
(
int
k
=
1
;
k
<
8
;
k
++
)
if
(
&
c
->
progeny
[
k
-
1
]
->
parts
[
c
->
progeny
[
k
-
1
]
->
count
]
!=
c
->
progeny
[
k
]
->
parts
)
error
(
"Particle sorting failed (internal consistency)."
);
if
(
c
->
progeny
[
0
]
->
parts
!=
c
->
parts
)
error
(
"Particle sorting failed (left edge)."
);
if
(
&
c
->
progeny
[
7
]
->
parts
[
c
->
progeny
[
7
]
->
count
]
!=
&
c
->
parts
[
count
]
)
error
(
"Particle sorting failed (right edge)."
);
/* Verify a few sub-cells. */
/* for (int k = 0 ; k < c->progeny[0]->count ; k++ )
if ( c->progeny[0]->parts[k].x[0] > pivot[0] ||
c->progeny[0]->parts[k].x[1] > pivot[1] ||
c->progeny[0]->parts[k].x[2] > pivot[2] )
error( "Sorting failed (progeny=0)." );
for (int k = 0 ; k < c->progeny[1]->count ; k++ )
if ( c->progeny[1]->parts[k].x[0] > pivot[0] ||
c->progeny[1]->parts[k].x[1] > pivot[1] ||
c->progeny[1]->parts[k].x[2] <= pivot[2] )
error( "Sorting failed (progeny=1)." );
for (int k = 0 ; k < c->progeny[2]->count ; k++ )
if ( c->progeny[2]->parts[k].x[0] > pivot[0] ||
c->progeny[2]->parts[k].x[1] <= pivot[1] ||
c->progeny[2]->parts[k].x[2] > pivot[2] )
error( "Sorting failed (progeny=2)." ); */
for
(
int
k
=
0
;
k
<
c
->
progeny
[
0
]
->
count
;
k
++
)
if
(
c
->
progeny
[
0
]
->
parts
[
k
].
x
[
0
]
>
pivot
[
0
]
||
c
->
progeny
[
0
]
->
parts
[
k
].
x
[
1
]
>
pivot
[
1
]
||
c
->
progeny
[
0
]
->
parts
[
k
].
x
[
2
]
>
pivot
[
2
])
error
(
"Sorting failed (progeny=0)."
);
for
(
int
k
=
0
;
k
<
c
->
progeny
[
1
]
->
count
;
k
++
)
if
(
c
->
progeny
[
1
]
->
parts
[
k
].
x
[
0
]
>
pivot
[
0
]
||
c
->
progeny
[
1
]
->
parts
[
k
].
x
[
1
]
>
pivot
[
1
]
||
c
->
progeny
[
1
]
->
parts
[
k
].
x
[
2
]
<=
pivot
[
2
])
error
(
"Sorting failed (progeny=1)."
);
for
(
int
k
=
0
;
k
<
c
->
progeny
[
2
]
->
count
;
k
++
)
if
(
c
->
progeny
[
2
]
->
parts
[
k
].
x
[
0
]
>
pivot
[
0
]
||
c
->
progeny
[
2
]
->
parts
[
k
].
x
[
1
]
<=
pivot
[
1
]
||
c
->
progeny
[
2
]
->
parts
[
k
].
x
[
2
]
>
pivot
[
2
])
error
(
"Sorting failed (progeny=2)."
);
#endif
/* Now do the same song and dance for the gparts. */
...
...
src/const.h
View file @
a7c8ce11
...
...
@@ -60,4 +60,7 @@
/* Gravity properties */
#define EXTERNAL_POTENTIAL_POINTMASS
/* Are we debugging ? */
//#define SWIFT_DEBUG_CHECKS
#endif
/* SWIFT_CONST_H */
src/engine.c
View file @
a7c8ce11
...
...
@@ -224,7 +224,7 @@ void engine_redistribute(struct engine *e) {
bzero
(
counts
,
sizeof
(
int
)
*
nr_nodes
*
nr_nodes
);
bzero
(
g_counts
,
sizeof
(
int
)
*
nr_nodes
*
nr_nodes
);
/
/
Allocate the destination index arrays.
/
*
Allocate the destination index arrays.
*/
int
*
dest
,
*
g_dest
;
if
((
dest
=
(
int
*
)
malloc
(
sizeof
(
int
)
*
s
->
nr_parts
))
==
NULL
)
error
(
"Failed to allocate dest temporary buffer."
);
...
...
@@ -243,9 +243,12 @@ void engine_redistribute(struct engine *e) {
}
const
int
cid
=
cell_getid
(
cdim
,
parts
[
k
].
x
[
0
]
*
ih
[
0
],
parts
[
k
].
x
[
1
]
*
ih
[
1
],
parts
[
k
].
x
[
2
]
*
ih
[
2
]);
/* if (cid < 0 || cid >= s->nr_cells)
error("Bad cell id %i for part %i at [%.3e,%.3e,%.3e].",
cid, k, parts[k].x[0], parts[k].x[1], parts[k].x[2]); */
#ifdef SWIFT_DEBUG_CHECKS
if
(
cid
<
0
||
cid
>=
s
->
nr_cells
)
error
(
"Bad cell id %i for part %zi at [%.3e,%.3e,%.3e]."
,
cid
,
k
,
parts
[
k
].
x
[
0
],
parts
[
k
].
x
[
1
],
parts
[
k
].
x
[
2
]);
#endif
dest
[
k
]
=
cells
[
cid
].
nodeID
;
/* The counts array is indexed as count[from * nr_nodes + to]. */
...
...
@@ -272,9 +275,10 @@ void engine_redistribute(struct engine *e) {
count_this_dest
=
0
;
}
/* Debug */
/* if(s->parts[k].gpart->id < 0) */
/* error("Trying to link a partnerless gpart !"); */
#ifdef SWIFT_DEBUG_CHECKS
if
(
s
->
parts
[
k
].
gpart
->
id
<
0
)
error
(
"Trying to link a partnerless gpart !"
);
#endif
s
->
parts
[
k
].
gpart
->
id
=
count_this_dest
;
count_this_dest
++
;
...
...
@@ -294,9 +298,12 @@ void engine_redistribute(struct engine *e) {
}
const
int
cid
=
cell_getid
(
cdim
,
gparts
[
k
].
x
[
0
]
*
ih
[
0
],
gparts
[
k
].
x
[
1
]
*
ih
[
1
],
gparts
[
k
].
x
[
2
]
*
ih
[
2
]);
/* if (cid < 0 || cid >= s->nr_cells)
error("Bad cell id %i for part %i at [%.3e,%.3e,%.3e].",
cid, k, g_parts[k].x[0], g_parts[k].x[1], g_parts[k].x[2]); */
#ifdef SWIFT_DEBUG_CHECKS
if
(
cid
<
0
||
cid
>=
s
->
nr_cells
)
error
(
"Bad cell id %i for part %zi at [%.3e,%.3e,%.3e]."
,
cid
,
k
,
gparts
[
k
].
x
[
0
],
gparts
[
k
].
x
[
1
],
gparts
[
k
].
x
[
2
]);
#endif
g_dest
[
k
]
=
cells
[
cid
].
nodeID
;
/* The counts array is indexed as count[from * nr_nodes + to]. */
...
...
@@ -471,36 +478,38 @@ void engine_redistribute(struct engine *e) {
offset_gparts
+=
count_gparts
;
}
#ifdef SWIFT_DEBUG_CHECKS
/* Verify that all parts are in the right place. */
/*
for (
int k = 0
; k < nr_parts
; k++
) {
int cid = cell_getid(
cdim
, parts_new[k].x[0]
*
ih[0],
parts_new[k].x[1]
*
ih[1], parts_new[k].x[2]
*
ih[2]
);
if (
cells[
cid
].nodeID != nodeID
)
error(
"Received particle (%i) that does not belong here
(nodeID=%i).", k ,
cells[
cid
].nodeID
);
}
*/
for
(
int
k
=
0
;
k
<
nr_parts
;
k
++
)
{
int
cid
=
cell_getid
(
cdim
,
parts_new
[
k
].
x
[
0
]
*
ih
[
0
],
parts_new
[
k
].
x
[
1
]
*
ih
[
1
],
parts_new
[
k
].
x
[
2
]
*
ih
[
2
]);
if
(
cells
[
cid
].
nodeID
!=
nodeID
)
error
(
"Received particle (%i) that does not belong here
(nodeID=%i)."
,
k
,
cells
[
cid
].
nodeID
);
}
/* Verify that the links are correct */
/*
for (size_t k = 0; k < nr_gparts; ++k) {
*/
for
(
size_t
k
=
0
;
k
<
nr_gparts
;
++
k
)
{
/*
if (gparts_new[k].id > 0) {
*/
if
(
gparts_new
[
k
].
id
>
0
)
{
/*
if (gparts_new[k].part->gpart != &gparts_new[k])
*/
/*
error("Linking problem !");
*/
if
(
gparts_new
[
k
].
part
->
gpart
!=
&
gparts_new
[
k
])
error
(
"Linking problem !"
);
/*
if (gparts_new[k].x[0] != gparts_new[k].part->x[0] ||
*/
/*
gparts_new[k].x[1] != gparts_new[k].part->x[1] ||
*/
/*
gparts_new[k].x[2] != gparts_new[k].part->x[2])
*/
/*
error("Linked particles are not at the same position !");
*/
/* } */
/* } */
/*
for (size_t k = 0; k < nr_parts; ++k) {
*/
if
(
gparts_new
[
k
].
x
[
0
]
!=
gparts_new
[
k
].
part
->
x
[
0
]
||
gparts_new
[
k
].
x
[
1
]
!=
gparts_new
[
k
].
part
->
x
[
1
]
||
gparts_new
[
k
].
x
[
2
]
!=
gparts_new
[
k
].
part
->
x
[
2
])
error
(
"Linked particles are not at the same position !"
);
}
}
for
(
size_t
k
=
0
;
k
<
nr_parts
;
++
k
)
{
/*
if (parts_new[k].gpart != NULL) {
*/
if
(
parts_new
[
k
].
gpart
!=
NULL
)
{
/* if (parts_new[k].gpart->part != &parts_new[k]) error("Linking problem !"); */
/* } */
/* } */
if
(
parts_new
[
k
].
gpart
->
part
!=
&
parts_new
[
k
])
error
(
"Linking problem !"
);
}
}
#endif
/* Set the new part data, free the old. */
free
(
parts
);
...
...
@@ -717,8 +726,7 @@ void engine_exchange_cells(struct engine *e) {
MPI_Status
status
;
ticks
tic
=
getticks
();
/* Run through the cells and get the size of the ones that will be sent off.
*/
/* Run through the cells and get the size of the ones that will be sent */
int
count_out
=
0
;
for
(
int
k
=
0
;
k
<
nr_cells
;
k
++
)
{
offset
[
k
]
=
count_out
;
...
...
@@ -2445,26 +2453,29 @@ void engine_split(struct engine *e, struct partition *initial_partition) {
for
(
size_t
k
=
0
;
k
<
s
->
nr_gparts
;
k
++
)
if
(
s
->
gparts
[
k
].
id
>
0
)
s
->
gparts
[
k
].
part
->
gpart
=
&
s
->
gparts
[
k
];
#ifdef SWIFT_DEBUG_CHECKS
/* Verify that the links are correct */
/*
for (size_t k = 0; k < s->nr_gparts; ++k) {
*/
for
(
size_t
k
=
0
;
k
<
s
->
nr_gparts
;
++
k
)
{
/*
if (s->gparts[k].id > 0) {
*/
if
(
s
->
gparts
[
k
].
id
>
0
)
{
/*
if (s->gparts[k].part->gpart != &s->gparts[k]) error("Linking problem !");
*/
if
(
s
->
gparts
[
k
].
part
->
gpart
!=
&
s
->
gparts
[
k
])
error
(
"Linking problem !"
);
/*
if (s->gparts[k].x[0] != s->gparts[k].part->x[0] ||
*/
/*
s->gparts[k].x[1] != s->gparts[k].part->x[1] ||
*/
/*
s->gparts[k].x[2] != s->gparts[k].part->x[2])
*/
/*
error("Linked particles are not at the same position !");
*/
/* } */
/* } */
/*
for (size_t k = 0; k < s->nr_parts; ++k) {
*/
if
(
s
->
gparts
[
k
].
x
[
0
]
!=
s
->
gparts
[
k
].
part
->
x
[
0
]
||
s
->
gparts
[
k
].
x
[
1
]
!=
s
->
gparts
[
k
].
part
->
x
[
1
]
||
s
->
gparts
[
k
].
x
[
2
]
!=
s
->
gparts
[
k
].
part
->
x
[
2
])
error
(
"Linked particles are not at the same position !"
);
}
}
for
(
size_t
k
=
0
;
k
<
s
->
nr_parts
;
++
k
)
{
/* if (s->parts[k].gpart != NULL) { */
if
(
s
->
parts
[
k
].
gpart
!=
NULL
)
{
if
(
s
->
parts
[
k
].
gpart
->
part
!=
&
s
->
parts
[
k
])
error
(
"Linking problem !"
);
}
}
/* if (s->parts[k].gpart->part != &s->parts[k]) error("Linking problem !"); */
/* } */
/* } */
#endif
#else
error
(
"SWIFT was not compiled with MPI support."
);
...
...
@@ -2483,7 +2494,7 @@ void engine_dump_snapshot(struct engine *e) {
if
(
e
->
verbose
)
message
(
"writing snapshot at t=%f."
,
e
->
time
);
/* Dump... */
/* Dump... */
#if defined(WITH_MPI)
#if defined(HAVE_PARALLEL_HDF5)
write_output_parallel
(
e
,
e
->
snapshotBaseName
,
e
->
snapshotUnits
,
e
->
nodeID
,
...
...
src/runner.c
View file @
a7c8ce11
...
...
@@ -346,18 +346,18 @@ void runner_do_sort(struct runner *r, struct cell *c, int flags, int clock) {
}
}
#ifdef SWIFT_DEBUG_CHECKS
/* Verify the sorting. */
/* for ( j = 0 ; j < 13 ; j++ ) {
if ( !( flags & (1 << j) ) )
continue;
finger = &sort[ j*(count + 1) ];
for ( k = 1 ; k < count ; k++ ) {
if ( finger[k].d < finger[k-1].d )
error( "Sorting failed, ascending array." );
if ( finger[k].i >= count )
error( "Sorting failed, indices borked." );
}
} */
for
(
j
=
0
;
j
<
13
;
j
++
)
{
if
(
!
(
flags
&
(
1
<<
j
)))
continue
;
finger
=
&
sort
[
j
*
(
count
+
1
)];
for
(
k
=
1
;
k
<
count
;
k
++
)
{
if
(
finger
[
k
].
d
<
finger
[
k
-
1
].
d
)
error
(
"Sorting failed, ascending array."
);
if
(
finger
[
k
].
i
>=
count
)
error
(
"Sorting failed, indices borked."
);
}
}
#endif
if
(
clock
)
TIMER_TOC
(
timer_dosort
);
}
...
...
src/scheduler.c
View file @
a7c8ce11
...
...
@@ -685,10 +685,12 @@ void scheduler_ranktasks(struct scheduler *s) {
left
=
j
;
}
#ifdef SWIFT_DEBUG_CHECKS
/* Verify that the tasks were ranked correctly. */
/* for ( k = 1 ; k < s->nr_tasks ; k++ )
if ( tasks[ tid[k-1] ].rank > tasks[ tid[k-1] ].rank )
error( "Task ranking failed." ); */
for
(
int
k
=
1
;
k
<
s
->
nr_tasks
;
k
++
)
if
(
tasks
[
tid
[
k
-
1
]].
rank
>
tasks
[
tid
[
k
-
1
]].
rank
)
error
(
"Task ranking failed."
);
#endif
}
/**
...
...
src/space.c
View file @
a7c8ce11
...
...
@@ -431,6 +431,7 @@ void space_rebuild(struct space *s, double cell_max, int verbose) {
// clocks_from_ticks(getticks() - tic), clocks_getunit());
#ifdef WITH_MPI
/* Move non-local parts to the end of the list. */
const
int
local_nodeID
=
s
->
e
->
nodeID
;
for
(
size_t
k
=
0
;
k
<
nr_parts
;)
{
...
...
@@ -458,8 +459,9 @@ void space_rebuild(struct space *s, double cell_max, int verbose) {
}
}
#ifdef SWIFT_DEBUG_CHECKS
/* Check that all parts are in the correct places. */
/*
for (size_t k = 0; k < nr_parts; k++) {
for
(
size_t
k
=
0
;
k
<
nr_parts
;
k
++
)
{
if
(
cells
[
ind
[
k
]].
nodeID
!=
local_nodeID
)
{
error
(
"Failed to move all non-local parts to send list"
);
}
...
...
@@ -468,7 +470,8 @@ void space_rebuild(struct space *s, double cell_max, int verbose) {
if
(
cells
[
ind
[
k
]].
nodeID
==
local_nodeID
)
{
error
(
"Failed to remove local parts from send list"
);
}
}*/
}
#endif
/* Move non-local gparts to the end of the list. */
for
(
int
k
=
0
;
k
<
nr_gparts
;)
{
...
...
@@ -493,8 +496,8 @@ void space_rebuild(struct space *s, double cell_max, int verbose) {
}
}
#ifdef SWIFT_DEBUG_CHECKS
/* Check that all gparts are in the correct place (untested). */
/*
for
(
size_t
k
=
0
;
k
<
nr_gparts
;
k
++
)
{
if
(
cells
[
gind
[
k
]].
nodeID
!=
local_nodeID
)
{
error
(
"Failed to move all non-local gparts to send list"
);
...
...
@@ -504,7 +507,8 @@ void space_rebuild(struct space *s, double cell_max, int verbose) {
if
(
cells
[
gind
[
k
]].
nodeID
==
local_nodeID
)
{
error
(
"Failed to remove local gparts from send list"
);
}
}*/
}
#endif
/* Exchange the strays, note that this potentially re-allocates
the parts arrays. */
...
...
@@ -533,12 +537,15 @@ void space_rebuild(struct space *s, double cell_max, int verbose) {
ind
[
k
]
=
cell_getid
(
cdim
,
p
->
x
[
0
]
*
ih
[
0
],
p
->
x
[
1
]
*
ih
[
1
],
p
->
x
[
2
]
*
ih
[
2
]);
cells
[
ind
[
k
]].
count
+=
1
;
/* if ( cells[ ind[k] ].nodeID != nodeID )
error( "Received part that does not belong to me (nodeID=%i)." , cells[
ind[k] ].nodeID ); */
#ifdef SWIFT_DEBUG_CHECKS
if
(
cells
[
ind
[
k
]].
nodeID
!=
local_nodeID
)
error
(
"Received part that does not belong to me (nodeID=%i)."
,
cells
[
ind
[
k
]].
nodeID
);
#endif
}
nr_parts
=
s
->
nr_parts
;
#endif
#endif
/* WITH_MPI */
/* Sort the parts according to their cells. */
space_parts_sort
(
s
,
ind
,
nr_parts
,
0
,
s
->
nr_cells
-
1
,
verbose
);
...
...
@@ -547,15 +554,18 @@ void space_rebuild(struct space *s, double cell_max, int verbose) {
for
(
size_t
k
=
0
;
k
<
nr_parts
;
k
++
)
if
(
s
->
parts
[
k
].
gpart
!=
NULL
)
s
->
parts
[
k
].
gpart
->
part
=
&
s
->
parts
[
k
];
#ifdef SWIFT_DEBUG_CHECKS
/* Verify space_sort_struct. */
/* for ( k = 1 ; k < nr_parts ; k++ ) {
if ( ind[k-1] > ind[k] ) {
error( "Sort failed!" );
}
else if ( ind[k] != cell_getid( cdim , parts[k].x[0]*ih[0] ,
parts[k].x[1]*ih[1] , parts[k].x[2]*ih[2] ) )
error( "Incorrect indices!" );
} */
for
(
size_t
k
=
1
;
k
<
nr_parts
;
k
++
)
{
if
(
ind
[
k
-
1
]
>
ind
[
k
])
{
error
(
"Sort failed!"
);
}
else
if
(
ind
[
k
]
!=
cell_getid
(
cdim
,
s
->
parts
[
k
].
x
[
0
]
*
ih
[
0
],
s
->
parts
[
k
].
x
[
1
]
*
ih
[
1
],
s
->
parts
[
k
].
x
[
2
]
*
ih
[
2
]))
{
error
(
"Incorrect indices!"
);
}
}
#endif
/* We no longer need the indices as of here. */
free
(
ind
);
...
...
@@ -596,26 +606,28 @@ void space_rebuild(struct space *s, double cell_max, int verbose) {
/* We no longer need the indices as of here. */
free
(
gind
);
#ifdef SWIFT_DEBUG_CHECKS
/* Verify that the links are correct */
/*
for (size_t k = 0; k < nr_gparts; ++k) {
*/
for
(
size_t
k
=
0
;
k
<
nr_gparts
;
++
k
)
{
/*
if (s->gparts[k].id > 0) {
*/
if
(
s
->
gparts
[
k
].
id
>
0
)
{
/*
if (s->gparts[k].part->gpart != &s->gparts[k]) error("Linking problem !");
*/
if
(
s
->
gparts
[
k
].
part
->
gpart
!=
&
s
->
gparts
[
k
])
error
(
"Linking problem !"
);
/*
if (s->gparts[k].x[0] != s->gparts[k].part->x[0] ||
*/
/*
s->gparts[k].x[1] != s->gparts[k].part->x[1] ||
*/
/*
s->gparts[k].x[2] != s->gparts[k].part->x[2])
*/
/*
error("Linked particles are not at the same position !");
*/
/* } */
/* } */
/*
for (size_t k = 0; k < nr_parts; ++k) {
*/
if
(
s
->
gparts
[
k
].
x
[
0
]
!=
s
->
gparts
[
k
].
part
->
x
[
0
]
||
s
->
gparts
[
k
].
x
[
1
]
!=
s
->
gparts
[
k
].
part
->
x
[
1
]
||
s
->
gparts
[
k
].
x
[
2
]
!=
s
->
gparts
[
k
].
part
->
x
[
2
])
error
(
"Linked particles are not at the same position !"
);
}
}
for
(
size_t
k
=
0
;
k
<
nr_parts
;
++
k
)
{
/*
if (s->parts[k].gpart != NULL) {
*/
if
(
s
->
parts
[
k
].
gpart
!=
NULL
)
{
/* if (s->parts[k].gpart->part != &s->parts[k]) error("Linking problem !"); */
/* } */
/* } */
if
(
s
->
parts
[
k
].
gpart
->
part
!=
&
s
->
parts
[
k
])
error
(
"Linking problem !"
);
}
}
#endif
/* Hook the cells up to the parts. */
// tic = getticks();
...
...
@@ -705,13 +717,14 @@ void space_parts_sort(struct space *s, int *ind, size_t N, int min, int max,
/* Launch the sorting tasks. */
engine_launch
(
s
->
e
,
s
->
e
->
nr_threads
,
(
1
<<
task_type_part_sort
),
0
);
#ifdef SWIFT_DEBUG_CHECKS
/* Verify space_sort_struct. */
/*
for (int i = 1; i < N; i++)
for
(
int
i
=
1
;
i
<
N
;
i
++
)
if
(
ind
[
i
-
1
]
>
ind
[
i
])
error
(
"Sorting failed (ind[%i]=%i,ind[%i]=%i), min=%i, max=%i."
,
i
-
1
,
ind[i - 1], i,
ind[i], min, max
);
message("Sorting succeeded."); */
ind
[
i
-
1
],
i
,
ind
[
i
],
min
,
max
);
message
(
"Sorting succeeded."
);
#endif
/* Clean up. */
free
(
space_sort_struct
.
stack
);
...
...
@@ -773,19 +786,21 @@ void space_do_parts_sort() {
}
}
#ifdef SWIFT_DEBUG_CHECKS
/* Verify space_sort_struct. */
/*
for (int k = i; k <= jj; k++)
for
(
int
k
=
i
;
k
<=
jj
;
k
++
)
if
(
ind
[
k
]
>
pivot
)
{
message("sorting failed at k=%i, ind[k]=%i, pivot=%i, i=%i, j=%i.",
k,
ind[k], pivot, i, j);
message
(
"sorting failed at k=%i, ind[k]=%i, pivot=%i, i=%
l
i, j=%
l
i."
,
k
,
ind
[
k
],
pivot
,
i
,
j
);
error
(
"Partition failed (<=pivot)."
);
}
for
(
int
k
=
jj
+
1
;
k
<=
j
;
k
++
)
if
(
ind
[
k
]
<=
pivot
)
{
message("sorting failed at k=%i, ind[k]=%i, pivot=%i, i=%i, j=%i.",
k,
ind[k], pivot, i, j);
message
(
"sorting failed at k=%i, ind[k]=%i, pivot=%i, i=%
l
i, j=%
l
i."
,
k
,
ind
[
k
],
pivot
,
i
,
j
);
error
(
"Partition failed (>pivot)."
);
} */
}
#endif
/* Split-off largest interval. */
if
(
jj
-
i
>
j
-
jj
+
1
)
{
...
...
@@ -885,13 +900,14 @@ void space_gparts_sort(struct space *s, int *ind, size_t N, int min, int max,
/* Launch the sorting tasks. */
engine_launch
(
s
->
e
,
s
->
e
->
nr_threads
,
(
1
<<
task_type_gpart_sort
),
0
);
#ifdef SWIFT_DEBUG_CHECKS
/* Verify space_sort_struct. */
/*
for (int i = 1; i < N; i++)
for
(
int
i
=
1
;
i
<
N
;
i
++
)
if
(
ind
[
i
-
1
]
>
ind
[
i
])
error
(
"Sorting failed (ind[%i]=%i,ind[%i]=%i), min=%i, max=%i."
,
i
-
1
,
ind[i - 1], i,
ind[i], min, max
);
message("Sorting succeeded."); */
ind
[
i
-
1
],
i
,
ind
[
i
],
min
,
max
);
message
(
"Sorting succeeded."
);
#endif
/* Clean up. */
free
(
space_sort_struct
.
stack
);
...
...
@@ -949,19 +965,21 @@ void space_do_gparts_sort() {
}
}
#ifdef SWIFT_DEBUG_CHECKS
/* Verify space_sort_struct. */
/*
for (int k = i; k <= jj; k++)
for
(
int
k
=
i
;
k
<=
jj
;
k
++
)
if
(
ind
[
k
]
>
pivot
)
{
message("sorting failed at k=%i, ind[k]=%i, pivot=%i, i=%i, j=%i.",
k,
ind[k], pivot, i, j);
message
(
"sorting failed at k=%i, ind[k]=%i, pivot=%i, i=%
l
i, j=%
l
i."
,
k
,
ind
[
k
],
pivot
,
i
,
j
);
error
(
"Partition failed (<=pivot)."
);
}
for
(
int
k
=
jj
+
1
;
k
<=
j
;
k
++
)
if
(
ind
[
k
]
<=
pivot
)
{
message("sorting failed at k=%i, ind[k]=%i, pivot=%i, i=%i, j=%i.",
k,
ind[k], pivot, i, j);
message
(
"sorting failed at k=%i, ind[k]=%i, pivot=%i, i=%
l
i, j=%
l
i."
,
k
,
ind
[
k
],
pivot
,
i
,
j
);
error
(
"Partition failed (>pivot)."
);
} */
}
#endif
/* Split-off largest interval. */
if
(
jj
-
i
>
j
-
jj
+
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