246 if(startsearch < fbloknum )
247 startsearch = fbloknum;
249 assert( startsearch < lbloknum );
252 bsrc = (symbptr->
bloktab) + bloknum;
255 bdst = (symbptr->
bloktab) + startsearch;
259 for(i=startsearch; i<lbloknum; i++, bdst++ )
271 for(i=startsearch; i<lbloknum; i++, bdst++)
320 for(itercblk=0; itercblk<cblknbr; itercblk++, cblk++)
329 for( ; iterblok < lbloknum; iterblok++, blok++)
338 for(itercblk=0; itercblk<cblknbr; itercblk++, cblk++)
340 symbptr->
browmax = pastix_imax( symbptr->
browmax, innbr[ itercblk ] );
342 innbr[itercblk] = cblk[0].
brownum;
344 assert( cblk[0].brownum == edgenbr );
351 for(itercblk=0; itercblk<cblknbr; itercblk++, cblk++)
360 for( ; iterblok < lbloknum; iterblok++, blok++)
363 browtab[ *intmp ] = iterblok;
368 if (symbptr->
browtab == NULL) {
397 double cblkavg1, blokavg1;
398 double cblkavg2, blokavg2;
403 bloknbr = symbptr->
bloknbr - cblknbr;
404 cblkmin = PASTIX_INT_MAX;
408 blokmin = PASTIX_INT_MAX;
416 for(itercblk=0; itercblk<cblknbr; itercblk++, cblk++)
423 cblksel += cblk->selevtx;
424 cblkmin = pastix_imin( cblkmin, colnbr );
425 cblkmax = pastix_imax( cblkmax, colnbr );
427 cblkavg2 += colnbr * colnbr;
431 for( ; iterblok < lbloknum; iterblok++, blok++)
435 blokmin = pastix_imin( blokmin, rownbr );
436 blokmax = pastix_imax( blokmax, rownbr );
438 blokavg2 += rownbr * rownbr;
445 cblkavg1 = (cblkavg1 * (double)dof ) / (double)cblknbr;
446 cblkavg2 = sqrt( ((cblkavg2 * (
double)dof * (
double)dof) / (
double)cblknbr) - cblkavg1 * cblkavg1 );
452 blokavg1 = (blokavg1 * (double)dof ) / (double)bloknbr;
453 blokavg2 = sqrt( ((blokavg2 * (
double)dof * (
double)dof) / (
double)bloknbr) - blokavg1 * blokavg1 );
469 " Symbol Matrix statistics:\n"
470 " Number of cblk %10ld\n"
471 " Number of blok %10ld\n"
472 " Cblk width min %10ld\n"
473 " Cblk width max %10ld\n"
474 " Cblk width avg %11.2lf\n"
475 " Cblk width stdev %11.2lf\n"
476 " Blok height min %10ld\n"
477 " Blok height max %10ld\n"
478 " Blok height avg %11.2lf\n"
479 " Blok height stdev %11.2lf\n"
480 " Memory space %11.2lf %co\n",
481 (
long)cblknbr, (
long)bloknbr,
482 (
long)cblkmin, (
long)cblkmax, cblkavg1, cblkavg2,
483 (
long)blokmin, (
long)blokmax, blokavg1, blokavg2,
484 pastix_print_value( mem ),
485 pastix_print_unit( mem ) );
489 " Number of selected cblk %10ld\n",
void pastixSymbolInit(const pastix_graph_t *graph, const pastix_order_t *order, symbol_matrix_t *symbptr)
Initialize the symbol structure.
pastix_int_t pastixSymbolGetFacingBloknum(const symbol_matrix_t *symbptr, pastix_int_t bloksrc, pastix_int_t bloknum, pastix_int_t startsearch, int ricar)
Search the targeted block C for a couple of blocks A and B.
static void symbol_init_adddofs(const pastix_graph_t *graph, const pastix_order_t *order, symbol_matrix_t *symbptr)
Add a dof array to the symbol matrix if any.