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.

137 lines
4.8 KiB

2 years ago
/*
* Copyright(C) 1999-2020, 2022, 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
*/
#pragma once
/**< An array of these stores all the data for the graph/matrix. */
struct vtx_data
{
int vwgt; /**< weight of vertex */
int nedges; /**< number of neighbors of vertex in subgraph */
/**< Note: above always includes self-edge first */
int *edges; /**< neighbor list in subgraph numbering scheme */
float *ewgts; /**< weights of all the edges */
/**< Note: above 2 fields have self-edge first */
};
/**< An Array of lists made of these stores scheduler's message table. */
struct msg_data
{
int dest; /**< destination of the message */
double dur; /**< duration of message */
double beg; /**< time at which message begins */
double end; /**< time at which message end */
struct list *route; /**< linked list of ints stores message route */
struct msg_data *pntr; /**< pointer to next outgoing message from this set */
};
/**< A linked list of these stores the selective orthogonalization set */
struct orthlink
{
int depth; /**< bottom of list is 0, previous is 1 etc */
int index; /**< position in list of ritz vals (i index) */
double ritzval; /**< good ritz value */
double betaji; /**< residual bound on good ritz pair */
double tau; /**< from orthogonality recursion */
double prevtau; /**< from orthogonality recursion */
double *vec; /**< vector to orthogonalize against */
struct orthlink *pntr; /**< pointer to next link */
};
/**< A linked list of these stores the selective orthogonalization set */
struct orthlink_float
{
int depth; /**< bottom of list is 0, previous is 1 etc */
int index; /**< position in list of ritz vals (i index) */
double ritzval; /**< good ritz value */
double betaji; /**< residual bound on good ritz pair */
double tau; /**< from orthogonality recursion */
double prevtau; /**< from orthogonality recursion */
float *vec; /**< vector to orthogonalize against */
struct orthlink_float *pntr; /**< pointer to next link */
};
/**< Array data structure for heap information */
struct heap
{
double val; /**< value being kept in a heap */
int tag; /**< info associated with value */
};
/**< A linked list of these stores the minimum elements of a vector */
struct scanlink
{
double val; /**< value of vector entry */
int indx; /**< index of corresponding entry */
struct scanlink *pntr; /**< pointer to next link */
};
/**< These store the phantom edges needed to keep a subgraph connected */
struct edgeslist
{
int vtx1; /**< first vertex in edge */
int vtx2; /**< second vertex in edge */
struct edgeslist *next; /**< pointer to next element in list */
};
/**< These store all the data needed to modify edges for connectivity. */
struct connect_data
{
struct ilists *old_edges; /**< overwritten old edges */
struct flists *old_ewgts; /**< overwritten old weights */
struct edgeslist *new_edges; /**< list of new edges */
int old_nedges; /**< original number of edges in graph */
};
/**< Information about subsets of processors is needed in recurse. */
struct set_info
{
int setnum; /**< assignment value for this set */
int ndims; /**< log of # processors if hypercube */
int low[3]; /**< low limit for grid dimensions if mesh */
int span[3]; /**< size of grid dimensions if mesh */
struct set_info *next; /**< pointer to next element in linked list */
};
/**< Linked list stuff for various uses */
struct list
{ /**< linked list of integers */
int num; /**< element number */
struct list *next; /**< ptr to next element in list */
};
struct lists
{ /**< linked list of lists */
struct list *begin; /**< pointer to list */
struct lists *nextlist; /**< next list header */
};
struct bilist
{ /**< bidirectional list */
struct bilist *prev; /**< pointer to previous element */
struct bilist *next; /**< ptr to next element in list */
};
struct ipairs
{ /**< stores pairs of integers */
int val1;
int val2;
};
struct ilists
{ /**< linked list of integer lists */
int *list;
struct ilists *next;
};
struct flists
{ /**< linked list of floating lists */
float *list;
struct flists *next;
};
#include "prototypes.h"