update printMM

This commit is contained in:
Ruipeng Li 2022-06-07 15:26:40 -07:00
parent 8b02ab88d3
commit 3f39f5d4fa

View File

@ -588,62 +588,48 @@ hypre_CSRMatrixPrintMM( hypre_CSRMatrix *matrix,
HYPRE_Int trans, HYPRE_Int trans,
const char *file_name ) const char *file_name )
{ {
FILE *fp; hypre_assert(hypre_CSRMatrixI(matrix)[hypre_CSRMatrixNumRows(matrix)] == hypre_CSRMatrixNumNonzeros(matrix));
HYPRE_Complex *matrix_data; FILE *fp = file_name ? fopen(file_name, "w") : stdout;
HYPRE_Int *matrix_i;
HYPRE_Int *matrix_j;
HYPRE_Int num_rows, num_cols;
/* HYPRE_Int file_base = 1; */ if (!fp)
HYPRE_Int j, k;
HYPRE_Int ierr = 0;
/*----------------------------------------------------------
* Print the matrix data
*----------------------------------------------------------*/
matrix_data = hypre_CSRMatrixData(matrix);
matrix_i = hypre_CSRMatrixI(matrix);
matrix_j = hypre_CSRMatrixJ(matrix);
num_rows = hypre_CSRMatrixNumRows(matrix);
num_cols = hypre_CSRMatrixNumCols(matrix);
if (file_name)
{ {
fp = fopen(file_name, "w"); hypre_error_w_msg(1, "Cannot open output file");
return hypre_error_flag;
}
const HYPRE_Complex *matrix_data = hypre_CSRMatrixData(matrix);
const HYPRE_Int *matrix_i = hypre_CSRMatrixI(matrix);
const HYPRE_Int *matrix_j = hypre_CSRMatrixJ(matrix);
if (matrix_data)
{
hypre_fprintf(fp, "%%%%MatrixMarket matrix coordinate real general\n");
} }
else else
{ {
fp = stdout; hypre_fprintf(fp, "%%%%MatrixMarket matrix coordinate pattern general\n");
} }
hypre_fprintf(fp, "%%%%MatrixMarket matrix coordinate real general\n"); hypre_fprintf(fp, "%d %d %d\n", trans ? hypre_CSRMatrixNumCols(matrix) : hypre_CSRMatrixNumRows(matrix),
trans ? hypre_CSRMatrixNumRows(matrix) : hypre_CSRMatrixNumCols(matrix),
hypre_CSRMatrixNumNonzeros(matrix));
hypre_assert(matrix_i[num_rows] == hypre_CSRMatrixNumNonzeros(matrix)); HYPRE_Int i, j;
if (!trans) for (i = 0; i < hypre_CSRMatrixNumRows(matrix); i++)
{ {
hypre_fprintf(fp, "%d %d %d\n", num_rows, num_cols, hypre_CSRMatrixNumNonzeros(matrix)); for (j = matrix_i[i]; j < matrix_i[i + 1]; j++)
}
else
{
hypre_fprintf(fp, "%d %d %d\n", num_cols, num_rows, hypre_CSRMatrixNumNonzeros(matrix));
}
for (j = 0; j < num_rows; j++)
{
for (k = matrix_i[j]; k < matrix_i[j + 1]; k++)
{ {
if (!trans) const HYPRE_Int row = (trans ? matrix_j[j] : i) + basei;
const HYPRE_Int col = (trans ? i : matrix_j[j]) + basej;
if (matrix_data)
{ {
hypre_fprintf(fp, "%d %d %.15e\n", j + basei, matrix_j[k] + basej, matrix_data[k]); hypre_fprintf(fp, "%d %d %.15e\n", row, col, matrix_data[j]);
} }
else else
{ {
hypre_fprintf(fp, "%d %d %.15e\n", matrix_j[k] + basej, j + basei, matrix_data[k]); hypre_fprintf(fp, "%d %d\n", row, col);
} }
} }
} }
@ -653,7 +639,7 @@ hypre_CSRMatrixPrintMM( hypre_CSRMatrix *matrix,
fclose(fp); fclose(fp);
} }
return ierr; return hypre_error_flag;
} }
/*-------------------------------------------------------------------------- /*--------------------------------------------------------------------------