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