00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 #ifndef _PROTOBIN_H_
00014 #define _PROTOBIN_H_
00015 
00016 
00017  
00018 graph_t *ReadGraph(params_t *); 
00019 mesh_t *ReadMesh(params_t *); 
00020 void ReadTPwgts(params_t *params, idx_t ncon);
00021 void ReadPOVector(graph_t *graph, char *filename, idx_t *vector);
00022 void WritePartition(char *, idx_t *, idx_t, idx_t);
00023 void WriteMeshPartition(char *, idx_t, idx_t, idx_t *, idx_t, idx_t *);
00024 void WritePermutation(char *, idx_t *, idx_t);
00025 void WriteGraph(graph_t *graph, char *filename);
00026 
00027 
00028 
00029 void ComputeFillIn(graph_t *graph, idx_t *perm, idx_t *iperm,
00030          size_t *r_maxlnz, size_t *r_opc);
00031 idx_t smbfct(idx_t neqns, idx_t *xadj, idx_t *adjncy, idx_t *perm, 
00032           idx_t *invp, idx_t *xlnz, idx_t *maxlnz, idx_t *xnzsub, 
00033           idx_t *nzsub, idx_t *maxsub);
00034 
00035 
00036 
00037 params_t *parse_cmdline(int argc, char *argv[]);
00038 
00039 
00040 void GPPrintInfo(params_t *params, graph_t *graph);
00041 void GPReportResults(params_t *params, graph_t *graph, idx_t *part, idx_t edgecut);
00042 
00043 
00044 void NDPrintInfo(params_t *params, graph_t *graph);
00045 void NDReportResults(params_t *params, graph_t *graph, idx_t *perm, idx_t *iperm);
00046 
00047 
00048 void MPPrintInfo(params_t *params, mesh_t *mesh);
00049 void MPReportResults(params_t *params, mesh_t *mesh, idx_t *epart, idx_t *npart, 
00050          idx_t edgecut);
00051 
00052 
00053 void M2GPrintInfo(params_t *params, mesh_t *mesh);
00054 void M2GReportResults(params_t *params, mesh_t *mesh, graph_t *graph);
00055 
00056 
00057 void ComputePartitionInfo(params_t *params, graph_t *graph, idx_t *where);
00058 
00059 
00060 #endif