ergo
Main Page
Namespaces
Classes
Files
File List
File Members
matrix_typedefs.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
34
#ifndef MATRIX_TYPEDEFS_HEADER
35
#define MATRIX_TYPEDEFS_HEADER
36
37
38
#include "
realtype.h
"
39
40
#include "
Matrix.h
"
41
#include "
Vector.h
"
42
#include "
MatrixSymmetric.h
"
43
#include "
MatrixTriangular.h
"
44
#include "
MatrixGeneral.h
"
45
#include "
VectorGeneral.h
"
46
#include "
gblas.h
"
47
48
49
// Matrix typedefs for different levels
50
typedef
mat::Matrix<ergo_real, ergo_real>
Mat_1
;
51
typedef
mat::Matrix<ergo_real, Mat_1 >
Mat_2
;
52
typedef
mat::Matrix<ergo_real, Mat_2 >
Mat_3
;
53
typedef
mat::Matrix<ergo_real, Mat_3 >
Mat_4
;
54
typedef
mat::Matrix<ergo_real, Mat_4 >
Mat_5
;
55
56
// Vector typedefs for different levels
57
typedef
mat::Vector<ergo_real, ergo_real>
Vec_1
;
58
typedef
mat::Vector<ergo_real, Vec_1 >
Vec_2
;
59
typedef
mat::Vector<ergo_real, Vec_2 >
Vec_3
;
60
typedef
mat::Vector<ergo_real, Vec_3 >
Vec_4
;
61
typedef
mat::Vector<ergo_real, Vec_4 >
Vec_5
;
62
63
// perm and matri are the types actually used.
64
// This is the point where we choose how many levels to use.
65
#define MATLEVEL 5
66
typedef
Mat_5
Matri
;
67
typedef
Vec_5
Vectorrr
;
68
69
// The typedefs for symmMatrix, triangMatrix, normalMatrix
70
// are the same regardless of how many levels are used.
71
typedef
mat::MatrixSymmetric<ergo_real, Matri>
symmMatrix
;
72
typedef
mat::MatrixTriangular<ergo_real, Matri>
triangMatrix
;
73
typedef
mat::MatrixGeneral<ergo_real, Matri>
normalMatrix
;
74
typedef
mat::VectorGeneral<ergo_real, Vectorrr>
generalVector
;
75
76
typedef
mat::Interval<ergo_real>
intervalType
;
77
78
#endif
source
matrix_typedefs.h
Generated on Fri Feb 15 2013 23:35:36 for ergo by
1.8.3.1