source/integrals/integrals_2el_K.cc File Reference

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

Detailed Description

Code for computing the Hartree-Fock exchange matrix K.

Author:
: Elias Rudberg responsible.

Function Documentation

static int compare_basisFuncGroupPairs ( const void *  p1,
const void *  p2 
) [static]
static int compare_dmatElements ( const void *  p1,
const void *  p2 
) [static]
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, 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 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]
static int create_reduced_vector ( int  nvalues,
const std::vector< dmatElementStruct > &  dmatElementList,
std::vector< dmatElementStruct > &  resultVector 
) [static]
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]
static void* execute_joblist_K_thread_func ( void *  arg  )  [static]
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]
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]
static int getDmatLimitMatrixCSRList ( csr_matrix_struct dmatLimitMatrixCSRList,
int  numberOfLevels,
const csr_matrix_struct densCSR,
const int *const *  basisFuncGroupList,
const int *  basisFuncGroupCounterList 
) [static]

Variable Documentation

const int HUGE_INTEGER_NUMBER = 2000000000 [static]

Referenced by compute_K_by_boxes().


Generated on 10 Jul 2018 for ergo by  doxygen 1.6.1