ergo
integrals_2el_J_mm_kernel.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 
38 #ifndef INTEGRALS_2EL_J_MM_KERNEL_HEADER
39 #define INTEGRALS_2EL_J_MM_KERNEL_HEADER
40 
41 #include "organize_distrs_mm.h"
42 #include "integrals_2el_utils.h"
43 
44 int
46  const multipole_struct_large & branchMultipole,
47  const multipole_struct_small* multipoleList_1,
48  ergo_real* result_J_list, // NULL if not used
49  ResultMatContrib* resultMatContrib, // NULL if not used
50  ergo_real threshold,
51  int* largest_L_used_so_far, // optional output, NULL if not used
52  MMInteractor & interactor,
53  const MMLimitTable & mmLimitTable
54  );
55 
56 #endif
basis_func_pair_struct::index_2
int index_2
Definition: organize_distrs.h:84
template_blas_sqrt
Treal template_blas_sqrt(Treal x)
do_multipole_interaction_between_2_boxes_branches
int do_multipole_interaction_between_2_boxes_branches(const distr_list_description_struct &distrDescription_1, const multipole_struct_large &branchMultipole, const multipole_struct_small *multipoleList_1, ergo_real *result_J_list, ResultMatContrib *resultMatContrib, ergo_real threshold, int *largest_L_used_so_far, MMInteractor &interactor, const MMLimitTable &mmLimitTable)
Definition: integrals_2el_J_mm_kernel.cc:41
basis_func_pair_struct::pairIndex
int pairIndex
Definition: organize_distrs.h:89
distr_list_description_struct::org_mm
distr_org_mm_struct org_mm
Definition: organize_distrs_mm.h:65
MAX_MULTIPOLE_DEGREE_BASIC
#define MAX_MULTIPOLE_DEGREE_BASIC
Definition: multipole_prep.h:48
distr_org_struct::minimalDistrList
std::vector< minimal_distr_struct > minimalDistrList
Definition: organize_distrs.h:122
multipole_struct_large::centerCoords
ergo_real centerCoords[3]
Definition: multipole_prep.h:53
ergo_real
double ergo_real
Definition: realtype.h:69
distr_org_struct::batchList
std::vector< batch_struct > batchList
Definition: organize_distrs.h:125
distr_group_struct
Definition: organize_distrs.h:51
MMInteractor
Definition: multipole.h:69
ResultMatContrib::addContrib
void addContrib(int row, int col, ergo_real value)
Definition: integrals_2el_utils.cc:67
batch_struct::basisFuncPairListIndex
int basisFuncPairListIndex
Definition: organize_distrs.h:107
distr_group_struct::centerCoords
ergo_real centerCoords[3]
Definition: organize_distrs.h:55
minimal_distr_struct
Definition: organize_distrs.h:65
distr_org_struct::groupList
std::vector< distr_group_struct > groupList
Definition: organize_distrs.h:123
distr_org_struct::clusterList
std::vector< cluster_struct > clusterList
Definition: organize_distrs.h:124
B
#define B
cluster_struct
Definition: organize_distrs.h:72
multipole_struct_large::momentList
ergo_real momentList[MAX_NO_OF_MOMENTS_PER_MULTIPOLE]
Definition: multipole_prep.h:56
distr_group_struct::distrCount
int distrCount
Definition: organize_distrs.h:53
MMInteractor::getInteractionMatrix
int getInteractionMatrix(ergo_real dx, ergo_real dy, ergo_real dz, int l_1, int l_2, ergo_real *result_T)
Definition: multipole.cc:293
multipole_struct_large
Definition: multipole_prep.h:52
cluster_struct::noOfGroups
int noOfGroups
Definition: organize_distrs.h:76
MMLimitTable
Definition: mm_limit_table.h:45
integrals_2el_utils.h
Code for various utilities used by 2-electron integral computation (i.e. computation of J and K matri...
MAX_NO_OF_MOMENTS_PER_MULTIPOLE
#define MAX_NO_OF_MOMENTS_PER_MULTIPOLE
Definition: multipole_prep.h:46
distr_list_description_struct::org
distr_org_struct org
Definition: organize_distrs_mm.h:64
A
#define A
batch_struct
Definition: organize_distrs.h:103
multipole_struct_small::noOfMoments
int noOfMoments
Definition: multipole_prep.h:65
basis_func_pair_struct
Definition: organize_distrs.h:82
integrals_2el_J_mm_kernel.h
Code for multipole method computational kernel for computing the Coulomb matrix J.
basis_func_pair_struct::index_1
int index_1
Definition: organize_distrs.h:83
ResultMatContrib
Definition: integrals_2el_utils.h:52
minimal_distr_struct::basisFuncPairIndex
int basisFuncPairIndex
Definition: organize_distrs.h:66
multipole_struct_small::degree
int degree
Definition: multipole_prep.h:64
multipole_struct_small
Definition: multipole_prep.h:62
distr_list_description_struct
Definition: organize_distrs_mm.h:63
distr_org_struct::basisFuncPairList
std::vector< basis_func_pair_struct > basisFuncPairList
Definition: organize_distrs.h:126
MMLimitTable::get_minimum_multipole_degree_needed
int get_minimum_multipole_degree_needed(ergo_real distance, const multipole_struct_large *boxMultipole, int maxDegreeForDistrs, const ergo_real *maxMomentVectorNormForDistrsList, ergo_real threshold) const
Definition: mm_limit_table.cc:220
multipole_struct_small::momentList
ergo_real momentList[MAX_NO_OF_MOMENTS_PER_MULTIPOLE_BASIC]
Definition: multipole_prep.h:66
distr_org_mm_struct::multipoleListForGroups
std::vector< multipole_struct_small > multipoleListForGroups
Definition: organize_distrs_mm.h:47
distr_group_struct::startIndex
int startIndex
Definition: organize_distrs.h:52
batch_struct::clusterStartIndex
int clusterStartIndex
Definition: organize_distrs.h:104
batch_struct::noOfClusters
int noOfClusters
Definition: organize_distrs.h:105
batch_struct::noOfBasisFuncPairs
int noOfBasisFuncPairs
Definition: organize_distrs.h:106
do_multipole_interaction_between_2_boxes_branches
int do_multipole_interaction_between_2_boxes_branches(const distr_list_description_struct &distrDescription_1, const multipole_struct_large &branchMultipole, const multipole_struct_small *multipoleList_1, ergo_real *result_J_list, ResultMatContrib *resultMatContrib, ergo_real threshold, int *largest_L_used_so_far, MMInteractor &interactor, const MMLimitTable &mmLimitTable)
Definition: integrals_2el_J_mm_kernel.cc:41
organize_distrs_mm.h
Code for organizing a given set of primitive Gaussian distributions (typically coming from basis func...
cluster_struct::groupStartIndex
int groupStartIndex
Definition: organize_distrs.h:75