ergo
Main Page
Namespaces
Classes
Files
File List
File Members
grid_matrix.h
Go to the documentation of this file.
1
/* Ergo, version 3.2, a program for linear scaling electronic structure
2
* calculations.
3
* Copyright (C) 2012 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
#if !defined(_GRID_MATRIX_H_)
28
#define _GRID_MATRIX_H_ 1
29
30
#include "
sparse_matrix.h
"
31
32
namespace
Dft {
35
class
Matrix
{
36
public
:
37
virtual
ergo_real
at
(
int
row,
int
col)
const
= 0;
38
virtual
bool
isSparse
()
const
= 0;
39
virtual
const
SparseMatrix
*
asSparse
()
const
= 0;
40
virtual
const
ergo_real
*
asFull
()
const
= 0;
41
virtual
~Matrix
() {}
42
};
43
44
class
FullMatrix
{
45
public
:
46
ergo_real
*
mat
;
47
int
nbast
;
48
bool
owned
;
49
explicit
FullMatrix
(
int
nbast_)
50
:
mat
(new
ergo_real
[nbast_*nbast_]),
nbast
(nbast_),
owned
(true)
51
{
52
for
(
int
i=
nbast
*
nbast
-1; i >=0; --i)
mat
[i] = 0.0;
53
}
54
FullMatrix
(
ergo_real
*m,
int
nbast_)
55
:
mat
(m),
nbast
(nbast_),
owned
(false)
56
{
57
}
59
FullMatrix
(
const
ergo_real
*m,
int
nbast_)
60
:
mat
( (
ergo_real
*)(m)),
nbast
(nbast_),
owned
(false)
61
{
62
}
63
64
~FullMatrix
() {
if
(
owned
&&
mat
)
delete
[]
mat
; }
65
void
add
(
int
row,
int
col,
ergo_real
val)
66
{
67
mat
[row + col*
nbast
] += val;
68
}
69
ergo_real
at
(
int
row,
int
col)
const
70
{
71
return
mat
[row + col*
nbast
];
72
}
73
};
74
75
};
76
77
#endif
/* _GRID_MATRIX_H_ */
source
dft
grid_matrix.h
Generated on Wed Nov 21 2012 09:33:42 for ergo by
1.8.1.1