⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 struct.h

📁 一个用来实现偏微分方程中网格的计算库
💻 H
字号:
/* * Copyright 1997, Regents of the University of Minnesota * * struct.h * * This file contains data structures for ILU routines. * * Started 9/26/95 * George * * $Id: struct.h 2501 2007-11-20 02:33:29Z benkirk $ */#ifndef __parmetis_h__/* Undefine the following #define in order to use short int as the idxtype */#define IDXTYPE_INT/* Indexes are as long as integers for now */#ifdef IDXTYPE_INTtypedef int idxtype;#elsetypedef short idxtype;#endif#endif#define MAXIDX	(1<<8*sizeof(idxtype)-2)/************************************************************************** The following data structure stores key-value pair**************************************************************************/struct KeyValueType {  idxtype key;  idxtype val;};typedef struct KeyValueType KeyValueType;/************************************************************************** The following data structure will hold a node of a doubly-linked list.**************************************************************************/struct ListNodeType {  int id;                       	/* The id value of the node */  struct ListNodeType *prev, *next;     /* It's a doubly-linked list */};typedef struct ListNodeType ListNodeType;/************************************************************************** The following data structure is used to store the buckets for the * refinment algorithms**************************************************************************/struct PQueueType {  int type;                     /* The type of the representation used */  int nnodes;  int maxnodes;  int mustfree;  /* Linear array version of the data structures */  int pgainspan, ngainspan;     /* plus and negative gain span */  int maxgain;  ListNodeType *nodes;  ListNodeType **buckets;  /* Heap version of the data structure */  KeyValueType *heap;  idxtype *locator;};typedef struct PQueueType PQueueType;/************************************************************************** The following data structure stores an edge**************************************************************************/struct edegreedef {  idxtype pid;  idxtype ed;};typedef struct edegreedef EDegreeType;/************************************************************************** The following data structure stores an edge for vol**************************************************************************/struct vedegreedef {  idxtype pid;  idxtype ed, ned;  idxtype gv;};typedef struct vedegreedef VEDegreeType;/************************************************************************** This data structure holds various working space data**************************************************************************/struct workspacedef {  idxtype *core;			/* Where pairs, indices, and degrees are coming from */  int maxcore, ccore;  EDegreeType *edegrees;  VEDegreeType *vedegrees;  int cdegree;  idxtype *auxcore;			/* This points to the memory of the edegrees */  idxtype *pmat;			/* An array of k^2 used for eliminating domain                                            connectivity in k-way refinement */};typedef struct workspacedef WorkSpaceType;/************************************************************************** The following data structure holds information on degrees for k-way* partition**************************************************************************/struct rinfodef { int id, ed;            	/* ID/ED of nodes */ int ndegrees;          	/* The number of different ext-degrees */ EDegreeType *edegrees;     	/* List of edges */};typedef struct rinfodef RInfoType;/************************************************************************** The following data structure holds information on degrees for k-way* vol-based partition**************************************************************************/struct vrinfodef { int id, ed, nid;            	/* ID/ED of nodes */ int gv;            		/* IV/EV of nodes */ int ndegrees;          	/* The number of different ext-degrees */ VEDegreeType *edegrees;     	/* List of edges */};typedef struct vrinfodef VRInfoType;/************************************************************************** The following data structure holds information on degrees for k-way* partition**************************************************************************/struct nrinfodef { idxtype edegrees[2];  };typedef struct nrinfodef NRInfoType;/************************************************************************** This data structure holds the input graph**************************************************************************/struct graphdef {  idxtype *gdata, *rdata;	/* Memory pools for graph and refinement data.                                   This is where memory is allocated and used                                   the rest of the fields in this structure */  int nvtxs, nedges;		/* The # of vertices and edges in the graph */  idxtype *xadj;		/* Pointers to the locally stored vertices */  idxtype *vwgt;		/* Vertex weights */  idxtype *vsize;		/* Vertex sizes for min-volume formulation */  idxtype *adjncy;		/* Array that stores the adjacency lists of nvtxs */  idxtype *adjwgt;		/* Array that stores the weights of the adjacency lists */  idxtype *adjwgtsum;		/* The sum of the adjacency weight of each vertex */  idxtype *label;  idxtype *cmap;  /* Partition parameters */  int mincut, minvol;  idxtype *where, *pwgts;  int nbnd;  idxtype *bndptr, *bndind;  /* Bisection refinement parameters */  idxtype *id, *ed;  /* K-way refinement parameters */  RInfoType *rinfo;  /* K-way volume refinement parameters */  VRInfoType *vrinfo;  /* Node refinement information */  NRInfoType *nrinfo;  /* Additional info needed by the MOC routines */  int ncon;			/* The # of constrains */   float *nvwgt;			/* Normalized vertex weights */  float *npwgts;		/* The normalized partition weights */  struct graphdef *coarser, *finer;};typedef struct graphdef GraphType;/************************************************************************** The following data type implements a timer**************************************************************************/typedef double timer;/************************************************************************** The following structure stores information used by Metis**************************************************************************/struct controldef {  int CoarsenTo;		/* The # of vertices in the coarsest graph */  int dbglvl;			/* Controls the debuging output of the program */  int CType;			/* The type of coarsening */  int IType;			/* The type of initial partitioning */  int RType;			/* The type of refinement */  int maxvwgt;			/* The maximum allowed weight for a vertex */  float nmaxvwgt;		/* The maximum allowed weight for a vertex for each constrain */  int optype;			/* Type of operation */  int pfactor;			/* .1*prunning factor */  int nseps;			/* The number of separators to be found during multiple bisections */  int oflags;  WorkSpaceType wspace;		/* Work Space Informations */  /* Various Timers */  timer TotalTmr, InitPartTmr, MatchTmr, ContractTmr, CoarsenTmr, UncoarsenTmr,         SepTmr, RefTmr, ProjectTmr, SplitTmr, AuxTmr1, AuxTmr2, AuxTmr3, AuxTmr4, AuxTmr5, AuxTmr6;};typedef struct controldef CtrlType;/************************************************************************** The following data structure stores max-partition weight info for * Vertical MOC k-way refinement**************************************************************************/struct vpwgtdef {  float max[2][MAXNCON];  int imax[2][MAXNCON];};typedef struct vpwgtdef VPInfoType;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -