diff --git a/examples/main.c b/examples/main.c index af079d46d3b56ffc2145468deb64d612cf6ce1f7..302abb3935764a4e4c114e6678b398a11ca60b0b 100644 --- a/examples/main.c +++ b/examples/main.c @@ -1023,9 +1023,6 @@ int main(int argc, char *argv[]) { engine_dump_snapshot(&e); engine_print_stats(&e); - /* Perform first FOF search after the first snapshot dump. */ - if (e.policy & engine_policy_fof) fof_search_tree(&s); - /* Is there a dump before the end of the first time-step? */ engine_check_for_dumps(&e); diff --git a/src/engine.c b/src/engine.c index b126c00d780599d3022d2853f5ae9a6ae4705cfa..fb54f7251ac19571d528c6bca37891a144dfd83e 100644 --- a/src/engine.c +++ b/src/engine.c @@ -3263,6 +3263,26 @@ void engine_step(struct engine *e) { error("Obtained a time-step of size 0"); #endif + /* Perform FOF search to seed black holes. */ + if (e->policy & engine_policy_fof && !(e->step % 10)) { + + fof_init(e->s); + + struct scheduler *s = &e->sched; + + for(int i=0; i<s->nr_tasks; i++) { + + struct task *t = &s->tasks[i]; + + if (t->type == task_type_fof_self || t->type == task_type_fof_pair) scheduler_activate(s, t); + else t->skip = 1; + } + + engine_launch(e); + + fof_search_tree(e->s); + } + /********************************************************/ /* OK, we are done with the regular stuff. Time for i/o */ /********************************************************/ diff --git a/src/engine_marktasks.c b/src/engine_marktasks.c index 20290ce235e7abe7ee744b199bd8a9b8b8bed762..1f622d6d245a559cedbc9da0b37f2a8c81091882 100644 --- a/src/engine_marktasks.c +++ b/src/engine_marktasks.c @@ -671,7 +671,7 @@ void engine_marktasks_mapper(void *map_data, int num_elements, /* FOF tasks. */ else if (t_type == task_type_fof_self || t_type == task_type_fof_pair) { - scheduler_activate(s, t); + //scheduler_activate(s, t); } } }