integrals_2el_exchange.cc File Reference

#include <string.h>
#include <stdio.h>
#include "integrals_2el_exchange.h"
#include "integrals_2el_utils.h"
#include "mm_limit_table.h"
#include "pi.h"
#include "pthread.h"
#include "utilities.h"

Classes

struct  job_list_entry_K_struct
struct  abcd_struct
struct  K_joblist_thread_struct
struct  basisFuncGroupPairStruct
struct  dmatElementStruct

Defines

#define set_abcd_list_item_macro(i, A, B, C, D, v, i1, i2)   list[i].a = A; list[i].b = B; list[i].c = C; list[i].d = D; list[i].densValue = v; list[i].idx1 = i1; list[i].idx2 = i2;

Functions

static int ergo_csr_find_index_inline (const csr_matrix_struct *csr, int row, int col)
static ergo_real ergo_CSR_get_element_inline (const csr_matrix_struct *csr, int row, int col)
static int get_K_contribs_from_2_interacting_boxes (const BasisInfoStruct &basisInfo, const IntegralInfo *integralInfo, const JK::ExchWeights &CAM_params, int maxNoOfMonomials, ergo_real *K, csr_matrix_struct *K_CSR_shared, const ergo_real *dens, const csr_matrix_struct *dens_CSR, int symmetryFlag, const minimal_distr_struct *minimalDistrList_1, int noOfGroups_1, const distr_group_struct *groupList_1, const minimal_distr_struct *minimalDistrList_2, int noOfGroups_2, const distr_group_struct *groupList_2, const cluster_struct *clusterList_1, int nClusters_1, const cluster_struct *clusterList_2, int nClusters_2, const chunk_struct *chunkList_1, int nChunks_1, const chunk_struct *chunkList_2, int nChunks_2, const basis_func_pair_struct *basisFuncPairList_1, const basis_func_pair_struct *basisFuncPairList_2, int interactionWithSelf, ergo_real threshold, JK_contribs_buffer_struct *bufferStructPtr, int use_multipole_screening_for_clusters, ergo_real boxDistance, const int *basisFuncListForChunks_1, const int *basisFuncListForChunks_map_1, const int *basisFuncListForChunks_2, const int *basisFuncListForChunks_map_2, const int *basisFuncList_1, int basisFuncList_1_count, const int *basisFuncList_2, int basisFuncList_2_count)
static int create_joblist_exchange_for_two_boxes_recursive (const BasisInfoStruct &basisInfo, 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, const ergo_real *dens, csr_matrix_struct *densCSR, const BasisInfoStruct &basisInfo, 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, ergo_real *K, csr_matrix_struct *K_CSR, int symmetryFlag)
static int execute_joblist_K_serial (const ergo_real *dens, csr_matrix_struct *densCSR, const BasisInfoStruct &basisInfo, 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, ergo_real *K, csr_matrix_struct *K_CSR, int symmetryFlag)
static int compare_basisFuncGroupPairs (const void *p1, const void *p2)
static int get_basisFuncGroupInfoList_size (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, ergo_real *K, csr_matrix_struct *K_CSR, const ergo_real *dens, csr_matrix_struct *densCSR, int symmetryFlag)

Variables

static const int HUGE_INTEGER_NUMBER = 2000000000
pthread_mutex_t K_CSR_shared_access_mutex = PTHREAD_MUTEX_INITIALIZER

Define Documentation

#define set_abcd_list_item_macro ( i,
A,
B,
C,
D,
v,
i1,
i2   )     list[i].a = A; list[i].b = B; list[i].c = C; list[i].d = D; list[i].densValue = v; list[i].idx1 = i1; list[i].idx2 = i2;


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,
ergo_real K,
csr_matrix_struct K_CSR,
const ergo_real dens,
csr_matrix_struct densCSR,
int  symmetryFlag 
)

static int create_joblist_exchange_for_two_boxes_recursive ( const BasisInfoStruct basisInfo,
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 ergo_csr_find_index_inline ( const csr_matrix_struct csr,
int  row,
int  col 
) [inline, static]

static ergo_real ergo_CSR_get_element_inline ( const csr_matrix_struct csr,
int  row,
int  col 
) [inline, static]

static int execute_joblist_K_serial ( const ergo_real dens,
csr_matrix_struct densCSR,
const BasisInfoStruct basisInfo,
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,
ergo_real K,
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,
const ergo_real dens,
csr_matrix_struct densCSR,
const BasisInfoStruct basisInfo,
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,
ergo_real K,
csr_matrix_struct K_CSR,
int  symmetryFlag 
) [static]

static int get_basisFuncGroupInfoList_size ( int  distrCountTot,
const DistributionSpecStructLabeled distrList,
int  numberOfLevels,
const int *  levelStartIndexList,
const int *  levelCounterList,
const box_struct boxList,
int **  basisFuncGroupList 
) [static]

static int get_K_contribs_from_2_interacting_boxes ( const BasisInfoStruct basisInfo,
const IntegralInfo integralInfo,
const JK::ExchWeights CAM_params,
int  maxNoOfMonomials,
ergo_real K,
csr_matrix_struct K_CSR_shared,
const ergo_real dens,
const csr_matrix_struct dens_CSR,
int  symmetryFlag,
const minimal_distr_struct minimalDistrList_1,
int  noOfGroups_1,
const distr_group_struct groupList_1,
const minimal_distr_struct minimalDistrList_2,
int  noOfGroups_2,
const distr_group_struct groupList_2,
const cluster_struct clusterList_1,
int  nClusters_1,
const cluster_struct clusterList_2,
int  nClusters_2,
const chunk_struct chunkList_1,
int  nChunks_1,
const chunk_struct chunkList_2,
int  nChunks_2,
const basis_func_pair_struct basisFuncPairList_1,
const basis_func_pair_struct basisFuncPairList_2,
int  interactionWithSelf,
ergo_real  threshold,
JK_contribs_buffer_struct bufferStructPtr,
int  use_multipole_screening_for_clusters,
ergo_real  boxDistance,
const int *  basisFuncListForChunks_1,
const int *  basisFuncListForChunks_map_1,
const int *  basisFuncListForChunks_2,
const int *  basisFuncListForChunks_map_2,
const int *  basisFuncList_1,
int  basisFuncList_1_count,
const int *  basisFuncList_2,
int  basisFuncList_2_count 
) [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]

pthread_mutex_t K_CSR_shared_access_mutex = PTHREAD_MUTEX_INITIALIZER


Generated on Wed Nov 21 09:32:40 2012 for ergo by  doxygen 1.4.7