94 pastix_graph_t *graph;
99 #if defined( PASTIX_DISTRIBUTED )
100 pastix_int_t *PTS_perm = NULL;
101 pastix_int_t *PTS_rev_perm = NULL;
102 pastix_int_t *tmpperm = NULL;
103 pastix_int_t *tmpperi = NULL;
111 if ( pastix_data == NULL ) {
112 pastix_print_error(
"pastix_subtask_symbfact: wrong pastix_data parameter" );
115 iparm = pastix_data->iparm;
116 dparm = pastix_data->dparm;
118 if ( !( pastix_data->steps & STEP_ORDERING ) ) {
119 pastix_print_error(
"pastix_subtask_symbfact: pastix_subtask_order() has to be called before "
120 "calling this function" );
124 procnum = pastix_data->procnum;
125 graph = pastix_data->graph;
126 ordemesh = pastix_data->ordemesh;
128 if ( graph == NULL ) {
129 pastix_print_error(
"pastix_subtask_symbfact: the pastix_data->graph field has not been "
130 "initialized, pastix_subtask_order should be called first" );
133 if ( ordemesh == NULL ) {
134 pastix_print_error(
"pastix_subtask_symbfact: the pastix_data->ordemesh field has not been "
135 "initialized, pastix_subtask_order should be called first" );
147 pastix_print( procnum, 0, OUT_STEP_FAX );
151 if ( pastix_data->symbmtx == NULL ) {
173 #if defined( COMPACT_SMX )
175 pastix_print_warning(
"COMPACT_SMX only works with incomplete factorization, force ILU(%d) "
186 #if defined( PASTIX_DISTRIBUTED )
187 if ( graph->loc2glob != NULL ) {
188 cscd2csc_int( graph->n,
203 pastix_data->pastix_comm,
213 pastixSymbolInit( graph, ordemesh, pastix_data->symbmtx );
222 pastix_print( procnum, 0, OUT_FAX_METHOD,
"Fax Direct" );
231 pastix_print( procnum, 0, OUT_FAX_METHOD,
"Fax ILU(k)" );
241 pastix_data->symbmtx->schurfcol =
242 nfax - pastix_data->schur_n + pastix_data->symbmtx->baseval;
252 if ( ordemesh->
selevtx != NULL ) {
255 int8_t *selevtx = ordemesh->
selevtx;
258 for(i=0; i<symbmtx->
cblknbr; i++, cblk++, selevtx++ ) {
259 cblk->selevtx = *selevtx;
263 #if !defined( NDEBUG )
265 pastix_print_error(
"pastix_subtask_symbfact: pastixOrderCheck on final ordering after symbolic "
266 "factorization failed !!!" );
270 pastix_print_error(
"pastix_subtask_symbfact: symbolCheck on final symbol matrix failed !!!" );
280 if ( procnum == 0 ) {
282 stream =
pastix_fopenw( pastix_data->dir_global,
"symbgen",
"w" );
293 #if defined( PASTIX_SYMBOL_DUMP_SYMBMTX )
296 if ( procnum == 0 ) {
298 stream =
pastix_fopenw( pastix_data->dir_global,
"symbol.eps",
"w" );
322 if ( procnum == 0 ) {
328 (double)( iparm[
IPARM_NNZEROS] ) / (double)( ( pastix_data->csc )->gnnz );
330 pastix_print( procnum, 0, OUT_FAX_SUMMARY,
332 fillin, clockVal(timer) );
337 pastix_data->steps &= ~( STEP_ANALYSE |
343 pastix_data->steps |= STEP_SYMBFACT;