Go to the documentation of this file.
38 #define _GRID_HICU_H_ 1
48 int use_error_per_volume,
49 int do_double_checking,
50 int compare_to_refined,
51 int use_energy_criterion,
52 int use_energy_criterion_only,
53 int do_variation_checking,
55 Dft::SparsePattern* pattern,
57 bool generateSparsePatternOnly);
63 Dft::SparsePattern& pattern);
real coor3DPtr[3]
Definition: grid_hicu.cc:1581
GridGenerationParamsStruct gridGenerationParams
Definition: grid_hicu.cc:198
static real compute_1d_gaussian_integral(real a, real b, int n, real alpha)
Definition: grid_hicu.cc:641
int noOfSimplePrimitives
Definition: basisinfo.h:93
const BasisInfoStruct & bis
Definition: grid_hicu.cc:226
Treal template_blas_sqrt(Treal x)
static int get_density(const BasisInfoStruct &bis, DistributionSpecStruct *rho, int maxCountRho, real targetRhoError, int nbast, const Dft::Matrix &dmat, BasisFuncStruct *basisFuncList)
Definition: grid_hicu.cc:2488
ergo_real coeffList[MAX_NO_OF_CONTR_GAUSSIANS]
Definition: basisinfo.h:72
int bas_bl_cnt[8]
Definition: integrator.h:58
static void getSubBox(const BoxStruct &startBox, BoxStruct &subBox, int Nx, int Ny, int Nz, int ix, int iy, int iz)
Definition: grid_hicu.cc:1570
Definition: functionals.h:375
int(* shlblocks)[2]
Definition: integrator.h:59
real maxerrorPerBox
Definition: grid_hicu.cc:169
Definition: grid_hicu.cc:190
pthread_mutex_t global_main_hicu_mutex
Definition: grid_hicu.cc:114
Hierarchical Cubature (HiCu) grid generation.
int noOfBasisFuncs
Definition: basisinfo.h:120
Constants for the number pi and some related numbers like sqrt(pi).
#define solid_harmonic_p_0(x, y, z, x2, y2, z2, r2)
Definition: grid_hicu.cc:265
#define solid_harmonic_s_0(x, y, z, x2, y2, z2, r2)
Definition: grid_hicu.cc:261
static const int CUBATURE_RULE_2
Definition: grid_hicu.cc:73
Common DFT routines. Mostly functional mixing.
#define solid_harmonic_d_1(x, y, z, x2, y2, z2, r2)
Definition: grid_hicu.cc:269
Definition: basisinfo.h:50
BasisFuncStruct * basisFuncList
Definition: grid_hicu.cc:153
bool useEnergyCriterion
Definition: grid_hicu.cc:173
const real DISTR_PRODUCT_THRESHOLD
Definition: grid_hicu.cc:77
int resultCode
Definition: grid_hicu.cc:245
int noOfBasisFuncs
Definition: basisinfo.h:80
int noOfPoints
Definition: grid_hicu.cc:241
real totalIntegralResultNumerical
Definition: grid_hicu.cc:209
const real DISTR_COEFF_CUTOFF_VALUE
Definition: grid_hicu.cc:83
real extent
Definition: grid_hicu.cc:143
#define MAX_NO_OF_TEST_POINTS
Definition: grid_hicu.cc:168
static int get_rhotree_indexes_for_box(int *resultList, int resultListMaxCount, const rhoTreeNode *node, const BoxStruct *inputBoxPtr)
Definition: grid_hicu.cc:694
#define UNIT_one_Angstrom
Definition: units.h:43
rhoTreeNode * rhoTreeRootNodeShells
Definition: grid_hicu.cc:229
#define LOG_CAT_ERROR
Definition: output.h:47
real(* grad)[3]
Definition: integrator.h:82
static real compute_integral_over_box(DistributionSpecStruct *distr, BoxStruct *box)
Definition: grid_hicu.cc:676
#define DFT_MAX_BLLEN
Limit for the number of grid point batch length.
Definition: aos.h:41
bool compareToRefined
Definition: grid_hicu.cc:172
ergo_real centerCoords[3]
x0, y0, z0
Definition: basisinfo.h:54
static char * grid_file_name
Definition: grid_reader.cc:127
#define MAX_NO_OF_POINTS_PER_BATCH
Definition: grid_hicu.cc:123
int distrIndex
Definition: grid_hicu.cc:164
bool useErrorPerVolume
Definition: grid_hicu.cc:175
bool generateSparsePatternOnly
Definition: grid_hicu.cc:246
double ergo_real
Definition: realtype.h:69
ComputeGridResultValuesStruct()
Definition: grid_hicu.cc:214
Code for various cubature rules that can be used for numerical integration.
real max[NO_OF_DIMENSIONS]
Definition: cubature_rules.h:49
static real to_power(real x, int n)
Definition: grid_hicu.cc:600
int shellType
Definition: basisinfo.h:78
int Nz
Definition: grid_hicu.cc:235
int maxNoOfRelevantDistrsPerBox
Definition: grid_hicu.cc:236
int dogga
Definition: integrator.h:91
real rhoa
Definition: functionals.h:376
Treal template_blas_exp(Treal x)
struct rhoTreeNode_ rhoTreeNode
Definition: grid_hicu.cc:166
Definition: basisinfo.h:71
int(* listShlblocks_otherformat)[2]
Definition: grid_hicu.cc:200
const real TARGET_RHO_ERROR_FACTOR
Definition: grid_hicu.cc:86
static const int CUBATURE_RULE
Definition: grid_hicu.cc:72
BoxSystem class representing a hierarchical data structure of boxes in 3D space (an oct-tree).
ShellSpecStruct * shellList
Definition: basisinfo.h:119
virtual bool isSparse() const =0
ergo_real centerCoords[3]
Definition: basisinfo.h:76
static int do_merge_sort_distrs(int n, DistributionSpecStruct *list, DistributionSpecStruct *workList)
Definition: grid_hicu.cc:2256
FILE * gridFile
Definition: grid_hicu.cc:231
Definition: cubature_rules.h:47
real * dmagao
Definition: grid_hicu.cc:202
const int NO_OF_DIMENSIONS
Definition: cubature_rules.h:45
int * currJobNumber
Definition: grid_hicu.cc:240
void grid_generate_sparse_pattern(const BasisInfoStruct &bis, ergo_real maxError, ergo_real boxSize, ergo_real startBoxSizeDebug, Dft::SparsePattern &pattern)
Definition: grid_hicu.cc:2814
General functionality related to computation of integrals involving Gaussian basis functions.
real totalIntegralResultAnalytical
Definition: grid_hicu.cc:210
EnergyFunc func
Definition: functionals.h:409
Definition: basisinfo.h:112
static int round_real(real x)
Definition: grid_hicu.cc:1554
#define solid_harmonic_d_3(x, y, z, x2, y2, z2, r2)
Definition: grid_hicu.cc:271
ergo_real real
Definition: test.cc:46
DistributionSpecStruct * distrList
Definition: grid_hicu.cc:155
int get_product_simple_primitives(const BasisInfoStruct &basisInfoA, int iA, const BasisInfoStruct &basisInfoB, int iB, DistributionSpecStruct resultList[], int maxCount, ergo_real threshold)
Definition: integrals_general.cc:268
ergo_real exponentList[MAX_NO_OF_CONTR_GAUSSIANS]
Definition: basisinfo.h:73
#define solid_harmonic_p_1(x, y, z, x2, y2, z2, r2)
Definition: grid_hicu.cc:266
Definition: grid_hicu.cc:225
Treal template_blas_fabs(Treal x)
tripleVectorOfInt * counterArrForPlot
Definition: grid_hicu.cc:248
int nbast
Definition: grid_hicu.cc:151
#define FILE_BATCH_N
Definition: grid_hicu.cc:122
#define MAX_NO_OF_SHLBLOCKS
Definition: grid_hicu.cc:124
#define solid_harmonic_f_5(x, y, z, x2, y2, z2, r2)
Definition: grid_hicu.cc:279
DftIntegratorBl * dft_integrator_bl_new(Functional *f, int ndmat, int bllen, int needlondon, const BasisInfoStruct &bis)
Definition: integrator.cc:109
static void integrate_density_and_energy(const BasisInfoStruct &bis, DensitySpecStruct *density, DftIntegratorBl *integrator, real &electrons, real &energy, int noOfGridPoints, real(*coor)[3], real *weight, real *dmagao)
Definition: grid_hicu.cc:802
void dft_get_orbs(int nvclen, ergo_real *gao, const ergo_real(*coor)[3], int nblcnt, int(*iblcks)[2], int nder, const BasisInfoStruct &bis)
Computes values of basis functions at specified points in space.
Definition: aos.cc:193
Definition: integrator.h:49
int curr_point
Definition: integrator.h:89
real targetRhoError
Definition: grid_hicu.cc:170
real * weight
Definition: integrator.h:52
int noOfNonzeroBasisFuncs
Definition: grid_hicu.cc:193
#define MAX_NO_OF_POINTS_PER_WRITE
Definition: grid_hicu.cc:128
union DftIntegratorBl_::@1 g
Definition: grid_hicu.cc:160
#define pi
Definition: pi.h:57
DensitySpecStruct density
Definition: grid_hicu.cc:192
#define solid_harmonic_f_1(x, y, z, x2, y2, z2, r2)
Definition: grid_hicu.cc:275
int ntypso
Definition: integrator.h:63
static int compute_grid_for_box(compute_grid_for_box_params_struct *params, int maxlen, real(*coor)[3], real *weight, BoxStruct *box, real analyticalIntegralValue, real *workList, ComputeGridResultValuesStruct &resultValues, bool resolutionIsOk)
Definition: grid_hicu.cc:872
GridGenerationParamsStruct()
Definition: grid_hicu.cc:177
real rhob
Definition: functionals.h:376
const int HICU_GRID_PLOT_RESOLUTION
Definition: grid_hicu.cc:134
union DftIntegratorBl_::@0 r
int * nonZeroBasisFuncIndexList
Definition: grid_hicu.cc:194
static void free_rho_tree_memory(rhoTreeNode *rootNode)
Definition: grid_hicu.cc:1540
#define solid_harmonic_f_4(x, y, z, x2, y2, z2, r2)
Definition: grid_hicu.cc:278
real estimatedIntegralErrorDensity
Definition: grid_hicu.cc:213
static rhoTreeNode * BuildRhoTree(int noOfDistributions, DistributionSpecStruct *rho_alt_1, ShellSpecStructWithExtent *rho_alt_2, real targetRhoError)
Definition: grid_hicu.cc:1496
int Nx
Definition: grid_hicu.cc:233
const Dft::Matrix * dmat
Definition: grid_hicu.cc:152
static void callbackGga(DftIntegratorBl *grid, int bllen, real &energy)
Definition: grid_hicu.cc:771
const real COORD_DIFF_FOR_SAMEPOINT_CRITERION
Definition: grid_hicu.cc:76
GridGenerationParamsStruct gridGenerationParams
Definition: grid_hicu.cc:230
struct rhoTreeNode_ * child2
Definition: grid_hicu.cc:163
#define DISTR_CENTER_DIST_LIMIT
Definition: grid_hicu.cc:126
void grid_generate_sparse_pattern(const BasisInfoStruct &bis, ergo_real maxError, ergo_real boxSize, ergo_real startBoxSizeDebug, Dft::SparsePattern &sparsePattern)
Definition: grid_hicu.cc:2814
int noOfShells
Definition: basisinfo.h:118
struct DftIntegratorBl_::@1::@3 rad
BoxStruct * startBox
Definition: grid_hicu.cc:232
bool useEnergyCriterionOnly
Definition: grid_hicu.cc:174
virtual ergo_real at(int row, int col) const =0
static real compute_integral_from_points(const BasisInfoStruct &bis, DensitySpecStruct *density, int noOfNonzeroShells, int *nonZeroShellsIndexList, int noOfNonzeroBasFuncs, int *nonZeroBasFuncsIndexList, const real *localFullDensityMatrix, int nPoints, real(*coor)[3], real *weight, real *workList, real &minValue, real &maxValue, real &maxAbsValue)
Definition: grid_hicu.cc:501
DftIntegratorBl * dftIntegrator
Definition: grid_hicu.cc:201
IsGGAFunc is_gga
Definition: functionals.h:403
DistributionSpecStruct * simplePrimitiveList
Definition: basisinfo.h:123
#define solid_harmonic_f_2(x, y, z, x2, y2, z2, r2)
Definition: grid_hicu.cc:276
int simplePrimitiveIndex
Definition: basisinfo.h:94
int noOfContr
Definition: basisinfo.h:77
ComputeGridResultValuesStruct resultValues
Definition: grid_hicu.cc:243
pthread_mutex_t * fileMutex
Definition: grid_hicu.cc:237
static void print_box(BoxStruct *box)
Definition: grid_hicu.cc:286
void print(int area, const char *routine)
Definition: utilities.h:111
virtual const SparseMatrix * asSparse() const =0
#define EXPONENT_DIFF_LIMIT
Definition: grid_hicu.cc:125
static rhoTreeNode * BuildRhoTreeBranch(int noOfDistributionsTot, DistributionSpecStruct *rho_alt_1, ShellSpecStructWithExtent *rho_alt_2, int distrIndexListN, int *distrIndexList, real targetRhoError)
Definition: grid_hicu.cc:1308
Definition: grid_hicu.cc:148
static int compute_grid(const BasisInfoStruct &bis, DensitySpecStruct *density, const GridGenerationParamsStruct &gridGenerationParams, real boxdist, real startBoxSizeDebug, const char *gridFileName, int noOfThreads, bool generateSparsePatternOnly, Dft::SparsePattern *sparsePattern)
Definition: grid_hicu.cc:1936
#define solid_harmonic_d_2(x, y, z, x2, y2, z2, r2)
Definition: grid_hicu.cc:270
Basic OS access utilities.
#define LOG_CAT_INFO
Definition: output.h:49
Treal template_blas_log(Treal x)
Definition: basisinfo.h:85
int * nonZeroShellsIndexList
Definition: grid_hicu.cc:196
static real compute_value_at_point(DensitySpecStruct *density, int noOfNonzeroShells, int *nonZeroShellsIndexList, int noOfNonzeroBasFuncs, int *nonZeroBasFuncsIndexList, const real *localFullDensityMatrix, real(*coor)[3], real *workList)
Definition: grid_hicu.cc:374
std::vector< real > localFullDensityMatrix
Definition: grid_hicu.cc:197
void dft_integrator_bl_free(DftIntegratorBl *res)
Definition: integrator.cc:151
compute_grid_for_box_params_struct(const BasisInfoStruct &bis_)
Definition: grid_hicu.cc:203
compute_grid_thread_func_struct(const BasisInfoStruct &bis_)
Definition: grid_hicu.cc:249
virtual const ergo_real * asFull() const =0
Code for setting up basis functions starting from shells.
#define solid_harmonic_f_6(x, y, z, x2, y2, z2, r2)
Definition: grid_hicu.cc:280
BasisFuncStruct * basisFuncList
Definition: basisinfo.h:121
int Ny
Definition: grid_hicu.cc:234
Vector3D centerCoords
Definition: basisinfo.h:90
Functional * selected_func
Definition: functionals.c:106
int nShlblocks
Definition: grid_hicu.cc:199
int hicu_grid_generate(const char *grid_file_name, const BasisInfoStruct &bis, ergo_real maxError, ergo_real boxSize, ergo_real startBoxSizeDebug, int use_error_per_volume, int do_double_checking, int compare_to_refined, int use_energy_criterion, int use_energy_criterion_only, int do_variation_checking, const Dft::Matrix *dmat, Dft::SparsePattern *pattern, int nThreads, bool generateSparsePatternOnly)
Definition: grid_hicu.cc:2687
rhoTreeNode * rhoTreeRootNode
Definition: grid_hicu.cc:228
DensitySpecStruct * density
Definition: grid_hicu.cc:227
real * rho
Definition: integrator.h:76
static void get_shell_list_with_extents(const BasisInfoStruct &bis, int maxCountShellList, ShellSpecStructWithExtent *shellList, real targetRhoError)
Definition: grid_hicu.cc:2473
Constants for conversion between units for some common units like Angstrom, electron-volt (eV),...
BoxStruct box
Definition: grid_hicu.cc:161
ergo_real get_max_basis_func_abs_value(const BasisInfoStruct &basisInfo)
Computes an estimate for the largest absolute value that any basis function takes.
Definition: integrals_general.cc:378
static void * compute_grid_thread_func(void *arg)
Definition: grid_hicu.cc:1584
char monomialInts[4]
nx, ny, nz
Definition: basisinfo.h:55
void output_current_memory_usage(int logArea, const char *contextString)
Definition: output.cc:186
int startIndexInMatrix
Definition: basisinfo.h:81
real * atv
Definition: integrator.h:53
#define solid_harmonic_d_4(x, y, z, x2, y2, z2, r2)
Definition: grid_hicu.cc:272
real gradab
Definition: functionals.h:378
ergo_real coeff
Coefficient A.
Definition: basisinfo.h:51
#define solid_harmonic_f_3(x, y, z, x2, y2, z2, r2)
Definition: grid_hicu.cc:277
Treal hicuErf(Treal a)
Definition: grid_hicu.cc:570
#define N_BATCH_JOBS
Definition: grid_hicu.cc:127
int(* basblocks)[2]
Definition: integrator.h:60
real min[NO_OF_DIMENSIONS]
Definition: cubature_rules.h:48
Definition: box_system.h:71
static int get_product_distrs(const BasisInfoStruct &bis, const Dft::Matrix &dmat, real targetRhoError, DistributionSpecStruct *rho, int maxCount)
Definition: grid_hicu.cc:2383
real grada
Definition: functionals.h:377
int get_items_near_point(const box_item_struct *itemList, const ergo_real *coords, ergo_real distance, int *resultOrgIndexList) const
Goes through existning box system to find all items within specified distance from given reference po...
Definition: box_system.cc:430
int get_basis_func_extent_list(const BasisInfoStruct &basisInfo, ergo_real *basisFuncExtentList, ergo_real maxAbsValue)
Computes an "extent" for each basis function in the basis set.
Definition: integrals_general.cc:402
ShellSpecStructWithExtent * shellList
Definition: grid_hicu.cc:150
std::vector< std::vector< std::vector< int > > > tripleVectorOfInt
Definition: grid_hicu.cc:206
int noOfWrittenBatches
Definition: grid_hicu.cc:242
int noOfDistributions
Definition: grid_hicu.cc:154
const real RELATIVE_DENSITY_VARIATION_LIMIT
Definition: grid_hicu.cc:78
real totalIntegralResultEnergy
Definition: grid_hicu.cc:211
#define solid_harmonic_f_0(x, y, z, x2, y2, z2, r2)
Definition: grid_hicu.cc:274
static void get_shell_box(BoxStruct *box, ShellSpecStructWithExtent *shell)
Definition: grid_hicu.cc:315
int hicu_grid_generate(const char *grid_file_name, const BasisInfoStruct &bis, ergo_real maxError, ergo_real boxSize, ergo_real startBoxSizeDebug, int use_error_per_volume, int do_double_checking, int compare_to_refined, int use_energy_criterion, int use_energy_criterion_only, int do_variation_checking, const Dft::Matrix *dmat, Dft::SparsePattern *sparsePattern, int nThreads, bool generateSparsePatternOnly)
Definition: grid_hicu.cc:2687
static int compute_extent_for_shells(ShellSpecStructWithExtent *shellList, const BasisInfoStruct &bis, real targetRhoError)
Definition: grid_hicu.cc:2360
void do_output(int logCategory, int logArea, const char *format,...)
Definition: output.cc:53
Generic matrix interface. It is not optimized for speed.
real gradb
Definition: functionals.h:377
real estimatedIntegralErrorEnergy
Definition: grid_hicu.cc:212
Definition: grid_hicu.cc:141
bool doDoubleChecking
Definition: grid_hicu.cc:171
bool doVariationChecking
Definition: grid_hicu.cc:176
static real compute_1d_gaussian_integral_recursive(real a, real b, int n, real alpha)
Definition: grid_hicu.cc:609
struct rhoTreeNode_ * child1
Definition: grid_hicu.cc:162
Dft::SparsePattern * sparsePattern
Definition: grid_hicu.cc:247
pthread_t thread
Definition: grid_hicu.cc:239
pthread_mutex_t * jobMutex
Definition: grid_hicu.cc:238
static void callbackLda(DftIntegratorBl *grid, int bllen, real &energy)
Definition: grid_hicu.cc:790
ShellSpecStruct s
Definition: grid_hicu.cc:142
Definition: grid_matrix.h:44
ergo_real exponent
exponent alfa
Definition: basisinfo.h:52
ergo_real extent
Definition: basisinfo.h:53
int threadNo
Definition: grid_hicu.cc:244
#define LOG_AREA_DFT
Definition: output.h:62
int noOfShells
Definition: grid_hicu.cc:149
#define solid_harmonic_p_2(x, y, z, x2, y2, z2, r2)
Definition: grid_hicu.cc:264
Definition: grid_hicu.cc:208
real(* coor)[3]
Definition: integrator.h:51
Time-measuring class.
Definition: utilities.h:80
int noOfNonzeroShells
Definition: grid_hicu.cc:195
int shl_bl_cnt
Definition: integrator.h:58
const BasisInfoStruct & bis
Definition: grid_hicu.cc:191
void getrho_blocked_gga(int nbast, const real *dmat, const real *restrict gao, const int *nblocks, const int(*iblocks)[2], int ldaib, real *tmp, int nvclen, real *rho, real(*grad)[3])
Computes the expectation value <o|dmat|o'> and its derivatives for a symmetric matrix and given set o...
Definition: rho-mat.cc:187
void getrho_blocked_lda(int nbast, const real *dmat, const real *restrict gao, const int *nblocks, const int(*iblocks)[2], int ldaib, real *tmp, int nvclen, real *rho)
Computes the expectation value <o|dmat|o'> for a symmetric matrix and given set of precomputed orbita...
Definition: rho-mat.cc:94
int use_cubature_rule(int maxlen, real(*coor)[3], real *weight, BoxStruct *box, int ruleNumber)
Definition: cubature_rules.cc:44
int create_box_system(box_item_struct *itemList, int noOfItems, ergo_real toplevelBoxSize)
Creates the box system.
Definition: box_system.cc:74
static void get_distribution_box(BoxStruct *box, DistributionSpecStruct *distr, real targetRhoError)
Definition: grid_hicu.cc:296
#define solid_harmonic_d_0(x, y, z, x2, y2, z2, r2)
Definition: grid_hicu.cc:268
void ergoShellsToOrbs(const int *nshlbl, const int(*shlblock)[2], int *norbbl, int(*orbblock)[2], const BasisInfoStruct &bis)
transform shell block indices to orbital block indices.
Definition: dft_common.cc:708