24 #define assert_graph( _graph_ ) \
26 assert( (_graph_)->fmttype == SpmCSC ); \
27 assert( (_graph_)->flttype == SpmPattern ); \
28 assert( (_graph_)->values == NULL ); \
49 spmInitDist( graph, comm );
51 graph->flttype = SpmPattern;
53 graph->colptr = malloc(
sizeof( pastix_int_t ) );
74 if ( graph == NULL ) {
75 pastix_print_error(
"graphExit: graph pointer is NULL" );
78 assert_graph( graph );
101 pastix_int_t baseval )
104 if ( graph == NULL ) {
105 pastix_print_error(
"graphBase: graph pointer is NULL" );
108 if ( (baseval != 0) &&
111 pastix_print_error(
"graphBase: baseval is incorrect, must be 0 or 1" );
115 assert_graph( graph );
117 spmBase( graph, baseval );
150 const pastix_graph_t *graphsrc )
153 if ( graphdst == NULL ) {
156 if ( graphsrc == NULL ) {
159 if ( graphsrc == graphdst ) {
162 assert_graph( graphsrc );
165 spmCopy( graphsrc, graphdst );
195 pastix_graph_t newgraph;
198 assert_graph( graph );
199 if ( graph->loc2glob != NULL ) {
204 rc = spmScatter( &newgraph, -1, graph, -1, NULL, 1, comm );
206 if ( rc == SPM_SUCCESS ) {
208 memcpy( graph, &newgraph,
sizeof( pastix_graph_t ) );
210 assert_graph( graph );
242 pastix_graph_t newgraph;
245 assert_graph( graph );
246 if ( graph->loc2glob == NULL ) {
250 rc = spmGather( graph, -1, &newgraph );
252 if ( rc == SPM_SUCCESS ) {
254 memcpy( graph, &newgraph,
sizeof( pastix_graph_t ) );
256 assert_graph( graph );
285 assert_graph( graph );
311 if ( graph == NULL ) {
314 assert_graph( graph );
316 spmSymmetrize( graph );
342 if ( graph == NULL ) {
345 assert_graph( graph );
347 spmUpdateComputedFields( graph );
381 const spmatrix_t *spm )
384 if ( graph == NULL ) {
398 spmCopy( spm, graph );
401 graph->flttype = SpmPattern;
402 if ( graph->values ) {
403 free( graph->values );
404 graph->values = NULL;
408 spmConvert( SpmCSC, graph );
435 pastix_int_t *weights, *wptr;
437 if ( graph->dof == 1 ) {
442 MALLOC_INTERN( weights, n, pastix_int_t );
446 if ( graph->dof > 1 ) {
447 for ( i=0; i<n; i++, wptr++ ) {
453 pastix_int_t *dofptr = graph->dofs;
454 if ( graph->loc2glob == NULL ) {
455 for ( i=0; i<n; i++, wptr++, dofptr++ ) {
456 *wptr = dofptr[1] - dofptr[0];
460 pastix_int_t *dofptr = graph->dofs - graph->baseval;
461 pastix_int_t *loc2glob = graph->loc2glob;
463 for ( i=0; i<n; i++, wptr++, loc2glob++ ) {
464 *wptr = dofptr[ *loc2glob + 1 ] - dofptr[ *loc2glob ];