update printMM
This commit is contained in:
parent
8b02ab88d3
commit
3f39f5d4fa
@ -588,62 +588,48 @@ hypre_CSRMatrixPrintMM( hypre_CSRMatrix *matrix,
|
||||
HYPRE_Int trans,
|
||||
const char *file_name )
|
||||
{
|
||||
FILE *fp;
|
||||
hypre_assert(hypre_CSRMatrixI(matrix)[hypre_CSRMatrixNumRows(matrix)] == hypre_CSRMatrixNumNonzeros(matrix));
|
||||
|
||||
HYPRE_Complex *matrix_data;
|
||||
HYPRE_Int *matrix_i;
|
||||
HYPRE_Int *matrix_j;
|
||||
HYPRE_Int num_rows, num_cols;
|
||||
FILE *fp = file_name ? fopen(file_name, "w") : stdout;
|
||||
|
||||
/* HYPRE_Int file_base = 1; */
|
||||
|
||||
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)
|
||||
if (!fp)
|
||||
{
|
||||
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
|
||||
{
|
||||
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));
|
||||
}
|
||||
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++)
|
||||
for (j = matrix_i[i]; j < matrix_i[i + 1]; j++)
|
||||
{
|
||||
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
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
return ierr;
|
||||
return hypre_error_flag;
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------------------
|
||||
|
||||
Loading…
Reference in New Issue
Block a user