#include <stddef.h>
#include <stdbool.h>
-Multilevel_control Multilevel_control_new(int mode) {
+Multilevel_control Multilevel_control_new(void) {
Multilevel_control ctrl;
ctrl = GNEW(struct Multilevel_control_struct);
ctrl->min_coarsen_factor = 0.75;
ctrl->maxlevel = 1<<30;
ctrl->randomize = TRUE;
- /* now set in spring_electrical_control_new(), as well as by command line argument -c
- ctrl->coarsen_mode = COARSEN_MODE_FORCEFUL; or COARSEN_MODE_GENTLE;
- */
ctrl->coarsen_scheme = COARSEN_INDEPENDENT_EDGE_SET_HEAVEST_EDGE_PERNODE_SUPERNODES_FIRST;
- ctrl->coarsen_mode = mode;
+ ctrl->coarsen_mode = COARSEN_MODE_FORCEFUL;
return ctrl;
}
ctrl->C = 0.2;/* another parameter. f_a(i,j) = C*dist(i,j)^2/K * d_ij, f_r(i,j) = K^(3-p)/dist(i,j)^(-p). By default C = 0.2. */
ctrl->multilevels = FALSE;/* if <=1, single level */
- //ctrl->multilevel_coarsen_mode = COARSEN_MODE_GENTLE;
-
- ctrl->multilevel_coarsen_mode = COARSEN_MODE_FORCEFUL;/*alternative: COARSEN_MODE_GENTLE. pass on to Multilevel_control->coarsen_mode */
-
-
ctrl->quadtree_size = 45;/* cut off size above which quadtree approximation is used */
ctrl->max_qtree_level = 10;/* max level of quadtree */
ctrl->bh = 0.6;/* Barnes-Hutt constant, if width(snode)/dist[i,snode] < bh, treat snode as a supernode.*/
fprintf (stderr, " repulsive and attractive exponents: %.03f %.03f\n", ctrl->p, ctrl->q);
fprintf (stderr, " random start %d seed %d\n", ctrl->random_start, ctrl->random_seed);
fprintf (stderr, " K : %.03f C : %.03f\n", ctrl->K, ctrl->C);
- fprintf (stderr, " max levels %d coarsen_node %d\n", ctrl->multilevels,
- ctrl->multilevel_coarsen_mode);
+ fprintf (stderr, " max levels %d\n", ctrl->multilevels);
fprintf (stderr, " quadtree size %d max_level %d\n", ctrl->quadtree_size, ctrl->max_qtree_level);
fprintf (stderr, " Barnes-Hutt constant %.03f tolerance %.03f maxiter %d\n", ctrl->bh, ctrl->tol, ctrl->maxiter);
fprintf (stderr, " cooling %.03f step size %.03f adaptive %d\n", ctrl->cool, ctrl->step, ctrl->adaptive_cooling);
return;
}
- mctrl = Multilevel_control_new(ctrl->multilevel_coarsen_mode);
+ mctrl = Multilevel_control_new();
mctrl->maxlevel = ctrl->multilevels;
grid0 = Multilevel_new(A, D, mctrl);
double K;/* the natural distance. If K < 0, K will be set to the average distance of an edge */
double C;/* another parameter. f_a(i,j) = C*dist(i,j)^2/K * d_ij, f_r(i,j) = K^(3-p)/dist(i,j)^(-p). By default C = 0.2. */
int multilevels;/* if <=1, single level */
- int multilevel_coarsen_mode;/* pass on to Multilevel_control->coarsen_mode */
int quadtree_size;/* cut off size above which quadtree approximation is used */
int max_qtree_level;/* max level of quadtree */
double bh;/* Barnes-Hutt constant, if width(snode)/dist[i,snode] < bh, treat snode as a supernode. default 0.2*/