Go to the documentation of this file.
37 #ifndef INTEGRALS_2EL_K_HEADER
38 #define INTEGRALS_2EL_K_HEADER
A few matrix algebra routines for dense matrices.
Treal template_blas_sqrt(Treal x)
const MMLimitTable & GetMMLimitTable() const
Definition: integral_info.h:110
ergo_real threshold_K
Definition: integrals_2el.h:48
Definition: integrals_2el_utils.h:71
int firstChildBoxIndex
Definition: box_system.h:59
int noOfLevels
Definition: box_system.h:74
static int get_basisFuncGroupInfoList_maxsize(int distrCountTot, const DistributionSpecStructLabeled *distrList, int numberOfLevels, const int *levelStartIndexList, const int *levelCounterList, const box_struct *boxList, int **basisFuncGroupList)
Definition: integrals_2el_K.cc:447
int noOfBasisFuncs
Definition: basisinfo.h:120
Constants for the number pi and some related numbers like sqrt(pi).
int get_list_of_labeled_distrs_maxLimitingFactor(const BasisInfoStruct &basisInfo, const IntegralInfo &integralInfo, ergo_real threshold, ergo_real *resultMaxLimitingFactor, ergo_real maxDensityMatrixElement)
Definition: integrals_2el_utils.cc:269
int compute_K_by_boxes_dense(const BasisInfoStruct &basisInfo, const IntegralInfo &integralInfo, const JK::ExchWeights &CAM_params_in, const JK::Params &J_K_params, ergo_real *K_dense, const ergo_real *D_dense, int symmetryFlag)
Definition: integrals_2el_K.cc:1161
const IntegralInfo * integralInfo
Definition: integrals_2el_K.cc:201
Compressed sparse row (CSR) matrix functionality.
K_joblist_thread_struct(int nBasisFuncsIn, const JK::ExchWeights &CAM_paramsIn)
Definition: integrals_2el_K.cc:215
static int execute_joblist_K_threaded(int noOfThreads, csr_matrix_struct *densCSR, int noOfBasisFuncs, const IntegralInfo &integralInfo, const JK::ExchWeights &CAM_params, int maxNoOfMonomials, int basisFuncListCount_max, const box_struct *boxList, const job_list_entry_K_struct *jobList_K, int noOfJobs_K, ergo_real threshold, csr_matrix_struct *K_CSR, int symmetryFlag)
Definition: integrals_2el_K.cc:284
int basisFuncIndex_1
Definition: basisinfo.h:59
#define MAX_MULTIPOLE_DEGREE_BASIC
Definition: multipole_prep.h:48
int totNoOfBoxes
Definition: box_system.h:73
#define LOG_CAT_ERROR
Definition: output.h:47
box_struct_basic basicBox
Definition: integrals_2el_utils.h:73
int noOfJobs_K_total
Definition: integrals_2el_K.cc:210
Definition: integrals_2el_K.cc:198
double ergo_real
Definition: realtype.h:69
box_struct_basic * boxList
Definition: box_system.h:76
int nBasisFuncs
Definition: integrals_2el_K.cc:200
int i2
Definition: integrals_2el_K.cc:425
int noOfBoxes
Definition: box_system.h:64
Definition: integrals_2el_K.cc:500
int ergo_CSR_create(csr_matrix_struct *csr, int symmetryFlag, int n, long nnz, const std::vector< int > &rowind, const std::vector< int > &colind)
Definition: csr_matrix.cc:75
Definition: basisinfo.h:112
csr_matrix_struct * K_CSR_shared
Definition: integrals_2el_K.cc:203
box_level_struct levelList[MAX_NO_OF_BOX_LEVELS]
Definition: box_system.h:75
int noOfItems
Definition: box_system.h:56
const csr_matrix_struct * densCSR
Definition: integrals_2el_K.cc:204
Definition: integrals_2el.h:45
Treal template_blas_fabs(Treal x)
int basisFuncIndex_2
Definition: basisinfo.h:60
static int getDmatLimitMatrixCSRList(csr_matrix_struct *dmatLimitMatrixCSRList, int numberOfLevels, const csr_matrix_struct *densCSR, const int *const *basisFuncGroupList, const int *basisFuncGroupCounterList)
Definition: integrals_2el_K.cc:572
int prep_info_for_K(int maxCount, distr_org_struct &org, int distrCountCurrBox, const ergo_real *multipoleNormVectorList, const int *multipoleDegreeList, const ergo_real *limitingFactorList, const int *basisFuncGroupList1, const int *basisFuncGroupList2)
Definition: integrals_2el_K_prep_groups.cc:40
int useMultipole
Definition: integrals_2el_K.cc:59
ergo_real centerCoords[3]
Definition: box_system.h:54
void compute_extent_for_list_of_distributions(int n, DistributionSpecStructLabeled *distrList, ergo_real threshold, ergo_real maxLimitingFactor, ergo_real maxabsDmatelement)
Definition: integrals_2el_utils.cc:252
int resultCode
Definition: integrals_2el_K.cc:213
void allocate_buffers_needed_by_integral_code(const IntegralInfo &integralInfo, int maxNoOfMonomials, int basisFuncListCount_max, JK_contribs_buffer_struct *bufferStruct)
Definition: integrals_2el_utils.cc:126
ergo_real x
Definition: integrals_2el_K.cc:503
ergo_real exchange_box_size
Definition: integrals_2el.h:59
int boxIndex_1
Definition: integrals_2el_K.cc:57
int create_box_system_and_reorder_distrs(int distrCount, DistributionSpecStructLabeled *distrList, ergo_real toplevelBoxSize, BoxSystem &boxSystem)
Definition: integrals_2el_utils.cc:508
static int compare_dmatElements(const void *p1, const void *p2)
Definition: integrals_2el_K.cc:507
Code for utility functions used by 2-electron integral computation (i.e. computation of J and K matri...
int compute_K_by_boxes(const BasisInfoStruct &basisInfo, const IntegralInfo &integralInfo, const JK::ExchWeights &CAM_params_in, const JK::Params &J_K_params, csr_matrix_struct *K_CSR, csr_matrix_struct *densCSR, int symmetryFlag)
Definition: integrals_2el_K.cc:679
Definition: integrals_2el_K.cc:423
int startIndexInBoxList
Definition: box_system.h:65
Contains coefficients needed for quick integral evaluation.
Definition: integral_info.h:94
int n
Definition: csr_matrix.h:52
int symmetryFlag
Definition: integrals_2el_K.cc:214
int ergo_CSR_get_values_singlerow(const csr_matrix_struct *csr, int row, std::vector< int > &colind, std::vector< ergo_real > &values, int nvalues)
Definition: csr_matrix.cc:358
Definition: basisinfo.h:58
int i1
Definition: integrals_2el_K.cc:501
Code for various utilities used by 2-electron integral computation (i.e. computation of J and K matri...
Definition: csr_matrix.h:51
void print(int area, const char *routine)
Definition: utilities.h:111
int noOfThreads
Definition: integrals_2el_K.cc:212
Code for computational kernel for computing the Hartree-Fock exchange matrix K.
static int execute_joblist_K_serial(csr_matrix_struct *densCSR, const IntegralInfo &integralInfo, const JK::ExchWeights &CAM_params, int maxNoOfMonomials, int basisFuncListCount_max, const box_struct *boxList, const job_list_entry_K_struct *jobList_K, int noOfJobs_K, ergo_real threshold, csr_matrix_struct *K_CSR, int symmetryFlag)
Definition: integrals_2el_K.cc:376
int firstItemIndex
Definition: box_system.h:57
distr_org_struct org
Definition: organize_distrs_mm.h:64
int get_list_of_labeled_distrs(const BasisInfoStruct &basisInfo, const IntegralInfo &integralInfo, ergo_real threshold, DistributionSpecStructLabeled *resultList, int maxCountDistrs, ergo_real maxLimitingFactor, const ergo_real *dens, ergo_real maxDensityMatrixElement)
Definition: integrals_2el_utils.cc:369
distr_list_description_struct distrListForK
Definition: integrals_2el_utils.h:79
Basic OS access utilities.
void free_buffers_needed_by_integral_code(JK_contribs_buffer_struct *bufferStruct)
Definition: integrals_2el_utils.cc:152
ergo_real get_max_abs_mm_contrib(int degree1, const ergo_real *maxMomentVectorNormList1, int degree2, const ergo_real *maxMomentVectorNormList2, ergo_real distance) const
Definition: mm_limit_table.cc:196
int ergo_CSR_add_to_element(csr_matrix_struct *csr, int row, int col, ergo_real value)
Definition: csr_matrix.cc:252
#define LOG_CAT_INFO
Definition: output.h:49
int compute_K_by_boxes_dense(const BasisInfoStruct &basisInfo, const IntegralInfo &integralInfo, const JK::ExchWeights &CAM_params_in, const JK::Params &J_K_params, ergo_real *K_dense, const ergo_real *D_dense, int symmetryFlag)
Definition: integrals_2el_K.cc:1161
std::vector< basis_func_group_info_for_box > basisFuncGroupInfoListForK
Definition: organize_distrs.h:133
static int create_joblist_exchange_for_two_boxes_recursive(const IntegralInfo &integralInfo, int maxNoOfMonomials, ergo_real threshold, const box_struct *boxList, int numberOfLevels, const csr_matrix_struct *dmatLimitMatrixCSRList, const int *basisFuncGroupCounterList, int currLevel, int boxIndex_1, int boxIndex_2, job_list_entry_K_struct *jobList_K, int maxNoOfJobs)
Definition: integrals_2el_K.cc:65
Code for setting up basis functions starting from shells.
BasisFuncStruct * basisFuncList
Definition: basisinfo.h:121
Parameters related to integral evaluation.
Vector3D centerCoords
Definition: basisinfo.h:90
int ergo_CSR_get_nvalues_singlerow(const csr_matrix_struct *csr, int row)
Definition: csr_matrix.cc:351
Code for computation of Coulomb integrals of Hermite Gaussians, using the the McMurchie-Davidson sche...
#define LOG_AREA_INTEGRALS
Definition: output.h:60
Definition: integral_info.h:148
Code for preparing basis function group information to be used for computing the Hartree-Fock exchang...
int compute_multipole_moments(const IntegralInfo &integralInfo, const DistributionSpecStruct *distr, multipole_struct_small *result)
Definition: multipole.cc:49
int noOfChildBoxes
Definition: box_system.h:58
Definition: multipole_prep.h:62
static const int HUGE_INTEGER_NUMBER
Definition: integrals_2el_K.cc:53
ergo_real ergo_CSR_get_max_abs_element(const csr_matrix_struct *csr)
Definition: csr_matrix.cc:300
void do_output_time(int logCategory, int logArea, const char *s)
Definition: output.cc:159
void output_current_memory_usage(int logArea, const char *contextString)
Definition: output.cc:186
Definition: integrals_2el_utils.h:85
int basisFuncListCount_max
Definition: integrals_2el_K.cc:206
int get_K_contribs_from_2_interacting_boxes(const IntegralInfo &integralInfo, const JK::ExchWeights &CAM_params, int maxNoOfMonomials, csr_matrix_struct *result_K_CSR_shared, ResultMatContrib *resultMatContrib, const csr_matrix_struct *dens_CSR, int symmetryFlag, const distr_org_struct &distr_org_struct_1, const distr_org_struct &distr_org_struct_2, int interactionWithSelf, ergo_real threshold, JK_contribs_buffer_struct *bufferStructPtr, int use_multipole_screening_for_clusters, ergo_real boxDistance)
Definition: integrals_2el_K_kernel.cc:96
const job_list_entry_K_struct * jobList_K
Definition: integrals_2el_K.cc:209
int boxIndex_2
Definition: integrals_2el_K.cc:58
Definition: box_system.h:71
int compute_K_by_boxes(const BasisInfoStruct &basisInfo, const IntegralInfo &integralInfo, const JK::ExchWeights &CAM_params_in, const JK::Params &J_K_params, csr_matrix_struct *K_CSR, csr_matrix_struct *densCSR, int symmetryFlag)
Definition: integrals_2el_K.cc:679
static int compare_basisFuncGroupPairs(const void *p1, const void *p2)
Definition: integrals_2el_K.cc:430
int organize_distributions(const IntegralInfo &integralInfo, DistributionSpecStructLabeled *distrList_in, int distrCount, distr_org_struct *result, const ergo_real *boxCenterCoords, ergo_real boxWidth)
Definition: organize_distrs.cc:180
ergo_real width
Definition: box_system.h:55
static ergo_real distance(const ergo_real *a, const ergo_real *b)
Coomputes distance between two points, they do not need to be of the Vector3D type.
Definition: dft_common.cc:526
ergo_real ergo_CSR_get_element(const csr_matrix_struct *csr, int row, int col)
Definition: csr_matrix.cc:278
DistributionSpecStruct distr
Definition: basisinfo.h:65
int ergo_CSR_destroy(csr_matrix_struct *csr)
Definition: csr_matrix.cc:171
int i1
Definition: integrals_2el_K.cc:424
void do_output(int logCategory, int logArea, const char *format,...)
Definition: output.cc:53
MMLimitTable class used to predict the magnitude of contributions when using truncated multipole expa...
ergo_real maxDistanceOutsideBox
Definition: organize_distrs.h:136
static void * execute_joblist_K_thread_func(void *arg)
Definition: integrals_2el_K.cc:222
static int create_reduced_vector(int nvalues, const std::vector< dmatElementStruct > &dmatElementList, std::vector< dmatElementStruct > &resultVector)
Definition: integrals_2el_K.cc:525
Definition: integrals_2el_K.cc:56
int i2
Definition: integrals_2el_K.cc:502
pthread_t thread
Definition: integrals_2el_K.cc:199
ergo_real limitingFactor
Definition: basisinfo.h:63
int maxNoOfMonomials
Definition: integrals_2el_K.cc:205
Code for computing the Hartree-Fock exchange matrix K.
int noOfThreads_K
Definition: integrals_2el.h:61
const box_struct * boxList
Definition: integrals_2el_K.cc:208
Data data
Definition: organize_distrs.h:140
const JK::ExchWeights & CAM_params
Definition: integrals_2el_K.cc:202
Time-measuring class.
Definition: utilities.h:80
ergo_real threshold
Definition: integrals_2el_K.cc:207
int create_box_system(box_item_struct *itemList, int noOfItems, ergo_real toplevelBoxSize)
Creates the box system.
Definition: box_system.cc:74
ergo_real distance
Definition: integrals_2el_K.cc:60
int thread_ID
Definition: integrals_2el_K.cc:211