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
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"
|