You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.9 KiB
64 lines
1.9 KiB
2 years ago
|
/*
|
||
|
* Copyright(C) 1999-2020, 2023 National Technology & Engineering Solutions
|
||
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
||
|
* NTESS, the U.S. Government retains certain rights in this software.
|
||
|
*
|
||
|
* See packages/seacas/LICENSE for details
|
||
|
*/
|
||
|
|
||
|
#include "structs.h" // for bilist
|
||
|
#include <stdio.h> // for printf, NULL
|
||
|
|
||
|
/*static void p1bucket();*/
|
||
|
|
||
|
void pbuckets(struct bilist ****buckets, /* pointers to bucket lists */
|
||
|
struct bilist **listspace, /* elements within buckets */
|
||
|
int maxdeg, /* maximum degree of a vertex */
|
||
|
int nsets /* number of sets being divided into */
|
||
|
)
|
||
|
{
|
||
|
struct bilist *lptr; /* points to correct listspace */
|
||
|
int i, j; /* loop counter */
|
||
|
|
||
|
printf("\n");
|
||
|
for (i = 0; i < nsets; i++) {
|
||
|
for (j = 0; j < nsets; j++) {
|
||
|
if (i != j) {
|
||
|
printf("For transition %d -> %d\n", i, j);
|
||
|
if (j > i) {
|
||
|
lptr = listspace[j - 1];
|
||
|
}
|
||
|
else {
|
||
|
lptr = listspace[j];
|
||
|
}
|
||
|
p1bucket(buckets[i][j], lptr, maxdeg);
|
||
|
printf("\n");
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
printf("\n");
|
||
|
}
|
||
|
|
||
|
/*static*/ void p1bucket(struct bilist **bucket, /* buckets holding bucket list */
|
||
|
struct bilist *lptr, /* elements within bucket */
|
||
|
int maxdeg /* maximum degree of a vertex */
|
||
|
)
|
||
|
{
|
||
|
struct bilist *bptr; /* loops through list at a bucket */
|
||
|
int val; /* element in a bucket */
|
||
|
int size; /* array spacing */
|
||
|
int i; /* loop counter */
|
||
|
|
||
|
size = (int)(&(lptr[1]) - &(lptr[0]));
|
||
|
for (i = 2 * maxdeg; i >= 0; i--) {
|
||
|
if (bucket[i] != NULL) {
|
||
|
printf(" Bucket %d:", i - maxdeg);
|
||
|
for (bptr = bucket[i]; bptr != NULL; bptr = bptr->next) {
|
||
|
val = ((int)(bptr - lptr)) / size;
|
||
|
printf(" %d", val);
|
||
|
}
|
||
|
printf("\n");
|
||
|
}
|
||
|
}
|
||
|
}
|