1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
|
/* writeAIJ.c */
#include "../Graph.h"
#include "../../Drand.h"
#include "../../timings.h"
/*--------------------------------------------------------------------*/
int
main ( int argc, char *argv[] )
/*
-------------------------------------------------
read in a Graph and write out an AIJ file
nrow ncol nent
row col entry
...
created -- 98dec05, cca
-------------------------------------------------
*/
{
char *inGraphFileName, *outFileName ;
double t1, t2 ;
Drand *drand ;
int ii, msglvl, nedges, nvtx, rc, v, vsize, w ;
int *vadj ;
Graph *graph ;
FILE *msgFile, *outFile ;
if ( argc != 5 ) {
fprintf(stdout,
"\n\n usage : %s msglvl msgFile inFile outFileName"
"\n msglvl -- message level"
"\n msgFile -- message file"
"\n inFile -- input file, must be *.graphf or *.graphb"
"\n outFile -- output file"
"\n", argv[0]) ;
return(0) ;
}
msglvl = atoi(argv[1]) ;
if ( strcmp(argv[2], "stdout") == 0 ) {
msgFile = stdout ;
} else if ( (msgFile = fopen(argv[2], "a")) == NULL ) {
fprintf(stderr, "\n fatal error in %s"
"\n unable to open file %s\n",
argv[0], argv[2]) ;
return(-1) ;
}
inGraphFileName = argv[3] ;
outFileName = argv[4] ;
fprintf(msgFile,
"\n %s "
"\n msglvl -- %d"
"\n msgFile -- %s"
"\n inFile -- %s"
"\n outFile -- %s"
"\n",
argv[0], msglvl, argv[2], inGraphFileName, outFileName) ;
fflush(msgFile) ;
/*
----------------------
read in the Graph object
----------------------
*/
if ( strcmp(inGraphFileName, "none") == 0 ) {
fprintf(msgFile, "\n no file to read from") ;
exit(0) ;
}
graph = Graph_new() ;
MARKTIME(t1) ;
rc = Graph_readFromFile(graph, inGraphFileName) ;
MARKTIME(t2) ;
fprintf(msgFile, "\n CPU %9.5f : read in graph from file %s",
t2 - t1, inGraphFileName) ;
if ( rc != 1 ) {
fprintf(msgFile, "\n return value %d from Graph_readFromFile(%p,%s)",
rc, graph, inGraphFileName) ;
exit(-1) ;
}
fprintf(msgFile, "\n\n after reading Graph object from file %s",
inGraphFileName) ;
if ( msglvl > 2 ) {
Graph_writeForHumanEye(graph, msgFile) ;
} else {
Graph_writeStats(graph, msgFile) ;
}
fflush(msgFile) ;
/*
--------------------------------------
initialize the random number generator
--------------------------------------
*/
drand = Drand_new();
Drand_setSeed(drand, 47) ;
Drand_setUniform(drand, -1., 1.) ;
/*
--------------------------
write out the AIJ entries
--------------------------
*/
if ( strcmp(outFileName, "stdout") == 0 ) {
outFile = stdout ;
} else if ( (outFile = fopen(outFileName, "w")) == NULL ) {
fprintf(stderr, "\n fatal error in %s"
"\n unable to open file %s\n", argv[0], outFile) ;
return(-1) ;
}
nvtx = graph->nvtx ;
nedges = graph->nedges ;
fprintf(outFile, "\n %d %d %d", nvtx, nvtx, nvtx + (nedges-nvtx)/2) ;
for ( v = 0 ; v < nvtx ; v++ ) {
Graph_adjAndSize(graph, v, &vsize, &vadj) ;
for ( ii = 0 ; ii < vsize ; ii++ ) {
w = vadj[ii] ;
if ( v <= w ) {
fprintf(outFile,
"\n %8d %8d %20.12e", v, w, Drand_value(drand)) ;
}
}
}
fclose(outFile) ;
/*
---------------------
free the Graph object
---------------------
*/
Graph_free(graph) ;
fprintf(msgFile, "\n") ;
fclose(msgFile) ;
return(1) ; }
/*--------------------------------------------------------------------*/
|