diff --git a/src/engine.c b/src/engine.c index 892517d11c94ae42b8253e20dd958bf10bff92cb..0c2e621167394423cb5878026e7d5fca1741bdc2 100644 --- a/src/engine.c +++ b/src/engine.c @@ -446,8 +446,6 @@ void engine_redistribute(struct engine *e) { #ifdef WITH_MPI - message("\n REDISTRIBUTE!!! \n"); - const int nr_nodes = e->nr_nodes; const int nodeID = e->nodeID; struct space *s = e->s; @@ -3543,15 +3541,8 @@ void engine_prepare(struct engine *e) { /* Do we need rebuilding ? */ if (e->forcerebuild) engine_rebuild(e, 0); - message("Rebuild done"); - /* Unskip active tasks and check for rebuild */ engine_unskip(e); - // engine_marktasks(e); - - //space_print_cells(e->s); - - // engine_print_task_counts(e); /* Re-rank the tasks every now and then. */ if (e->tasks_age % engine_tasksreweight == 1) { @@ -4142,10 +4133,6 @@ void engine_step(struct engine *e) { e->timeStep = (e->ti_current - e->ti_old) * e->timeBase; e->step_props = engine_step_prop_none; - // space_print_cells(e->s); - // message("nr cells: %d %d", e->s->nr_cells, e->s->tot_cells); - message("ti_current=%lld ti_old=%lld", e->ti_current, e->ti_old); - /* Prepare the tasks to be launched, rebuild or repartition if needed. */ engine_prepare(e); @@ -4458,6 +4445,10 @@ void engine_makeproxies(struct engine *e) { const struct space *s = e->s; struct cell *cells = s->cells_top; struct proxy *proxies = e->proxies; + const int periodic = s->periodic; + const double dim[3] = {s->dim[0], s->dim[1], s->dim[2]}; + const struct gravity_props *props = e->gravity_properties; + const double theta_crit2 = props->theta_crit2; ticks tic = getticks(); //const int with_hydro = (e->policy & engine_policy_hydro); //const int with_gravity = (e->policy & engine_policy_self_gravity); @@ -4482,15 +4473,39 @@ void engine_makeproxies(struct engine *e) { /* Get the cell ID. */ const int cid = cell_getid(cdim, ind[0], ind[1], ind[2]); + /* Get ci's multipole */ + const struct gravity_tensors *multi_i = cells[cid].multipole; + const double CoM_i[3] = {multi_i->CoM[0], multi_i->CoM[1], multi_i->CoM[2]}; + const double r_max_i = multi_i->r_max; + /* Loop over every other cell */ for (int ii = 0; ii < cdim[0]; ii++) { for (int jj = 0; jj < cdim[1]; jj++) { for (int kk = 0; kk < cdim[2]; kk++) { - //if(with_hydro) - /* Get the cell ID. */ const int cjd = cell_getid(cdim, ii, jj, kk); + + /* Get cj's multipole */ + const struct gravity_tensors *multi_j = cells[cjd].multipole; + const double CoM_j[3] = {multi_j->CoM[0], multi_j->CoM[1], multi_j->CoM[2]}; + const double r_max_j = multi_j->r_max; + + /* Let's compute the current distance between the cell pair*/ + double dx = CoM_i[0] - CoM_j[0]; + double dy = CoM_i[1] - CoM_j[1]; + double dz = CoM_i[2] - CoM_j[2]; + + /* Apply BC */ + if (periodic) { + dx = nearest(dx, dim[0]); + dy = nearest(dy, dim[1]); + dz = nearest(dz, dim[2]); + } + const double r2 = dx * dx + dy * dy + dz * dz; + + if (gravity_M2L_accept(r_max_i, r_max_j, theta_crit2, r2)) + continue; /* Add to proxies? */ if (cells[cid].nodeID == e->nodeID && diff --git a/src/space.c b/src/space.c index 5753ccbf9f7f42e6ca150d185c244b88fa13e902..aac2741d27801c25f575ec876058a68d6e43423f 100644 --- a/src/space.c +++ b/src/space.c @@ -538,8 +538,6 @@ void space_rebuild(struct space *s, int verbose) { fflush(stdout); #endif - message("\n REBUILD!!! \n"); - /* Re-grid if necessary, or just re-set the cell data. */ space_regrid(s, verbose);