ergo
csr_matrix.h
Go to the documentation of this file.
1 /* Ergo, version 3.4, a program for linear scaling electronic structure
2  * calculations.
3  * Copyright (C) 2014 Elias Rudberg, Emanuel H. Rubensson, and Pawel Salek.
4  *
5  * This program is free software: you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation, either version 3 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program. If not, see <http://www.gnu.org/licenses/>.
17  *
18  * Primary academic reference:
19  * Kohn−Sham Density Functional Theory Electronic Structure Calculations
20  * with Linearly Scaling Computational Time and Memory Usage,
21  * Elias Rudberg, Emanuel H. Rubensson, and Pawel Salek,
22  * J. Chem. Theory Comput. 7, 340 (2011),
23  * <http://dx.doi.org/10.1021/ct100611z>
24  *
25  * For further information about Ergo, see <http://www.ergoscf.org>.
26  */
27 
28 #ifndef CSR_MATRIX_HEADER
29 #define CSR_MATRIX_HEADER
30 
31 #include "realtype.h"
32 
33 
34 typedef struct
35 {
39 
41 {
42  int n;
43  int nnz;
48 };
49 
50 
51 
53  int symmetryFlag,
54  int n,
55  int nnz,
56  int* rowind,
57  int* colind);
58 
60 
61 int ergo_CSR_copy(csr_matrix_struct* csrDest, const csr_matrix_struct* csrSource);
62 
64 
66  int row,
67  int col,
68  ergo_real value);
69 
71  int row,
72  int col);
73 
75 
77 
79  int* rowind,
80  int* colind,
81  ergo_real* values,
82  int nvalues);
83 
85  int row);
86 
88  int row,
89  int* colind,
90  ergo_real* values,
91  int nvalues);
92 
93 
94 
95 #endif
int n
Definition: csr_matrix.h:42
int ergo_CSR_copy(csr_matrix_struct *csrDest, const csr_matrix_struct *csrSource)
Definition: csr_matrix.cc:171
double ergo_real
Definition: realtype.h:53
int nnz
Definition: csr_matrix.h:43
ergo_real ergo_CSR_get_element(const csr_matrix_struct *csr, int row, int col)
Definition: csr_matrix.cc:268
ergo_real * elementList
Definition: csr_matrix.h:46
int * columnIndexList
Definition: csr_matrix.h:47
int ergo_CSR_add_to_element(csr_matrix_struct *csr, int row, int col, ergo_real value)
Definition: csr_matrix.cc:242
int firstElementIndex
Definition: csr_matrix.h:37
Definition: csr_matrix.h:40
ergo_real ergo_CSR_get_max_abs_element(const csr_matrix_struct *csr)
Definition: csr_matrix.cc:290
int ergo_CSR_get_values_singlerow(const csr_matrix_struct *csr, int row, int *colind, ergo_real *values, int nvalues)
Definition: csr_matrix.cc:348
int symmetryFlag
Definition: csr_matrix.h:44
int ergo_CSR_get_nvalues_singlerow(const csr_matrix_struct *csr, int row)
Definition: csr_matrix.cc:341
int ergo_CSR_get_nvalues(const csr_matrix_struct *csr)
Definition: csr_matrix.cc:304
Definition: csr_matrix.h:34
int ergo_CSR_get_values(const csr_matrix_struct *csr, int *rowind, int *colind, ergo_real *values, int nvalues)
Definition: csr_matrix.cc:311
int ergo_CSR_add_equal_structure(csr_matrix_struct *csrDest, const csr_matrix_struct *csrSource)
Definition: csr_matrix.cc:192
int noOfElementsInRow
Definition: csr_matrix.h:36
csr_matrix_row_struct * rowList
Definition: csr_matrix.h:45
int ergo_CSR_create(csr_matrix_struct *csr, int symmetryFlag, int n, int nnz, int *rowind, int *colind)
Definition: csr_matrix.cc:64
int ergo_CSR_destroy(csr_matrix_struct *csr)
Definition: csr_matrix.cc:161