diff --git a/src/engine.c b/src/engine.c index 229a3011ae5caf27dad4529df8702dc3f75c5ee0..afbefca78732c53f3aecb66691767fe8fd5c4142 100644 --- a/src/engine.c +++ b/src/engine.c @@ -55,9 +55,10 @@ #include "part.h" #include "timers.h" -const char *engine_policy_names[10] = {"none", "rand", "steal", - "keep", "block", "fix_dt", - "cpu_tight", "mpi", "numa_affinity"}; +const char *engine_policy_names[12] = { + "none", "rand", "steal", "keep", + "block", "fix_dt", "cpu_tight", "mpi", + "numa_affinity", "hydro", "self_gravity", "external_gravity"}; /** The rank of the engine as a global variable (for messages). */ int engine_rank; @@ -1326,7 +1327,7 @@ int engine_marktasks(struct engine *e) { // ticks tic = getticks(); /* Much less to do here if we're on a fixed time-step. */ - if (e->policy & engine_policy_fixdt) { + if ((e->policy & engine_policy_fixdt) == engine_policy_fixdt) { /* Run through the tasks and mark as skip or not. */ for (k = 0; k < nr_tasks; k++) { @@ -2060,7 +2061,7 @@ void engine_init(struct engine *e, struct space *s, float dt, int nr_threads, int nr_cores = sysconf(_SC_NPROCESSORS_ONLN); int j, cpuid[nr_cores]; cpu_set_t cpuset; - if (policy & engine_policy_cputight) { + if ((policy & engine_policy_cputight) == engine_policy_cputight) { for (k = 0; k < nr_cores; k++) cpuid[k] = k; } else { /* Get next highest power of 2. */ @@ -2166,7 +2167,7 @@ void engine_init(struct engine *e, struct space *s, float dt, int nr_threads, engine_print_policy(e); /* Deal with timestep */ - if (e->policy & engine_policy_fixdt) { + if ((e->policy & engine_policy_fixdt) == engine_policy_fixdt) { e->dt_min = e->dt_max; } @@ -2211,7 +2212,7 @@ void engine_init(struct engine *e, struct space *s, float dt, int nr_threads, if (pthread_create(&e->runners[k].thread, NULL, &runner_main, &e->runners[k]) != 0) error("Failed to create runner thread."); - if (e->policy & engine_policy_setaffinity) { + if ((e->policy & engine_policy_setaffinity) == engine_policy_setaffinity) { #if defined(HAVE_SETAFFINITY) /* Set a reasonable queue ID. */ diff --git a/src/engine.h b/src/engine.h index 4cc1d5079867a8e7493692e6610fc21156494e09..4540a737d39c37133ea515bfbace78143b4ed1d3 100644 --- a/src/engine.h +++ b/src/engine.h @@ -41,14 +41,17 @@ /* Some constants. */ enum engine_policy { engine_policy_none = 0, - engine_policy_rand = 1, - engine_policy_steal = 2, - engine_policy_keep = 4, - engine_policy_block = 8, - engine_policy_fixdt = 16, - engine_policy_cputight = 32, - engine_policy_mpi = 64, - engine_policy_setaffinity = 128 + engine_policy_rand = (1 << 0), + engine_policy_steal = (1 << 1), + engine_policy_keep = (1 << 2), + engine_policy_block = (1 << 3), + engine_policy_fixdt = (1 << 4), + engine_policy_cputight = (1 << 5), + engine_policy_mpi = (1 << 6), + engine_policy_setaffinity = (1 << 7), + engine_policy_hydro = (1 << 8), + engine_policy_self_gravity = (1 << 9), + engine_policy_external_gravity = (1 << 10) }; extern const char *engine_policy_names[];