Cloned SEACAS for EXODUS library with extra build files for internal package management.
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

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");
}
}
}