ergo
integral_matrix_wrappers.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 
39 #ifndef INTEGRAL_MATRIX_WRAPPERS_HEADER
40 #define INTEGRAL_MATRIX_WRAPPERS_HEADER
41 
42 #include "basisinfo.h"
43 #include "matrix_typedefs.h"
44 #include "integrals_2el.h"
45 
46 
47 int
48 compute_V_sparse(const BasisInfoStruct& basisInfo,
49  const IntegralInfo& integralInfo,
50  const Molecule& molecule,
51  ergo_real threshold,
52  ergo_real boxSize,
53  symmMatrix & V,
54  std::vector<int> const & permutationHML,
55  ergo_real & result_nuclearRepulsionEnergy);
56 
57 int
59  const IntegralInfo& integralInfo,
60  const Molecule& molecule,
61  ergo_real threshold,
62  ergo_real boxSize,
63  symmMatrix & V,
64  std::vector<int> const & permutationHML,
65  ergo_real & result_nuclearRepulsionEnergy);
66 
67 
68 int
70  const IntegralInfo& integralInfo,
71  const Molecule& molecule,
72  ergo_real threshold,
73  ergo_real boxSize,
74  const symmMatrix & densityMatrix_sparse,
75  std::vector<int> const & permutationHML,
76  ergo_real* result_gradient_list);
77 
78 
81  const Molecule& molecule,
82  const BasisInfoStruct& basisInfo,
83  const symmMatrix & D,
84  ergo_real threshold_integrals_1el,
85  mat::SizesAndBlocks const & matrix_size_block_info,
86  std::vector<int> const & permutationHML);
87 
88 
89 int
91  const IntegralInfo& integralInfo,
92  ergo_real threshold,
93  ergo_real boxSize,
94  symmMatrix & T,
95  std::vector<int> const & permutationHML);
96 
97 
98 int
100  symmMatrix & S_symm,
101  std::vector<int> const & permutationHML);
102 
103 
107 int
108 compute_R_matrix_sparse(const BasisInfoStruct & basisInfo_A,
109  const BasisInfoStruct & basisInfo_B,
110  normalMatrix & result_R,
111  ergo_real sparse_threshold,
112  std::vector<int> const & matrixPermutationVec_A,
113  std::vector<int> const & matrixPermutationVec_B);
114 
115 
116 int
118  int pow_x,
119  int pow_y,
120  int pow_z,
121  symmMatrix & A_symm,
122  std::vector<int> const & permutationHML);
123 
124 
125 int
127  const IntegralInfo& integralInfo,
128  const JK::Params& J_K_params,
129  symmMatrix & J,
130  const symmMatrix & densityMatrix_sparse,
131  std::vector<int> const & permutationHML);
132 
133 
134 int
136  const IntegralInfo& integralInfo,
137  const JK::ExchWeights & CAM_params,
138  const JK::Params& J_K_params,
139  symmMatrix & K,
140  symmMatrix & densityMatrix_sparse,
141  std::vector<int> const & permutationHML,
142  std::vector<int> const & inversePermutationHML);
143 
144 int
146  const IntegralInfo& integralInfo,
147  const JK::ExchWeights & CAM_params,
148  const JK::Params& J_K_params,
149  normalMatrix & K,
150  normalMatrix & densityMatrix_sparse,
151  std::vector<int> const & permutationHML,
152  std::vector<int> const & inversePermutationHML);
153 
154 
155 #endif
ergo_real get_electron_nuclear_attraction_energy(const IntegralInfo &integralInfo, const Molecule &molecule, const BasisInfoStruct &basisInfo, const symmMatrix &D, ergo_real threshold_integrals_1el, mat::SizesAndBlocks const &matrix_size_block_info, std::vector< int > const &permutationHML)
Definition: integral_matrix_wrappers.cc:304
double ergo_real
Definition: realtype.h:69
int compute_gradient_of_nucl_and_trDV(const BasisInfoStruct &basisInfo, const IntegralInfo &integralInfo, const Molecule &molecule, ergo_real threshold, ergo_real boxSize, const symmMatrix &densityMatrix_sparse, std::vector< int > const &permutationHML, ergo_real *result_gradient_list)
Definition: integral_matrix_wrappers.cc:237
Definition: integrals_2el.h:44
MatrixSymmetric< real, matri > symmMatrix
Definition: test_LanczosSeveralLargestEig.cc:69
Code for setting up basis functions starting from shells.
Describes dimensions of matrix and its blocks on all levels.
Definition: SizesAndBlocks.h:45
Representation of a molecule as a set of nuclei and total charge.
Definition: molecule.h:87
Definition: integral_info.h:147
MatrixGeneral< real, matri > normalMatrix
Definition: test_LanczosSeveralLargestEig.cc:71
int compute_K_by_boxes_sparse_nosymm(const BasisInfoStruct &basisInfo, const IntegralInfo &integralInfo, const JK::ExchWeights &CAM_params, const JK::Params &J_K_params, normalMatrix &K, normalMatrix &densityMatrix_sparse, std::vector< int > const &permutationHML, std::vector< int > const &inversePermutationHML)
Definition: integral_matrix_wrappers.cc:892
int compute_operator_matrix_sparse_symm(const BasisInfoStruct &basisInfo, int pow_x, int pow_y, int pow_z, symmMatrix &A_symm, std::vector< int > const &permutationHML)
Definition: integral_matrix_wrappers.cc:522
Contains coefficients needed for quick integral evaluation.
Definition: integral_info.h:93
int compute_V_sparse(const BasisInfoStruct &basisInfo, const IntegralInfo &integralInfo, const Molecule &molecule, ergo_real threshold, ergo_real boxSize, symmMatrix &V, std::vector< int > const &permutationHML, ergo_real &result_nuclearRepulsionEnergy)
Definition: integral_matrix_wrappers.cc:86
Definition: basisinfo.h:112
Header file with typedefs for matrix and vector types.
int compute_overlap_matrix_sparse(const BasisInfoStruct &basisInfo, symmMatrix &S_symm, std::vector< int > const &permutationHML)
Definition: integral_matrix_wrappers.cc:423
int compute_T_sparse_linear(const BasisInfoStruct &basisInfo, const IntegralInfo &integralInfo, ergo_real threshold, ergo_real boxSize, symmMatrix &T, std::vector< int > const &permutationHML)
Definition: integral_matrix_wrappers.cc:331
int compute_R_matrix_sparse(const BasisInfoStruct &basisInfo_A, const BasisInfoStruct &basisInfo_B, normalMatrix &result_R, ergo_real sparse_threshold, std::vector< int > const &matrixPermutationVec_A, std::vector< int > const &matrixPermutationVec_B)
compute_R_matrix_sparse computes the overlap matrix between two different basis sets.
Definition: integral_matrix_wrappers.cc:446
int compute_J_by_boxes_sparse(const BasisInfoStruct &basisInfo, const IntegralInfo &integralInfo, const JK::Params &J_K_params, symmMatrix &J, const symmMatrix &densityMatrix_sparse, std::vector< int > const &permutationHML)
Definition: integral_matrix_wrappers.cc:596
int compute_V_sparse_hierarchical(const BasisInfoStruct &basisInfo, const IntegralInfo &integralInfo, const Molecule &molecule, ergo_real threshold, ergo_real boxSize, symmMatrix &V, std::vector< int > const &permutationHML, ergo_real &result_nuclearRepulsionEnergy)
Definition: integral_matrix_wrappers.cc:168
Parameters related to integral evaluation.
int compute_K_by_boxes_sparse(const BasisInfoStruct &basisInfo, const IntegralInfo &integralInfo, const JK::ExchWeights &CAM_params, const JK::Params &J_K_params, symmMatrix &K, symmMatrix &densityMatrix_sparse, std::vector< int > const &permutationHML, std::vector< int > const &inversePermutationHML)
Returns the exchange matrix multiplied by 0.5.
Definition: integral_matrix_wrappers.cc:794