ergo
|
Code for computing the Hartree-Fock exchange matrix K. More...
#include <string.h>
#include <stdio.h>
#include "integrals_2el_K.h"
#include "integrals_2el_utils.h"
#include "integrals_hermite.h"
#include "mm_limit_table.h"
#include "pi.h"
#include "pthread.h"
#include "utilities.h"
#include "matrix_algebra.h"
#include "integrals_2el_util_funcs.h"
#include "integrals_2el_K_kernel.h"
#include "integrals_2el_K_prep_groups.h"
Classes | |
struct | job_list_entry_K_struct |
struct | K_joblist_thread_struct |
struct | basisFuncGroupPairStruct |
struct | dmatElementStruct |
Functions | |
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) |
static void * | execute_joblist_K_thread_func (void *arg) |
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) |
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) |
static int | compare_basisFuncGroupPairs (const void *p1, const void *p2) |
static int | get_basisFuncGroupInfoList_maxsize (int distrCountTot, const DistributionSpecStructLabeled *distrList, int numberOfLevels, const int *levelStartIndexList, const int *levelCounterList, const box_struct *boxList, int **basisFuncGroupList) |
static int | compare_dmatElements (const void *p1, const void *p2) |
static int | create_reduced_vector (int nvalues, const std::vector< dmatElementStruct > &dmatElementList, std::vector< dmatElementStruct > &resultVector) |
static int | getDmatLimitMatrixCSRList (csr_matrix_struct *dmatLimitMatrixCSRList, int numberOfLevels, const csr_matrix_struct *densCSR, const int *const *basisFuncGroupList, const int *basisFuncGroupCounterList) |
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) |
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) |
Variables | |
static const int | HUGE_INTEGER_NUMBER = 2000000000 |
Code for computing the Hartree-Fock exchange matrix K.
|
static |
References basisFuncGroupPairStruct::i1, and basisFuncGroupPairStruct::i2.
Referenced by get_basisFuncGroupInfoList_maxsize().
|
static |
References dmatElementStruct::i1, and dmatElementStruct::i2.
Referenced by getDmatLimitMatrixCSRList().
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 | ||
) |
References A, box_struct::basicBox, DistributionSpecStructLabeled::basisFuncIndex_1, DistributionSpecStructLabeled::basisFuncIndex_2, BasisInfoStruct::basisFuncList, BoxSystem::boxList, BasisFuncStruct::centerCoords, compute_extent_for_list_of_distributions(), compute_multipole_moments(), BoxSystem::create_box_system(), create_box_system_and_reorder_distrs(), create_joblist_exchange_for_two_boxes_recursive(), distr_org_struct::data, DistributionSpecStructLabeled::distr, box_struct::distrListForK, do_output(), ergo_CSR_destroy(), ergo_CSR_get_max_abs_element(), JK::Params::exchange_box_size, execute_joblist_K_serial(), execute_joblist_K_threaded(), box_struct_basic::firstChildBoxIndex, box_struct_basic::firstItemIndex, get_basisFuncGroupInfoList_maxsize(), get_list_of_labeled_distrs(), get_list_of_labeled_distrs_maxLimitingFactor(), getDmatLimitMatrixCSRList(), HUGE_INTEGER_NUMBER, BoxSystem::levelList, DistributionSpecStructLabeled::limitingFactor, LOG_AREA_INTEGRALS, LOG_CAT_ERROR, LOG_CAT_INFO, MAX_MULTIPOLE_DEGREE_BASIC, distr_org_struct::Data::maxDistanceOutsideBox, BasisInfoStruct::noOfBasisFuncs, box_level_struct::noOfBoxes, box_struct_basic::noOfChildBoxes, box_struct_basic::noOfItems, BoxSystem::noOfLevels, JK::Params::noOfThreads_K, distr_list_description_struct::org, organize_distributions(), output_current_memory_usage(), prep_info_for_K(), Util::TimeMeter::print(), box_level_struct::startIndexInBoxList, template_blas_sqrt(), JK::Params::threshold_K, and BoxSystem::totNoOfBoxes.
Referenced by compute_K_by_boxes_dense(), compute_K_by_boxes_sparse(), and compute_K_by_boxes_sparse_nosymm().
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 | ||
) |
|
static |
References box_struct::basicBox, distr_org_struct::basisFuncGroupInfoListForK, job_list_entry_K_struct::boxIndex_1, job_list_entry_K_struct::boxIndex_2, box_struct_basic::centerCoords, distr_org_struct::data, job_list_entry_K_struct::distance, distance(), box_struct::distrListForK, do_output(), ergo_CSR_get_element(), box_struct_basic::firstChildBoxIndex, MMLimitTable::get_max_abs_mm_contrib(), IntegralInfo::GetMMLimitTable(), LOG_AREA_INTEGRALS, LOG_CAT_ERROR, distr_org_struct::Data::maxDistanceOutsideBox, box_struct_basic::noOfChildBoxes, distr_list_description_struct::org, template_blas_fabs(), template_blas_sqrt(), job_list_entry_K_struct::useMultipole, and box_struct_basic::width.
Referenced by compute_K_by_boxes().
|
static |
References template_blas_fabs().
Referenced by getDmatLimitMatrixCSRList().
|
static |
References allocate_buffers_needed_by_integral_code(), job_list_entry_K_struct::boxIndex_1, job_list_entry_K_struct::boxIndex_2, job_list_entry_K_struct::distance, box_struct::distrListForK, do_output(), free_buffers_needed_by_integral_code(), get_K_contribs_from_2_interacting_boxes(), LOG_AREA_INTEGRALS, LOG_CAT_ERROR, distr_list_description_struct::org, and job_list_entry_K_struct::useMultipole.
Referenced by compute_K_by_boxes().
|
static |
References allocate_buffers_needed_by_integral_code(), K_joblist_thread_struct::basisFuncListCount_max, job_list_entry_K_struct::boxIndex_1, job_list_entry_K_struct::boxIndex_2, K_joblist_thread_struct::boxList, K_joblist_thread_struct::CAM_params, K_joblist_thread_struct::densCSR, job_list_entry_K_struct::distance, box_struct::distrListForK, do_output(), do_output_time(), free_buffers_needed_by_integral_code(), get_K_contribs_from_2_interacting_boxes(), K_joblist_thread_struct::integralInfo, K_joblist_thread_struct::jobList_K, K_joblist_thread_struct::K_CSR_shared, LOG_AREA_INTEGRALS, LOG_CAT_ERROR, K_joblist_thread_struct::maxNoOfMonomials, K_joblist_thread_struct::noOfJobs_K_total, K_joblist_thread_struct::noOfThreads, distr_list_description_struct::org, K_joblist_thread_struct::resultCode, K_joblist_thread_struct::symmetryFlag, K_joblist_thread_struct::thread_ID, K_joblist_thread_struct::threshold, and job_list_entry_K_struct::useMultipole.
Referenced by execute_joblist_K_threaded().
|
static |
References K_joblist_thread_struct::basisFuncListCount_max, K_joblist_thread_struct::boxList, K_joblist_thread_struct::densCSR, do_output(), execute_joblist_K_thread_func(), K_joblist_thread_struct::integralInfo, K_joblist_thread_struct::jobList_K, K_joblist_thread_struct::K_CSR_shared, LOG_AREA_INTEGRALS, LOG_CAT_ERROR, LOG_CAT_INFO, K_joblist_thread_struct::maxNoOfMonomials, K_joblist_thread_struct::noOfJobs_K_total, K_joblist_thread_struct::noOfThreads, output_current_memory_usage(), K_joblist_thread_struct::resultCode, K_joblist_thread_struct::symmetryFlag, and K_joblist_thread_struct::threshold.
Referenced by compute_K_by_boxes().
|
static |
|
static |
|
static |
Referenced by compute_K_by_boxes().