Vector<double> &rhs_and_solution);
/**
- * Exception
+ * One of the UMFPack routines
+ * threw an error. The error code
+ * is included in the output and
+ * can be looked up in the
+ * UMFPack user manual. The name
+ * of the routine is included for
+ * reference.
*/
- DeclException1 (ExcUMFPACKError, int,
- << "UMFPACK returned error status " << arg1);
+ DeclException2 (ExcUMFPACKError, char*, int,
+ << "UMFPACK routine " << arg1
+ << " returned error status " << arg2);
private:
/**
&Ap[0], &Ai[0], &Ax[0],
&symbolic_decomposition,
&control[0], 0);
- AssertThrow (status == UMFPACK_OK, ExcUMFPACKError(status));
+ AssertThrow (status == UMFPACK_OK, ExcUMFPACKError("umfpack_di_symbolic", status));
status = umfpack_di_numeric (&Ap[0], &Ai[0], &Ax[0],
symbolic_decomposition,
&numeric_decomposition,
&control[0], 0);
- AssertThrow (status == UMFPACK_OK, ExcUMFPACKError(status));
+ AssertThrow (status == UMFPACK_OK, ExcUMFPACKError("umfpack_di_numeric", status));
umfpack_di_free_symbolic (&symbolic_decomposition) ;
}
rhs_and_solution.begin(), rhs.begin(),
numeric_decomposition,
&control[0], 0);
- AssertThrow (status == UMFPACK_OK, ExcUMFPACKError(status));
+ AssertThrow (status == UMFPACK_OK, ExcUMFPACKError("umfpack_di_solve", status));
}