ergo
integral_matrix_wrappers.h
Go to the documentation of this file.
1/* Ergo, version 3.8, a program for linear scaling electronic structure
2 * calculations.
3 * Copyright (C) 2019 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
47int
48compute_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
57int
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
68int
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
89int
91 const IntegralInfo& integralInfo,
92 ergo_real threshold,
93 ergo_real boxSize,
94 symmMatrix & T,
95 std::vector<int> const & permutationHML);
96
97
98int
100 symmMatrix & S_symm,
101 std::vector<int> const & permutationHML);
102
103
107int
108compute_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
116int
118 int pow_x,
119 int pow_y,
120 int pow_z,
121 symmMatrix & A_symm,
122 std::vector<int> const & permutationHML);
123
124
125int
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
134int
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
144int
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
Code for setting up basis functions starting from shells.
Contains coefficients needed for quick integral evaluation.
Definition: integral_info.h:94
Representation of a molecule as a set of nuclei and total charge.
Definition: molecule.h:87
Describes dimensions of matrix and its blocks on all levels.
Definition: SizesAndBlocks.h:45
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
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_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
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_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
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
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_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
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_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
Parameters related to integral evaluation.
Header file with typedefs for matrix and vector types.
double ergo_real
Definition: realtype.h:69
Definition: basisinfo.h:112
Definition: integral_info.h:148
Definition: integrals_2el.h:45
MatrixSymmetric< real, matri > symmMatrix
Definition: test_LanczosSeveralLargestEig.cc:69
MatrixGeneral< real, matri > normalMatrix
Definition: test_LanczosSeveralLargestEig.cc:71