diff --git a/src/cell.c b/src/cell.c index 23a444030dbbc71b34f060e9ca098b0e854b3652..be593c7da438c2ed55ff180404b04a4dab03aee9 100644 --- a/src/cell.c +++ b/src/cell.c @@ -3052,11 +3052,8 @@ int cell_unskip_hydro_tasks(struct cell *c, struct scheduler *s) { const int with_limiter = (e->policy & engine_policy_limiter); #ifdef WITH_MPI - const int with_star_formation = e->policy & engine_policy_star_formation; - const int with_feedback = e->policy & engine_policy_feedback; - #endif int rebuild = 0; @@ -3171,21 +3168,14 @@ int cell_unskip_hydro_tasks(struct cell *c, struct scheduler *s) { ci_nodeID); /* Propagating new star counts? */ - if (with_star_formation && with_feedback) { - if (ci_active && ci->hydro.count > 0) { - scheduler_activate_recv(s, ci->mpi.recv, task_subtype_sf_counts); - scheduler_activate_recv(s, ci->mpi.recv, task_subtype_tend_spart); } - if (cj_active && cj->hydro.count > 0) { - scheduler_activate_send(s, cj->mpi.send, task_subtype_sf_counts, ci_nodeID); - scheduler_activate_send(s, cj->mpi.send, task_subtype_tend_spart, ci_nodeID); } @@ -3243,21 +3233,14 @@ int cell_unskip_hydro_tasks(struct cell *c, struct scheduler *s) { cj_nodeID); /* Propagating new star counts? */ - if (with_star_formation && with_feedback) { - if (cj_active && cj->hydro.count > 0) { - scheduler_activate_recv(s, cj->mpi.recv, task_subtype_sf_counts); - scheduler_activate_recv(s, cj->mpi.recv, task_subtype_tend_spart); } - if (ci_active && ci->hydro.count > 0) { - scheduler_activate_send(s, ci->mpi.send, task_subtype_sf_counts, cj_nodeID); - scheduler_activate_send(s, ci->mpi.send, task_subtype_tend_spart, cj_nodeID); } diff --git a/src/runner.c b/src/runner.c index 4dd6edd21987ca7f2ad869112ea17205b04d876f..84201536891c40b3fba91742035865e4dc18b142 100644 --- a/src/runner.c +++ b/src/runner.c @@ -4173,6 +4173,8 @@ void *runner_main(void *data) { free(t->buff); } else if (t->subtype == task_subtype_tend_spart) { free(t->buff); + } else if (t->subtype == task_subtype_tend_bpart) { + free(t->buff); } else if (t->subtype == task_subtype_sf_counts) { free(t->buff); } diff --git a/src/space.c b/src/space.c index 9574bdbe57f0c07062dc892a7ae3630a77c975e0..651f4c044ef864f4f5d8f9277c16f0d249514e73 100644 --- a/src/space.c +++ b/src/space.c @@ -569,6 +569,8 @@ void space_regrid(struct space *s, int verbose) { error("Failed to init spinlock for multipoles."); if (lock_init(&s->cells_top[k].stars.lock) != 0) error("Failed to init spinlock for stars."); + if (lock_init(&s->cells_top[k].black_holes.lock) != 0) + error("Failed to init spinlock for black holes."); if (lock_init(&s->cells_top[k].stars.star_formation_lock) != 0) error("Failed to init spinlock for star formation."); } @@ -3349,6 +3351,7 @@ void space_split_recursive(struct space *s, struct cell *c, /* Update the cell-wide properties */ h_max = max(h_max, cp->hydro.h_max); stars_h_max = max(stars_h_max, cp->stars.h_max); + black_holes_h_max = max(black_holes_h_max, cp->black_holes.h_max); ti_hydro_end_min = min(ti_hydro_end_min, cp->hydro.ti_end_min); ti_hydro_end_max = max(ti_hydro_end_max, cp->hydro.ti_end_max); ti_hydro_beg_max = max(ti_hydro_beg_max, cp->hydro.ti_beg_max); @@ -3699,8 +3702,9 @@ void space_split_mapper(void *map_data, int num_cells, void *extra_data) { void space_recycle(struct space *s, struct cell *c) { /* Clear the cell. */ - if (lock_destroy(&c->lock) != 0 || lock_destroy(&c->grav.plock) != 0 || - lock_destroy(&c->mlock) != 0 || lock_destroy(&c->stars.lock) != 0 || + if (lock_destroy(&c->hydro.lock) != 0 || lock_destroy(&c->grav.plock) != 0 || + lock_destroy(&c->grav.mlock) != 0 || lock_destroy(&c->stars.lock) != 0 || + lock_destroy(&c->black_holes.lock) != 0 || lock_destroy(&c->stars.star_formation_lock)) error("Failed to destroy spinlocks."); @@ -3749,8 +3753,11 @@ void space_recycle_list(struct space *s, struct cell *cell_list_begin, /* Clean up the list of cells. */ for (struct cell *c = cell_list_begin; c != NULL; c = c->next) { /* Clear the cell. */ - if (lock_destroy(&c->lock) != 0 || lock_destroy(&c->grav.plock) != 0 || - lock_destroy(&c->mlock) != 0 || lock_destroy(&c->stars.lock) != 0 || + if (lock_destroy(&c->hydro.lock) != 0 || + lock_destroy(&c->grav.plock) != 0 || + lock_destroy(&c->grav.mlock) != 0 || + lock_destroy(&c->stars.lock) != 0 || + lock_destroy(&c->black_holes.lock) != 0 || lock_destroy(&c->stars.star_formation_lock)) error("Failed to destroy spinlocks."); @@ -3851,6 +3858,7 @@ void space_getcells(struct space *s, int nr_cells, struct cell **cells) { lock_init(&cells[j]->grav.plock) != 0 || lock_init(&cells[j]->grav.mlock) != 0 || lock_init(&cells[j]->stars.lock) != 0 || + lock_init(&cells[j]->black_holes.lock) != 0 || lock_init(&cells[j]->stars.star_formation_lock) != 0) error("Failed to initialize cell spinlocks."); }