ergo
|
#include <cstring>
#include <cstdio>
#include <pthread.h>
#include "integrals_2el_coulomb.h"
#include "integrals_2el_utils.h"
#include "mm_limit_table.h"
#include "basis_func_pair_list.h"
#include "integrals_2el_repeating.h"
#include "integrals_general.h"
#include "utilities.h"
#include "pi.h"
Classes | |
struct | job_list_standard_entry_J_struct |
struct | job_list_multipole_entry_J_struct |
struct | abcd_struct |
struct | J_std_joblist_thread_struct |
struct | JFMMWorkerData |
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 | get_J_contribs_from_2_interacting_boxes_2 (const BasisInfoStruct &basisInfo, const IntegralInfo *integralInfo, int maxNoOfMonomials, ergo_real *result_J_list, 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) |
static 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, ergo_real threshold, int *largest_L_used_so_far, MMInteractor &interactor) |
static int | add_multipole_jobs_for_2_boxes_branches_recursive (int multipoleBoxIndex, int multipoleBranchIndex, int n, const box_struct *boxList, int boxIndex, int branchIndex, int numberOfLevels, int currLevel, job_list_multipole_entry_J_struct *jobList_multipole, int maxNoOfJobs_multipole) |
static ergo_real | get_min_distance_from_point_to_box (const ergo_real *boxCenterCoords, ergo_real halfwidth, const ergo_real *point) |
static int | get_joblists_J_for_two_boxes_recursive (const BasisInfoStruct &basisInfo, const IntegralInfo *integralInfo, int maxNoOfMonomials, ergo_real threshold, const box_struct *boxList, int numberOfLevels, int currLevel, int boxIndex_1, int boxIndex_2, int branchIndex_1, int branchIndex_2, job_list_standard_entry_J_struct *jobList_standard, int maxNoOfJobs_standard, int *noOfNewJobs_standard, job_list_multipole_entry_J_struct *jobList_multipole, int maxNoOfJobs_multipole, int *noOfNewJobs_multipole) |
static int | get_list_of_labeled_distrs_maxLimitingFactor_linear (const BasisInfoStruct &basisInfo, const IntegralInfo *integralInfo, ergo_real threshold, const basis_func_index_pair_struct *basisFuncIndexPairList, int basisFuncIndexPairCount, ergo_real *resultMaxLimitingFactor) |
static int | get_list_of_labeled_distrs_linear (const BasisInfoStruct &basisInfo, const IntegralInfo *integralInfo, ergo_real threshold, DistributionSpecStructLabeled *resultList, int maxCountDistrs, ergo_real maxLimitingFactor, const basis_func_index_pair_struct *basisFuncIndexPairList, int basisFuncIndexPairCount, const ergo_real *D_list) |
static int | compare_multipole_jobs (const void *p1, const void *p2) |
static void | get_largest_and_smallest_extent_for_list_of_distributions (int n, const DistributionSpecStructLabeled *distrList, ergo_real *result_extent_min, ergo_real *result_extent_max) |
static int | get_max_no_of_monomials_for_list_of_distributions (int n, const DistributionSpecStructLabeled *distrList, const IntegralInfo *integralInfo) |
static int | get_branch_splitter_info (ergo_real *branchSplitterList, int maxNoOfBranches, const JK::Params &J_K_params, ergo_real toplevelBoxSize, ergo_real extent_max) |
static int | create_branches (int noOfBranches, const ergo_real *branchSplitterList, int distrCount, DistributionSpecStructLabeled *distrListOrdered, int noOfBoxesTopLevel, box_struct *boxListTopLevel) |
static int | execute_joblist_J_std_serial (int noOfJobs_J_standard, const job_list_standard_entry_J_struct *jobList_J_standard, const BasisInfoStruct &basisInfo, const IntegralInfo *integralInfo, int maxNoOfMonomials, ergo_real *result_J_list, const box_struct *boxList, ergo_real threshold) |
static void * | execute_joblist_J_std_thread_func (void *arg) |
static int | execute_joblist_J_std_threaded (int noOfThreads, int noOfJobs_J_standard, const job_list_standard_entry_J_struct *jobList_J_standard, const BasisInfoStruct &basisInfo, const IntegralInfo *integralInfo, int maxNoOfMonomials, ergo_real *result_J_list, int noOfBasisFuncIndexPairs, const box_struct *boxList, ergo_real threshold) |
static int | sort_list_of_multipole_jobs_fixed_boxIndex (job_list_multipole_entry_J_struct *jobList, int n) |
static int | sort_list_of_multipole_jobs (job_list_multipole_entry_J_struct *jobList, int n) |
static int | execute_joblist_J_fmm_shared (int jobIndexLo, int jobIndexHi, const IntegralInfo &integralInfo, const BasisInfoStruct &basisInfo, const JK::Params &J_K_params, const job_list_multipole_entry_J_struct *jobList_J_multipole, const box_struct *boxList, int maxnoOfMinimalDistrsPerBoxBranch, ergo_real *result_J_list, int *largest_L_used) |
executes given jobList using FMM. | |
static int | execute_joblist_J_fmm_serial (const IntegralInfo &integralInfo, const BasisInfoStruct &basisInfo, const JK::Params &J_K_params, int noOfJobs_J_multipole, const job_list_multipole_entry_J_struct *jobList_J_multipole, const box_struct *boxList, int maxnoOfMinimalDistrsPerBoxBranch, ergo_real *result_J_list) |
static void * | execute_J_fmm_worker (void *arg) |
static int | execute_joblist_J_fmm_thread (int noOfThreads, int noOfBasisFuncIndexPairs, const IntegralInfo &integralInfo, const BasisInfoStruct &basisInfo, const JK::Params &J_K_params, int noOfJobs_J_multipole, const job_list_multipole_entry_J_struct *jobList_J_multipole, const box_struct *boxList, int maxnoOfMinimalDistrsPerBoxBranch, ergo_real *result_J_list) |
Compute the FMM part of the Coulomb matrix using threads. | |
int | compute_J_by_boxes_linear (const BasisInfoStruct &basisInfo, const IntegralInfo *integralInfo, const JK::Params &J_K_params, const basis_func_index_pair_struct *basisFuncIndexPairList, int basisFuncIndexPairCount, const ergo_real *D_list, ergo_real *result_J_list, int noOfBasisFuncIndexPairs) |
Computes the Coulomb interaction. | |
int | compute_J_by_boxes (const BasisInfoStruct &basisInfo, const IntegralInfo *integralInfo, const JK::Params &J_K_params, ergo_real *J, const ergo_real *dens) |
int | compute_J_by_boxes_nosymm (const BasisInfoStruct &basisInfo, const IntegralInfo *integralInfo, const JK::Params &J_K_params, ergo_real *J, const ergo_real *dens) |
Variables | |
static const int | HUGE_INTEGER_NUMBER = 2000000000 |
#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; |
Referenced by get_J_contribs_from_2_interacting_boxes_2().
static int add_multipole_jobs_for_2_boxes_branches_recursive | ( | int | multipoleBoxIndex, |
int | multipoleBranchIndex, | ||
int | n, | ||
const box_struct * | boxList, | ||
int | boxIndex, | ||
int | branchIndex, | ||
int | numberOfLevels, | ||
int | currLevel, | ||
job_list_multipole_entry_J_struct * | jobList_multipole, | ||
int | maxNoOfJobs_multipole | ||
) | [static] |
References do_output(), LOG_CAT_ERROR, LOG_AREA_INTEGRALS, job_list_multipole_entry_J_struct::boxIndex, job_list_multipole_entry_J_struct::branchIndex, job_list_multipole_entry_J_struct::multipoleBoxIndex, job_list_multipole_entry_J_struct::multipoleBranchIndex, box_struct::basicBox, box_struct_basic::noOfChildBoxes, and box_struct_basic::firstChildBoxIndex.
Referenced by get_joblists_J_for_two_boxes_recursive().
static int compare_multipole_jobs | ( | const void * | p1, |
const void * | p2 | ||
) | [static] |
int compute_J_by_boxes | ( | const BasisInfoStruct & | basisInfo, |
const IntegralInfo * | integralInfo, | ||
const JK::Params & | J_K_params, | ||
ergo_real * | J, | ||
const ergo_real * | dens | ||
) |
References BasisInfoStruct::noOfBasisFuncs, get_max_abs_vector_element(), get_basis_func_pair_list_2el(), JK::Params::threshold_J, do_output(), LOG_CAT_ERROR, LOG_AREA_INTEGRALS, LOG_CAT_INFO, and compute_J_by_boxes_linear().
Referenced by compute_J_by_boxes_nosymm(), compute_2e_matrix_list(), and compute_2e_matrix_coulomb().
int compute_J_by_boxes_linear | ( | const BasisInfoStruct & | basisInfo, |
const IntegralInfo * | integralInfo, | ||
const JK::Params & | J_K_params, | ||
const basis_func_index_pair_struct * | basisFuncIndexPairList, | ||
int | basisFuncIndexPairCount, | ||
const ergo_real * | D_list, | ||
ergo_real * | result_J_list, | ||
int | noOfBasisFuncIndexPairs | ||
) |
Computes the Coulomb interaction.
basisInfo | |
integralInfo | |
J_K_params | the evaluation parameters, thresholds and all. |
basisFuncIndexPairList | |
basisFuncIndexPairCount | the length of basisFuncIndexPairList. |
D_list | basisFuncIndexPairCount elements, with indices matching basisFuncIndexPairList. |
result_J_list | preallocated list that will contain the results. |
noOfBasisFuncIndexPairs | the length of result_J_list. happens to be always equal to basisFuncIndexPairCount |
References BasisInfoStruct::noOfBasisFuncs, do_output(), LOG_CAT_INFO, LOG_AREA_INTEGRALS, JK::Params::threshold_J, JK::Params::use_fmm, JK::Params::fmm_box_size, output_current_memory_usage(), init_multipole_code(), get_list_of_labeled_distrs_maxLimitingFactor_linear(), LOG_CAT_ERROR, get_list_of_labeled_distrs_linear(), get_max_abs_vector_element(), compute_extent_for_list_of_distributions(), get_largest_and_smallest_extent_for_list_of_distributions(), get_max_no_of_monomials_for_list_of_distributions(), create_box_system_and_reorder_distrs(), BoxSystem::totNoOfBoxes, BoxSystem::boxList, BoxSystem::noOfLevels, BoxSystem::levelList, box_level_struct::noOfBoxes, box_level_struct::startIndexInBoxList, MAX_NO_OF_BRANCHES, get_branch_splitter_info(), create_branches(), box_struct::branchIndexList, box_struct::branchCountList, organize_distributions(), box_struct::basicBox, box_struct_basic::width, box_struct::branchList, distr_list_description_struct::org, distr_org_struct::groupCount, distr_org_struct::minimalDistrCount, distr_org_struct::chunkList, distr_org_struct::clusterList, distr_org_struct::groupList, distr_org_struct::minimalDistrList, distr_org_struct::chunkCount, distr_org_struct::basisFuncPairList, distr_list_description_struct::maxMomentVectorNormForDistrsList, MAX_MULTIPOLE_DEGREE_BASIC, chunk_struct::noOfClusters, chunk_struct::clusterStartIndex, cluster_struct::groupStartIndex, cluster_struct::noOfGroups, distr_group_struct::multipolePtr, multipole_struct_small::degree, multipole_struct_small::noOfMoments, multipole_struct_small::centerCoords, distr_group_struct::centerCoords, multipole_struct_small::momentList, MAX_NO_OF_MOMENTS_PER_MULTIPOLE_BASIC, distr_group_struct::startIndex, distr_group_struct::distrCount, minimal_distr_struct::basisFuncPairIndex, minimal_distr_struct::monomialIndex, minimal_distr_struct::coeff, DistributionSpecStruct_::monomialInts, IntegralInfo::monomial_info, monomial_info_struct::monomial_list, monomial_struct::ix, monomial_struct::iy, monomial_struct::iz, DistributionSpecStruct_::coeff, DistributionSpecStruct_::exponent, distr_group_struct::exponent, DistributionSpecStruct_::centerCoords, compute_multipole_moments(), chunk_struct::basisFuncPairListIndex, basis_func_pair_struct::index_1, basis_func_pair_struct::index_2, basis_func_pair_struct::dmatElement, A, distr_list_description_struct::totCharge, box_struct::multipolePoint, box_struct_basic::centerCoords, MAX_MULTIPOLE_DEGREE, distr_list_description_struct::multipolePoint, MAX_NO_OF_MOMENTS_PER_MULTIPOLE, multipole_struct_large::momentList, multipole_struct_large::centerCoords, multipole_struct_large::degree, multipole_struct_large::noOfMoments, MMTranslator::getTranslationMatrix(), B, setup_multipole_maxAbsMomentList(), distr_list_description_struct::multipole, box_struct_basic::noOfChildBoxes, box_struct_basic::firstChildBoxIndex, distr_org_struct::maxExtent, distr_org_struct::maxDistanceOutsideBox, getSafeMaxDistance(), mm_limits_init(), get_joblists_J_for_two_boxes_recursive(), HUGE_INTEGER_NUMBER, JK::Params::noOfThreads_J, execute_joblist_J_std_serial(), execute_joblist_J_std_threaded(), sort_list_of_multipole_jobs(), execute_joblist_J_fmm_serial(), and execute_joblist_J_fmm_thread().
Referenced by compute_J_by_boxes(), and compute_J_by_boxes_sparse().
int compute_J_by_boxes_nosymm | ( | const BasisInfoStruct & | basisInfo, |
const IntegralInfo * | integralInfo, | ||
const JK::Params & | J_K_params, | ||
ergo_real * | J, | ||
const ergo_real * | dens | ||
) |
References BasisInfoStruct::noOfBasisFuncs, and compute_J_by_boxes().
Referenced by ErgoE2Evaluator::transform().
static int create_branches | ( | int | noOfBranches, |
const ergo_real * | branchSplitterList, | ||
int | distrCount, | ||
DistributionSpecStructLabeled * | distrListOrdered, | ||
int | noOfBoxesTopLevel, | ||
box_struct * | boxListTopLevel | ||
) | [static] |
References box_struct::basicBox, box_struct_basic::noOfItems, MAX_NO_OF_BRANCHES, output_current_memory_usage(), LOG_AREA_INTEGRALS, box_struct_basic::firstItemIndex, DistributionSpecStructLabeled::distr, DistributionSpecStruct_::extent, DistributionSpecStruct_::centerCoords, do_output(), and LOG_CAT_ERROR.
Referenced by compute_J_by_boxes_linear().
static 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, | ||
ergo_real | threshold, | ||
int * | largest_L_used_so_far, | ||
MMInteractor & | interactor | ||
) | [static] |
References distr_list_description_struct::org, distr_org_struct::chunkList, distr_org_struct::clusterList, distr_org_struct::groupList, distr_org_struct::minimalDistrList, distr_org_struct::chunkCount, distr_org_struct::basisFuncPairList, chunk_struct::noOfClusters, chunk_struct::clusterStartIndex, cluster_struct::groupStartIndex, cluster_struct::noOfGroups, multipole_struct_large::centerCoords, distr_group_struct::centerCoords, distr_group_struct::startIndex, distr_group_struct::distrCount, MAX_MULTIPOLE_DEGREE_BASIC, multipole_struct_small::degree, A, multipole_struct_small::momentList, mm_limits_get_minimum_multipole_degree_needed(), distr_group_struct::multipolePtr, multipole_struct_small::noOfMoments, MMInteractor::getInteractionMatrix(), MAX_NO_OF_MOMENTS_PER_MULTIPOLE, B, multipole_struct_large::momentList, minimal_distr_struct::basisFuncPairIndex, chunk_struct::basisFuncPairListIndex, and basis_func_pair_struct::pairIndex.
Referenced by execute_joblist_J_fmm_shared().
static void* execute_J_fmm_worker | ( | void * | arg | ) | [static] |
References JFMMWorkerData::result, execute_joblist_J_fmm_shared(), JFMMWorkerData::jobIndexLo, JFMMWorkerData::jobIndexHi, JFMMWorkerData::integralInfo, JFMMWorkerData::basisInfo, JFMMWorkerData::J_K_params, JFMMWorkerData::jobList_J_multipole, JFMMWorkerData::boxList, JFMMWorkerData::maxnoOfMinimalDistrsPerBoxBranch, JFMMWorkerData::result_J_list, and JFMMWorkerData::largest_L_used.
Referenced by execute_joblist_J_fmm_thread().
static int execute_joblist_J_fmm_serial | ( | const IntegralInfo & | integralInfo, |
const BasisInfoStruct & | basisInfo, | ||
const JK::Params & | J_K_params, | ||
int | noOfJobs_J_multipole, | ||
const job_list_multipole_entry_J_struct * | jobList_J_multipole, | ||
const box_struct * | boxList, | ||
int | maxnoOfMinimalDistrsPerBoxBranch, | ||
ergo_real * | result_J_list | ||
) | [static] |
References execute_joblist_J_fmm_shared(), do_output(), LOG_CAT_INFO, and LOG_AREA_INTEGRALS.
Referenced by compute_J_by_boxes_linear().
static int execute_joblist_J_fmm_shared | ( | int | jobIndexLo, |
int | jobIndexHi, | ||
const IntegralInfo & | integralInfo, | ||
const BasisInfoStruct & | basisInfo, | ||
const JK::Params & | J_K_params, | ||
const job_list_multipole_entry_J_struct * | jobList_J_multipole, | ||
const box_struct * | boxList, | ||
int | maxnoOfMinimalDistrsPerBoxBranch, | ||
ergo_real * | result_J_list, | ||
int * | largest_L_used | ||
) | [static] |
executes given jobList using FMM.
jobIndexLo | the first jobindex for which this thread is responsible. |
jobIndexHi | the last jobindex for which this thread is responsible is jobIndexHi-1. |
integralInfo | info needed for evaluation of integrals of Gaussian functions. |
basisInfo | info about the used basis set. |
J_K_params | includes various parameters for J and K matrix construction. |
jobList_J_multipole | list of multipole-jobs. |
boxList | list of boxes. |
maxnoOfMinimalDistrsPerBoxBranch | needed to determine size of work buffer. |
result_J_list | the list of matrix elements to be updated. |
largest_L_used | largest L-value used (output). |
References do_output(), LOG_CAT_INFO, LOG_AREA_INTEGRALS, output_current_memory_usage(), job_list_multipole_entry_J_struct::boxIndex, job_list_multipole_entry_J_struct::branchIndex, job_list_multipole_entry_J_struct::multipoleBoxIndex, box_struct::branchList, distr_list_description_struct::org, distr_org_struct::chunkList, distr_org_struct::clusterList, distr_org_struct::groupList, distr_org_struct::minimalDistrList, distr_org_struct::chunkCount, chunk_struct::noOfClusters, chunk_struct::clusterStartIndex, cluster_struct::groupStartIndex, cluster_struct::noOfGroups, distr_group_struct::startIndex, distr_group_struct::distrCount, minimal_distr_struct::monomialIndex, minimal_distr_struct::coeff, DistributionSpecStruct_::monomialInts, IntegralInfo::monomial_info, monomial_info_struct::monomial_list, monomial_struct::ix, monomial_struct::iy, monomial_struct::iz, DistributionSpecStruct_::coeff, DistributionSpecStruct_::exponent, distr_group_struct::exponent, DistributionSpecStruct_::centerCoords, distr_group_struct::centerCoords, compute_multipole_moments(), LOG_CAT_ERROR, job_list_multipole_entry_J_struct::multipoleBranchIndex, distr_list_description_struct::multipole, multipole_struct_large::momentList, MAX_NO_OF_MOMENTS_PER_MULTIPOLE, setup_multipole_maxAbsMomentList(), do_multipole_interaction_between_2_boxes_branches(), JK::Params::threshold_J, and JK::Params::multipole_threshold_factor.
Referenced by execute_joblist_J_fmm_serial(), and execute_J_fmm_worker().
static int execute_joblist_J_fmm_thread | ( | int | noOfThreads, |
int | noOfBasisFuncIndexPairs, | ||
const IntegralInfo & | integralInfo, | ||
const BasisInfoStruct & | basisInfo, | ||
const JK::Params & | J_K_params, | ||
int | noOfJobs_J_multipole, | ||
const job_list_multipole_entry_J_struct * | jobList_J_multipole, | ||
const box_struct * | boxList, | ||
int | maxnoOfMinimalDistrsPerBoxBranch, | ||
ergo_real * | result_J_list | ||
) | [static] |
Compute the FMM part of the Coulomb matrix using threads.
0th thread reuses result_J_list, all the other threads need to have temporary memory allocated.
References do_output(), LOG_CAT_ERROR, LOG_AREA_INTEGRALS, execute_J_fmm_worker(), and LOG_CAT_INFO.
Referenced by compute_J_by_boxes_linear().
static int execute_joblist_J_std_serial | ( | int | noOfJobs_J_standard, |
const job_list_standard_entry_J_struct * | jobList_J_standard, | ||
const BasisInfoStruct & | basisInfo, | ||
const IntegralInfo * | integralInfo, | ||
int | maxNoOfMonomials, | ||
ergo_real * | result_J_list, | ||
const box_struct * | boxList, | ||
ergo_real | threshold | ||
) | [static] |
References allocate_buffers_needed_by_integral_code(), job_list_standard_entry_J_struct::boxIndex_1, job_list_standard_entry_J_struct::boxIndex_2, job_list_standard_entry_J_struct::branchIndex_1, job_list_standard_entry_J_struct::branchIndex_2, get_J_contribs_from_2_interacting_boxes_2(), box_struct::branchList, distr_list_description_struct::org, distr_org_struct::groupCount, distr_org_struct::groupList, distr_org_struct::minimalDistrList, distr_org_struct::clusterList, distr_org_struct::clusterCount, distr_org_struct::chunkList, distr_org_struct::chunkCount, distr_org_struct::basisFuncPairList, do_output(), LOG_CAT_ERROR, LOG_AREA_INTEGRALS, and free_buffers_needed_by_integral_code().
Referenced by compute_J_by_boxes_linear().
static void* execute_joblist_J_std_thread_func | ( | void * | arg | ) | [static] |
References allocate_buffers_needed_by_integral_code(), J_std_joblist_thread_struct::integralInfo, J_std_joblist_thread_struct::maxNoOfMonomials, J_std_joblist_thread_struct::boxList, J_std_joblist_thread_struct::noOfJobs_J_standard, J_std_joblist_thread_struct::noOfThreads, J_std_joblist_thread_struct::thread_ID, J_std_joblist_thread_struct::jobList_J_standard, job_list_standard_entry_J_struct::boxIndex_1, job_list_standard_entry_J_struct::boxIndex_2, job_list_standard_entry_J_struct::branchIndex_1, job_list_standard_entry_J_struct::branchIndex_2, get_J_contribs_from_2_interacting_boxes_2(), J_std_joblist_thread_struct::basisInfo, J_std_joblist_thread_struct::result_J_list, box_struct::branchList, distr_list_description_struct::org, distr_org_struct::minimalDistrList, distr_org_struct::groupCount, distr_org_struct::groupList, distr_org_struct::clusterList, distr_org_struct::clusterCount, distr_org_struct::chunkList, distr_org_struct::chunkCount, distr_org_struct::basisFuncPairList, J_std_joblist_thread_struct::threshold, do_output(), LOG_CAT_ERROR, LOG_AREA_INTEGRALS, J_std_joblist_thread_struct::resultCode, and free_buffers_needed_by_integral_code().
Referenced by execute_joblist_J_std_threaded().
static int execute_joblist_J_std_threaded | ( | int | noOfThreads, |
int | noOfJobs_J_standard, | ||
const job_list_standard_entry_J_struct * | jobList_J_standard, | ||
const BasisInfoStruct & | basisInfo, | ||
const IntegralInfo * | integralInfo, | ||
int | maxNoOfMonomials, | ||
ergo_real * | result_J_list, | ||
int | noOfBasisFuncIndexPairs, | ||
const box_struct * | boxList, | ||
ergo_real | threshold | ||
) | [static] |
References do_output(), LOG_CAT_INFO, LOG_AREA_INTEGRALS, J_std_joblist_thread_struct::integralInfo, J_std_joblist_thread_struct::maxNoOfMonomials, J_std_joblist_thread_struct::boxList, J_std_joblist_thread_struct::jobList_J_standard, J_std_joblist_thread_struct::noOfJobs_J_standard, J_std_joblist_thread_struct::noOfThreads, J_std_joblist_thread_struct::resultCode, J_std_joblist_thread_struct::threshold, J_std_joblist_thread_struct::result_J_list, output_current_memory_usage(), execute_joblist_J_std_thread_func(), and LOG_CAT_ERROR.
Referenced by compute_J_by_boxes_linear().
static int get_branch_splitter_info | ( | ergo_real * | branchSplitterList, |
int | maxNoOfBranches, | ||
const JK::Params & | J_K_params, | ||
ergo_real | toplevelBoxSize, | ||
ergo_real | extent_max | ||
) | [static] |
References JK::Params::fmm_no_of_branches, do_output(), LOG_CAT_ERROR, LOG_AREA_INTEGRALS, JK::Params::fmm_branch_splitter_extent_1, JK::Params::fmm_branch_splitter_extent_2, JK::Params::fmm_branch_splitter_extent_3, JK::Params::fmm_branch_splitter_extent_4, and JK::Params::fmm_branch_splitter_extent_5.
Referenced by compute_J_by_boxes_linear().
static int get_J_contribs_from_2_interacting_boxes_2 | ( | const BasisInfoStruct & | basisInfo, |
const IntegralInfo * | integralInfo, | ||
int | maxNoOfMonomials, | ||
ergo_real * | result_J_list, | ||
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 | ||
) | [static] |
References pitopow52, JK_contribs_buffer_struct::summedIntegralList, JK_contribs_buffer_struct::primitiveIntegralList, JK_contribs_buffer_struct::primitiveIntegralList_work, chunk_struct::noOfBasisFuncPairs, chunk_struct::basisFuncPairListIndex, basis_func_pair_struct::dmatElement, chunk_struct::clusterStartIndex, chunk_struct::noOfClusters, cluster_struct::groupStartIndex, cluster_struct::noOfGroups, cluster_struct::nmax, distr_group_struct::exponent, distr_group_struct::maxAbsDmatElementGroup, distr_group_struct::maxLimitingFactorGroup, distr_group_struct::centerCoords, IntegralInfo::monomial_info, monomial_info_struct::no_of_monomials_list, get_related_integrals_h(), do_output(), LOG_CAT_ERROR, LOG_AREA_INTEGRALS, distr_group_struct::startIndex, distr_group_struct::distrCount, minimal_distr_struct::basisFuncPairIndex, minimal_distr_struct::monomialIndex, minimal_distr_struct::coeff, basis_func_pair_struct::index_1, basis_func_pair_struct::index_2, basis_func_pair_struct::pairIndex, set_abcd_list_item_macro, abcd_struct::a, abcd_struct::b, abcd_struct::c, and abcd_struct::d.
Referenced by execute_joblist_J_std_serial(), and execute_joblist_J_std_thread_func().
static int get_joblists_J_for_two_boxes_recursive | ( | const BasisInfoStruct & | basisInfo, |
const IntegralInfo * | integralInfo, | ||
int | maxNoOfMonomials, | ||
ergo_real | threshold, | ||
const box_struct * | boxList, | ||
int | numberOfLevels, | ||
int | currLevel, | ||
int | boxIndex_1, | ||
int | boxIndex_2, | ||
int | branchIndex_1, | ||
int | branchIndex_2, | ||
job_list_standard_entry_J_struct * | jobList_standard, | ||
int | maxNoOfJobs_standard, | ||
int * | noOfNewJobs_standard, | ||
job_list_multipole_entry_J_struct * | jobList_multipole, | ||
int | maxNoOfJobs_multipole, | ||
int * | noOfNewJobs_multipole | ||
) | [static] |
References box_struct::basicBox, box_struct_basic::centerCoords, box_struct_basic::width, distance(), box_struct::branchList, distr_list_description_struct::org, distr_org_struct::maxDistanceOutsideBox, BasisInfoStruct::noOfBasisFuncs, get_min_distance_from_point_to_box(), distr_list_description_struct::multipole, multipole_struct_large::centerCoords, mm_limits_get_minimum_multipole_degree_needed(), MAX_MULTIPOLE_DEGREE_BASIC, MAX_MULTIPOLE_DEGREE, add_multipole_jobs_for_2_boxes_branches_recursive(), do_output(), LOG_CAT_ERROR, LOG_AREA_INTEGRALS, job_list_standard_entry_J_struct::boxIndex_1, job_list_standard_entry_J_struct::branchIndex_1, job_list_standard_entry_J_struct::boxIndex_2, job_list_standard_entry_J_struct::branchIndex_2, box_struct_basic::noOfChildBoxes, and box_struct_basic::firstChildBoxIndex.
Referenced by compute_J_by_boxes_linear().
static void get_largest_and_smallest_extent_for_list_of_distributions | ( | int | n, |
const DistributionSpecStructLabeled * | distrList, | ||
ergo_real * | result_extent_min, | ||
ergo_real * | result_extent_max | ||
) | [static] |
References DistributionSpecStructLabeled::distr, and DistributionSpecStruct_::extent.
Referenced by compute_J_by_boxes_linear().
static int get_list_of_labeled_distrs_linear | ( | const BasisInfoStruct & | basisInfo, |
const IntegralInfo * | integralInfo, | ||
ergo_real | threshold, | ||
DistributionSpecStructLabeled * | resultList, | ||
int | maxCountDistrs, | ||
ergo_real | maxLimitingFactor, | ||
const basis_func_index_pair_struct * | basisFuncIndexPairList, | ||
int | basisFuncIndexPairCount, | ||
const ergo_real * | D_list | ||
) | [static] |
References get_max_abs_vector_element(), basis_func_index_pair_struct::index_1, basis_func_index_pair_struct::index_2, POLY_PRODUCT_MAX_DISTRS, get_product_simple_primitives(), do_output(), LOG_CAT_ERROR, LOG_AREA_INTEGRALS, IntegratorWithMemory::do_2e_integral(), DistributionSpecStructLabeled::distr, DistributionSpecStructLabeled::basisFuncIndex_1, DistributionSpecStructLabeled::basisFuncIndex_2, DistributionSpecStructLabeled::pairIndex, DistributionSpecStructLabeled::limitingFactor, and DistributionSpecStructLabeled::dmatElement.
Referenced by compute_J_by_boxes_linear().
static int get_list_of_labeled_distrs_maxLimitingFactor_linear | ( | const BasisInfoStruct & | basisInfo, |
const IntegralInfo * | integralInfo, | ||
ergo_real | threshold, | ||
const basis_func_index_pair_struct * | basisFuncIndexPairList, | ||
int | basisFuncIndexPairCount, | ||
ergo_real * | resultMaxLimitingFactor | ||
) | [static] |
static int get_max_no_of_monomials_for_list_of_distributions | ( | int | n, |
const DistributionSpecStructLabeled * | distrList, | ||
const IntegralInfo * | integralInfo | ||
) | [static] |
References IntegralInfo::monomial_info, and monomial_info_struct::no_of_monomials_list.
Referenced by compute_J_by_boxes_linear().
static ergo_real get_min_distance_from_point_to_box | ( | const ergo_real * | boxCenterCoords, |
ergo_real | halfwidth, | ||
const ergo_real * | point | ||
) | [static] |
Referenced by get_joblists_J_for_two_boxes_recursive().
static int sort_list_of_multipole_jobs | ( | job_list_multipole_entry_J_struct * | jobList, |
int | n | ||
) | [static] |
References job_list_multipole_entry_J_struct::boxIndex, LOG_AREA_INTEGRALS, do_output(), LOG_CAT_ERROR, and sort_list_of_multipole_jobs_fixed_boxIndex().
Referenced by compute_J_by_boxes_linear().
static int sort_list_of_multipole_jobs_fixed_boxIndex | ( | job_list_multipole_entry_J_struct * | jobList, |
int | n | ||
) | [static] |
References job_list_multipole_entry_J_struct::branchIndex, compare_multipole_jobs(), do_output(), LOG_CAT_ERROR, and LOG_AREA_INTEGRALS.
Referenced by sort_list_of_multipole_jobs().
const int HUGE_INTEGER_NUMBER = 2000000000 [static] |
Referenced by compute_J_by_boxes_linear().