--- trunk/paso/src/UMFPACK.c 2007/05/16 22:45:33 1148 +++ trunk/paso/src/UMFPACK.c 2007/05/17 00:30:15 1149 @@ -54,13 +54,14 @@ double time0; double control[UMFPACK_CONTROL], info[UMFPACK_INFO]; int error = UMFPACK_OK; + Paso_UMFPACK_Handler* pt = NULL; if (! (A->type & (MATRIX_FORMAT_OFFSET1 + MATRIX_FORMAT_BLK1)) ) { Paso_setError(TYPE_ERROR,"Paso_UMFPACK: UMFPACK requires CSR format with index offset 1 and block size 1."); return; } Performance_startMonitor(pp,PERFORMANCE_ALL); - Paso_UMFPACK_Handler* pt = (Paso_UMFPACK_Handler *)(A->solver); + pt = (Paso_UMFPACK_Handler *)(A->solver); umfpack_di_defaults(control); if (pt==NULL) { @@ -69,13 +70,13 @@ if (Paso_checkPtr(pt)) return; A->solver=(void*) pt; time0=Paso_timer(); - // call LDU symbolic factorization: // + /* call LDU symbolic factorization: */ error=umfpack_di_symbolic(n,n,A->pattern->ptr,A->pattern->index,A->val,&(pt->symbolic),control,info); if (error != UMFPACK_OK) { Paso_setError(VALUE_ERROR,"symbolic factorization failed."); Paso_UMFPACK_free(A); } else { - // call LDU factorization: // + /* call LDU factorization: */ error= umfpack_di_numeric(A->pattern->ptr,A->pattern->index,A->val,pt->symbolic,&(pt->numeric),control,info); if (error != UMFPACK_OK) { Paso_setError(ZERO_DIVISION_ERROR,"factorization failed. Most likely the matrix is singular."); @@ -86,7 +87,7 @@ } if (Paso_noError()) { time0=Paso_timer(); - // call forward backward substitution: // + /* call forward backward substitution: */ control[UMFPACK_IRSTEP]=2; /* number of refinement steps */ error=umfpack_di_solve(UMFPACK_A,A->pattern->ptr,A->pattern->index,A->val,out,in,pt->numeric,control,info); if (options->verbose) printf("timing UMFPACK: solve: %.4e sec\n",Paso_timer()-time0);