ergo
matrix_typedefs_chtml.h
Go to the documentation of this file.
1 /* Ergo, version 3.7, a program for linear scaling electronic structure
2  * calculations.
3  * Copyright (C) 2018 Elias Rudberg, Emanuel H. Rubensson, Pawel Salek,
4  * and Anastasia Kruchinina.
5  *
6  * This program is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program. If not, see <http://www.gnu.org/licenses/>.
18  *
19  * Primary academic reference:
20  * Ergo: An open-source program for linear-scaling electronic structure
21  * calculations,
22  * Elias Rudberg, Emanuel H. Rubensson, Pawel Salek, and Anastasia
23  * Kruchinina,
24  * SoftwareX 7, 107 (2018),
25  * <http://dx.doi.org/10.1016/j.softx.2018.03.005>
26  *
27  * For further information about Ergo, see <http://www.ergoscf.org>.
28  */
29 
38 #ifndef MATRIX_TYPEDEFS_CHTML_HEADER
39 #define MATRIX_TYPEDEFS_CHTML_HEADER
40 
41 #include "matrix_typedefs.h"
42 
43 #ifdef USE_CHUNKS_AND_TASKS
44 //#define USE_SYMMETRIC // TODO
45 #include "CHTMatrix.h"
46 #include "CHTGeneralMatrix.h"
47 #include "CHTSymmMatrix.h"
48 #include "CHTTriangMatrix.h"
49 
50 #if defined(USE_CHUNKS_AND_TASKS_BSM)
51 #include "block_sparse_matrix_lib.h"
52 #include "CHTMatrixParamsTypeBlockSparse.h"
53 typedef bsm::BlockSparseMatrix<ergo_real> LeafMatrixType;
54 typedef chtml::CHTMatrixParamsTypeBlockSparse<ergo_real> ParamsType;
55 #endif
56 
57 #if defined(USE_CHUNKS_AND_TASKS_HBSM)
58 #include "hierarchical_block_sparse_lib.h"
59 #include "CHTMatrixParamsTypeHierarchicalBlockSparse.h"
60 typedef hbsm::HierarchicalBlockSparseMatrix<ergo_real> LeafMatrixType;
61 typedef chtml::CHTMatrixParamsTypeHierarchicalBlockSparse<ergo_real> ParamsType;
62 #endif
63 
64 #if !defined(USE_CHUNKS_AND_TASKS_BSM) && !defined(USE_CHUNKS_AND_TASKS_HBSM)
65 #include "basic_matrix_lib.h"
66 #include "CHTMatrixParamsTypeFull.h"
67 typedef bml::FullMatrix<ergo_real> LeafMatrixType;
68 typedef chtml::CHTMatrixParamsTypeFull<ergo_real> ParamsType;
69 #endif
70 #ifdef USE_SYMMETRIC
71 typedef chtml::CHTSymmMatrix<ergo_real, ParamsType> symmMatrixWrap;
72 #else
73 typedef chtml::CHTGeneralMatrix<ergo_real, ParamsType> symmMatrixWrap;
74 #endif
75 typedef chtml::CHTGeneralMatrix<ergo_real, ParamsType> normalMatrixWrap;
76 typedef chtml::CHTTriangMatrix<ergo_real, ParamsType> triangMatrixWrap;
77 #else // not CHT
79 {
80 public:
82 };
87 #endif
88 
89 
90 
91 
92 #endif
triangMatrix triangMatrixWrap
Definition: matrix_typedefs_chtml.h:86
MatrixParamsType()
Definition: matrix_typedefs_chtml.h:81
MatrixSymmetric< real, matri > symmMatrix
Definition: test_LanczosSeveralLargestEig.cc:69
MatrixGeneral< real, matri > normalMatrix
Definition: test_LanczosSeveralLargestEig.cc:71
MatrixTriangular< real, matri > triangMatrix
Definition: test_LanczosSeveralLargestEig.cc:70
MatrixParamsType ParamsType
Definition: matrix_typedefs_chtml.h:83
Header file with typedefs for matrix and vector types.
Definition: matrix_typedefs_chtml.h:78
symmMatrix symmMatrixWrap
Definition: matrix_typedefs_chtml.h:84
normalMatrix normalMatrixWrap
Definition: matrix_typedefs_chtml.h:85