Skip to content
GitLab
Menu
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
c6af1fa8
Commit
c6af1fa8
authored
Jan 19, 2017
by
Matthieu Schaller
Browse files
Check that all particles and cells have a time-step assigned at the end of the initialisation step.
parent
968e0a75
Changes
5
Hide whitespace changes
Inline
Side-by-side
src/cell.c
View file @
c6af1fa8
...
...
@@ -1293,3 +1293,26 @@ void cell_drift(struct cell *c, const struct engine *e) {
/* Update the time of the last drift */
c
->
ti_old
=
ti_current
;
}
/**
* @brief Recursively checks that all particles in a cell have a time-step
*/
void
cell_check_timesteps
(
struct
cell
*
c
)
{
#ifdef SWIFT_DEBUG_CHECKS
if
(
c
->
nodeID
!=
engine_rank
)
return
;
if
(
c
->
ti_end_min
==
0
)
error
(
"Cell without assigned time-step"
);
if
(
c
->
split
)
{
for
(
int
k
=
0
;
k
<
8
;
++
k
)
if
(
c
->
progeny
[
k
]
!=
NULL
)
cell_check_timesteps
(
c
->
progeny
[
k
]);
}
else
{
for
(
int
i
=
0
;
i
<
c
->
count
;
++
i
)
if
(
c
->
parts
[
i
].
time_bin
==
0
)
error
(
"Particle without assigned time-bin"
);
}
#endif
}
src/cell.h
View file @
c6af1fa8
...
...
@@ -330,5 +330,6 @@ int cell_is_drift_needed(struct cell *c, const struct engine *e);
int
cell_unskip_tasks
(
struct
cell
*
c
,
struct
scheduler
*
s
);
void
cell_set_super
(
struct
cell
*
c
,
struct
cell
*
super
);
void
cell_drift
(
struct
cell
*
c
,
const
struct
engine
*
e
);
void
cell_check_timesteps
(
struct
cell
*
c
);
#endif
/* SWIFT_CELL_H */
src/engine.c
View file @
c6af1fa8
...
...
@@ -2648,6 +2648,10 @@ void engine_init_particles(struct engine *e, int flag_entropy_ICs) {
clocks_gettime
(
&
time2
);
#ifdef SWIFT_DEBUG_CHECKS
space_check_timesteps
(
e
->
s
);
#endif
/* Ready to go */
e
->
step
=
-
1
;
e
->
forcerebuild
=
1
;
...
...
src/space.c
View file @
c6af1fa8
...
...
@@ -2392,6 +2392,19 @@ void space_check_drift_point(struct space *s, integertime_t ti_current) {
space_map_cells_pre
(
s
,
1
,
cell_check_drift_point
,
&
ti_current
);
}
/**
* @brief Checks that all particles and local cells have a non-zero time-step.
*/
void
space_check_timesteps
(
struct
space
*
s
)
{
#ifdef SWIFT_DEBUG_CHECKS
for
(
int
i
=
0
;
i
<
s
->
nr_cells
;
++
i
)
{
cell_check_timesteps
(
&
s
->
cells_top
[
i
]);
}
#endif
}
/**
* @brief Frees up the memory allocated for this #space
*/
...
...
src/space.h
View file @
c6af1fa8
...
...
@@ -201,6 +201,8 @@ void space_init_gparts(struct space *s);
void
space_init_sparts
(
struct
space
*
s
);
void
space_link_cleanup
(
struct
space
*
s
);
void
space_check_drift_point
(
struct
space
*
s
,
integertime_t
ti_current
);
void
space_check_timesteps
(
struct
space
*
s
);
void
space_clean
(
struct
space
*
s
);
#endif
/* SWIFT_SPACE_H */
Write
Preview
Supports
Markdown
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