]> granicus.if.org Git - graphviz/commitdiff
sfdpgen: remove 'coarsen_scheme_used' option that is always set the same
authorMatthew Fernandez <matthew.fernandez@gmail.com>
Fri, 30 Dec 2022 18:10:38 +0000 (10:10 -0800)
committerMatthew Fernandez <matthew.fernandez@gmail.com>
Sat, 31 Dec 2022 19:55:25 +0000 (11:55 -0800)
lib/sfdpgen/Multilevel.c
lib/sfdpgen/Multilevel.h
lib/sfdpgen/spring_electrical.c

index d463c343e155a46381e41b6ced62cb66c37272e8..b61a79fc4f9030cce184c0d26e0145b75f594be3 100644 (file)
@@ -305,7 +305,6 @@ static Multilevel Multilevel_establish(Multilevel grid, Multilevel_control ctrl)
 
   cgrid = Multilevel_init(cA, cD, cnode_weights);
   grid->next = cgrid;
-  cgrid->coarsen_scheme_used = COARSEN_INDEPENDENT_EDGE_SET_HEAVEST_EDGE_PERNODE_SUPERNODES_FIRST;
   cgrid->level = grid->level + 1;
   cgrid->n = cA->m;
   cgrid->A = cA;
index 414dcc2f4b20ce214b123303ba9027141d9e8a18..8b9879e10067870c112a662dd687ddd1122ffda0 100644 (file)
@@ -26,13 +26,10 @@ struct Multilevel_struct {
   Multilevel next;
   Multilevel prev;
   int delete_top_level_A;
-  int coarsen_scheme_used;/* to get from previous level to here */
 };
 
 enum {MAX_CLUSTER_SIZE = 4};
 
-enum {EDGE_BASED_STA, COARSEN_INDEPENDENT_EDGE_SET, COARSEN_INDEPENDENT_EDGE_SET_HEAVEST_EDGE_PERNODE, COARSEN_INDEPENDENT_EDGE_SET_HEAVEST_EDGE_PERNODE_LEAVES_FIRST, COARSEN_INDEPENDENT_EDGE_SET_HEAVEST_EDGE_PERNODE_SUPERNODES_FIRST, COARSEN_INDEPENDENT_EDGE_SET_HEAVEST_EDGE_PERNODE_DEGREE_SCALED, COARSEN_INDEPENDENT_EDGE_SET_HEAVEST_CLUSTER_PERNODE_LEAVES_FIRST, EDGE_BASED_STO, VERTEX_BASED_STA, COARSEN_INDEPENDENT_VERTEX_SET, COARSEN_INDEPENDENT_VERTEX_SET_RS, VERTEX_BASED_STO, COARSEN_HYBRID};
-
 struct Multilevel_control_struct {
   int minsize;
   double min_coarsen_factor;
index 3c5f8b587093ed3a97d4f3411f22ce723f104dbf..f7355587ed453986b95fe01e4c1bcf576a2c6486 100644 (file)
@@ -1520,21 +1520,19 @@ void interpolate_coord(int dim, SparseMatrix A, double *x){
 
   free(y);
 }
-static void prolongate(int dim, SparseMatrix A, SparseMatrix P, SparseMatrix R, double *x, double *y, int coarsen_scheme_used, double delta){
+static void prolongate(int dim, SparseMatrix A, SparseMatrix P, SparseMatrix R, double *x, double *y, double delta){
   int nc, *ia, *ja, i, j, k;
   SparseMatrix_multiply_dense(P, x, &y, dim);
 
   /* xu yao rao dong */
-  if (coarsen_scheme_used > EDGE_BASED_STA && coarsen_scheme_used < EDGE_BASED_STO){
-    interpolate_coord(dim, A, y);
-    nc = R->m;
-    ia = R->ia;
-    ja = R->ja;
-    for (i = 0; i < nc; i++){
-      for (j = ia[i]+1; j < ia[i+1]; j++){
-       for (k = 0; k < dim; k++){
-         y[ja[j]*dim + k] += delta*(drand() - 0.5);
-       }
+  interpolate_coord(dim, A, y);
+  nc = R->m;
+  ia = R->ia;
+  ja = R->ja;
+  for (i = 0; i < nc; i++){
+    for (j = ia[i]+1; j < ia[i+1]; j++){
+      for (k = 0; k < dim; k++){
+        y[ja[j]*dim + k] += delta*(drand() - 0.5);
       }
     }
   }
@@ -1766,7 +1764,7 @@ static void multilevel_spring_electrical_embedding_core(int dim, SparseMatrix A0
 
 
   Multilevel_control mctrl = NULL;
-  int n, plg, coarsen_scheme_used;
+  int n, plg;
   SparseMatrix A = A0, D = D0, P = NULL;
   Multilevel grid, grid0;
   double *xc = NULL, *xf = NULL;
@@ -1893,25 +1891,19 @@ static void multilevel_spring_electrical_embedding_core(int dim, SparseMatrix A0
       goto RETURN;
     }
     P = grid->P;
-    coarsen_scheme_used = grid->coarsen_scheme_used;
     grid = grid->prev;
     if (Multilevel_is_finest(grid)){
       xf = x;
     } else {
       xf = gv_calloc(grid->n * dim, sizeof(double));
     }
-    prolongate(dim, grid->A, P, grid->R, xc, xf, coarsen_scheme_used, (ctrl->K)*0.001);
+    prolongate(dim, grid->A, P, grid->R, xc, xf, (ctrl->K)*0.001);
     free(xc);
     xc = xf;
     ctrl->random_start = FALSE;
     ctrl->K = ctrl->K * 0.75;
     ctrl->adaptive_cooling = FALSE;
-    if (grid->next->coarsen_scheme_used > VERTEX_BASED_STA &&
-       grid->next->coarsen_scheme_used < VERTEX_BASED_STO){
-      ctrl->step = 1;
-    } else {
-      ctrl->step = .1;
-    }
+    ctrl->step = .1;
   } while (grid);
 
 #ifdef TIME