Commit 7c2c2cc0 authored by Matthieu Schaller's avatar Matthieu Schaller
Browse files

Drift task now scheduled correctly

parent 456d9fad
......@@ -879,14 +879,8 @@ int cell_unskip_tasks(struct cell *c, struct scheduler *s) {
}
/* Activate the drift on both sides */
if (t->type == task_type_pair || t->type == task_type_sub_pair) {
if (ci->drift != NULL) scheduler_activate(s, ci->drift);
if (cj->drift != NULL) scheduler_activate(s, cj->drift);
}
if (t->type == task_type_self || t->type == task_type_sub_self) {
if (ci->drift != NULL) scheduler_activate(s, ci->drift);
}
if (ci == c && cj != NULL) scheduler_activate(s, cj->drift);
if (cj == c && ci != NULL) scheduler_activate(s, ci->drift);
/* Check whether there was too much particle motion */
if (t->type == task_type_pair || t->type == task_type_sub_pair) {
......
......@@ -139,9 +139,6 @@ void engine_make_hierarchical_tasks(struct engine *e, struct cell *c) {
c->init = scheduler_addtask(s, task_type_init, task_subtype_none, 0, 0, c,
NULL, 0);
/* c->drift = scheduler_addtask(s, task_type_drift, task_subtype_none, 0, 0, */
/* c, NULL, 0); */
c->kick = scheduler_addtask(s, task_type_kick, task_subtype_none, 0, 0, c,
NULL, 0);
......@@ -1993,7 +1990,7 @@ void engine_marktasks_mapper(void *map_data, int num_elements,
const struct cell *ci = t->ci;
/* Activate the drift */
if(ci->drift) scheduler_activate(s, ci->drift);
if (ci->drift) scheduler_activate(s, ci->drift);
}
/* Pair? */
......@@ -2004,8 +2001,8 @@ void engine_marktasks_mapper(void *map_data, int num_elements,
const struct cell *cj = t->cj;
/* Activate the drift on both sides */
if(ci->drift) scheduler_activate(s, ci->drift);
if(cj->drift) scheduler_activate(s, cj->drift);
if (ci->drift) scheduler_activate(s, ci->drift);
if (cj->drift) scheduler_activate(s, cj->drift);
/* Too much particle movement? */
if (t->tight &&
......
......@@ -1127,7 +1127,8 @@ void *runner_main(void *data) {
/* Check that we haven't scheduled an inactive task */
#ifdef SWIFT_DEBUG_CHECKS
if (cj == NULL) { /* self */
if (!cell_is_active(ci, e) && t->type != task_type_sort && t->type != task_type_drift)
if (!cell_is_active(ci, e) && t->type != task_type_sort &&
t->type != task_type_drift)
error(
"Task (type='%s/%s') should have been skipped ti_current=%d "
"c->ti_end_min=%d",
......@@ -1144,8 +1145,9 @@ void *runner_main(void *data) {
ci->ti_end_min, t->flags);
/* Special treatement for drifts */
if (!cell_is_active(ci, e) && t->type == task_type_drift)
{;}
if (!cell_is_active(ci, e) && t->type == task_type_drift) {
;
}
} else { /* pair */
if (!cell_is_active(ci, e) && !cell_is_active(cj, e))
......@@ -1237,7 +1239,7 @@ void *runner_main(void *data) {
break;
#endif
case task_type_drift:
// runner_do_drift(r, ci, 1);
runner_do_drift(r, ci, 1);
break;
case task_type_kick:
runner_do_kick(r, ci, 1);
......
......@@ -625,8 +625,6 @@ static void scheduler_splittask(struct task *t, struct scheduler *s) {
}
lock_unlock_blind(&ci->lock);
/* Create the sort for cj. */
lock_lock(&cj->lock);
if (cj->sorts == NULL)
......@@ -803,7 +801,8 @@ void scheduler_set_unlocks(struct scheduler *s) {
if (t->unlock_tasks[i] == t->unlock_tasks[j])
error("duplicate unlock! t->type=%s/%s unlocking type=%s/%s",
taskID_names[t->type], subtaskID_names[t->subtype],
taskID_names[t->unlock_tasks[i]->type], subtaskID_names[t->unlock_tasks[i]->subtype]);
taskID_names[t->unlock_tasks[i]->type],
subtaskID_names[t->unlock_tasks[i]->subtype]);
}
}
}
......@@ -1104,8 +1103,9 @@ void scheduler_start(struct scheduler *s) {
/* Special treatement for drifts */
if (ci->ti_end_min == ti_current && t->skip &&
t->type == task_type_drift)
{;}
t->type == task_type_drift) {
;
}
} else { /* pair */
......
......@@ -409,6 +409,7 @@ void space_regrid(struct space *s, int verbose) {
s->cells_top[k].extra_ghost = NULL;
s->cells_top[k].ghost = NULL;
s->cells_top[k].kick = NULL;
s->cells_top[k].drift = NULL;
s->cells_top[k].cooling = NULL;
s->cells_top[k].sourceterms = NULL;
s->cells_top[k].super = &s->cells_top[k];
......
......@@ -49,9 +49,9 @@
/* Task type names. */
const char *taskID_names[task_type_count] = {
"none", "sort", "self", "pair", "sub_self",
"sub_pair", "init", "ghost", "extra_ghost", "drift", "kick",
"send", "recv", "grav_gather_m", "grav_fft", "grav_mm",
"grav_up", "cooling", "sourceterms"};
"sub_pair", "init", "ghost", "extra_ghost", "drift",
"kick", "send", "recv", "grav_gather_m", "grav_fft",
"grav_mm", "grav_up", "cooling", "sourceterms"};
const char *subtaskID_names[task_subtype_count] = {
"none", "density", "gradient", "force", "grav", "external_grav", "tend"};
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment