From f846ad2898f8c14a79f277519f5169851cd5352c Mon Sep 17 00:00:00 2001 From: James Willis <james.s.willis@durham.ac.uk> Date: Fri, 12 Apr 2019 19:15:52 +0100 Subject: [PATCH] Only run FOF every N steps. --- examples/main.c | 3 --- src/engine.c | 20 ++++++++++++++++++++ src/engine_marktasks.c | 2 +- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/examples/main.c b/examples/main.c index af079d46d3..302abb3935 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 b126c00d78..fb54f7251a 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 20290ce235..1f622d6d24 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); } } } -- GitLab