1 /******************************************************************************
2  * Copyright 1998-2019 Lawrence Livermore National Security, LLC and other
3  * HYPRE Project Developers. See the top-level COPYRIGHT file for details.
4  *
5  * SPDX-License-Identifier: (Apache-2.0 OR MIT)
6  ******************************************************************************/
7 
8 /******************************************************************************
9  *
10  * HYPRE_CSRMatrix interface
11  *
12  *****************************************************************************/
13 
14 #include "seq_mv.h"
15 
16 /*--------------------------------------------------------------------------
17  * HYPRE_CSRMatrixCreate
18  *--------------------------------------------------------------------------*/
19 
20 HYPRE_CSRMatrix
HYPRE_CSRMatrixCreate(HYPRE_Int num_rows,HYPRE_Int num_cols,HYPRE_Int * row_sizes)21 HYPRE_CSRMatrixCreate( HYPRE_Int  num_rows,
22                        HYPRE_Int  num_cols,
23                        HYPRE_Int *row_sizes )
24 {
25    hypre_CSRMatrix *matrix;
26    HYPRE_Int             *matrix_i;
27    HYPRE_Int              i;
28 
29    matrix_i = hypre_CTAlloc(HYPRE_Int,  num_rows + 1, HYPRE_MEMORY_HOST);
30    matrix_i[0] = 0;
31    for (i = 0; i < num_rows; i++)
32    {
33       matrix_i[i+1] = matrix_i[i] + row_sizes[i];
34    }
35 
36    matrix = hypre_CSRMatrixCreate(num_rows, num_cols, matrix_i[num_rows]);
37    hypre_CSRMatrixI(matrix) = matrix_i;
38 
39    return ( (HYPRE_CSRMatrix) matrix );
40 }
41 
42 /*--------------------------------------------------------------------------
43  * HYPRE_CSRMatrixDestroy
44  *--------------------------------------------------------------------------*/
45 
46 HYPRE_Int
HYPRE_CSRMatrixDestroy(HYPRE_CSRMatrix matrix)47 HYPRE_CSRMatrixDestroy( HYPRE_CSRMatrix matrix )
48 {
49    return( hypre_CSRMatrixDestroy( (hypre_CSRMatrix *) matrix ) );
50 }
51 
52 /*--------------------------------------------------------------------------
53  * HYPRE_CSRMatrixInitialize
54  *--------------------------------------------------------------------------*/
55 
56 HYPRE_Int
HYPRE_CSRMatrixInitialize(HYPRE_CSRMatrix matrix)57 HYPRE_CSRMatrixInitialize( HYPRE_CSRMatrix matrix )
58 {
59    return ( hypre_CSRMatrixInitialize( (hypre_CSRMatrix *) matrix ) );
60 }
61 
62 /*--------------------------------------------------------------------------
63  * HYPRE_CSRMatrixRead
64  *--------------------------------------------------------------------------*/
65 
66 HYPRE_CSRMatrix
HYPRE_CSRMatrixRead(char * file_name)67 HYPRE_CSRMatrixRead( char            *file_name )
68 {
69    return ( (HYPRE_CSRMatrix) hypre_CSRMatrixRead( file_name ) );
70 }
71 
72 /*--------------------------------------------------------------------------
73  * HYPRE_CSRMatrixPrint
74  *--------------------------------------------------------------------------*/
75 
76 void
HYPRE_CSRMatrixPrint(HYPRE_CSRMatrix matrix,char * file_name)77 HYPRE_CSRMatrixPrint( HYPRE_CSRMatrix  matrix,
78                       char            *file_name )
79 {
80    hypre_CSRMatrixPrint( (hypre_CSRMatrix *) matrix,
81                          file_name );
82 }
83 
84 /*--------------------------------------------------------------------------
85  * HYPRE_CSRMatrixGetNumRows
86  *--------------------------------------------------------------------------*/
87 
88 HYPRE_Int
HYPRE_CSRMatrixGetNumRows(HYPRE_CSRMatrix matrix,HYPRE_Int * num_rows)89 HYPRE_CSRMatrixGetNumRows( HYPRE_CSRMatrix matrix, HYPRE_Int *num_rows )
90 {
91    hypre_CSRMatrix *csr_matrix = (hypre_CSRMatrix *) matrix;
92 
93    *num_rows =  hypre_CSRMatrixNumRows( csr_matrix );
94 
95    return 0;
96 }
97 
98