void mult_by_CI_matrix_direct(int nSOs, int nEl, const four_idx_SO_struct *g_SO, const two_idx_SO_struct *h_SO, int nSlaterDets, const SlaterDet_struct *SlaterDetList, SlaterDet_struct **groupList, const ergo_real *sourceVector, ergo_real *resultVector, ergo_real shift)
Definition: ci.cc:2003
void assign(int pp, int qq, int rr, int ss)
Definition: ci.cc:2579
int nSOs
Definition: ci.cc:2524
Treal template_blas_sqrt(Treal x)
static ergo_real get_vector_norm(int n, const ergo_real *v)
Definition: ci.cc:102
void get_2el_contribs(int nSOs, int nEl, int nSlaterDets, const SlaterDet_struct *SlaterDetList, int nSlaterDetPairs, const SlaterDet_pair_struct *SlaterDet_pair_list, const int *pairCountList, const four_idx_SO_struct *g_SO, ergo_real *resultMatrix)
Definition: ci.cc:1080
int p
Definition: ci.cc:635
char SOs_a[2]
Definition: ci.cc:95
Options()
Initializes all the fields to sane values.
Definition: ci.h:59
int noOfBasisFuncs
Definition: basisinfo.h:120
ergo_real do_2e_integral(int mu, int nu, int la, int si, const BasisInfoStruct &basisInfo, const IntegralInfo &integralInfo)
Definition: integrals_2el_explicit.cc:75
static ergo_real rand_m1_to_1()
Definition: ci.cc:1796
void get_2el_energy_and_gradient(int nSOs, int nEl, int nSlaterDets, const SlaterDet_struct *SlaterDetList, int nSlaterDetPairs, const SlaterDet_pair_struct *SlaterDet_pair_list, const int *pairCountList, int noOfTrialVectors, ergo_real *energy_list, ergo_real **coeffListList, const four_idx_SO_struct *g_SO, ergo_real **resultGradient_list)
Definition: ci.cc:644
Functionality for computing the dipole moment of a molecule for a given density matrix.
ergo_real energy_diff_limit
Definition: ci.h:56
void get_1el_contribs(int nSOs, int nEl, int nSlaterDets, const SlaterDet_struct *SlaterDetList, int nSlaterDetPairs, const SlaterDet_pair_struct *SlaterDet_pair_list, const int *pairCountList, const two_idx_SO_struct *h_SO, ergo_real *resultMatrix)
Definition: ci.cc:468
Memory allocation/deallocation routines.
int ddf_load_density(const char *densityFileName, int noOfDensityMatrices, const IntegralInfo &integralInfo, BasisInfoStruct **basisInfo, ergo_real **densityMatrix)
Function opens fileName, fills in basisInfo (which has to be allocated and nullified),...
Definition: density_description_file.cc:1125
#define LOG_CAT_ERROR
Definition: output.h:47
int get_2e_density_matrix(int nSOs, int nEl, four_idx_SO_struct *d, int nSlaterDets, const SlaterDet_struct *SlaterDetList, const ergo_real *coeffList)
Definition: ci.cc:1357
ergo_real initial_step_length
Definition: ci.h:52
int r
Definition: ci.cc:2577
double ergo_real
Definition: realtype.h:69
ergo_real x[MAX_SOS][MAX_SOS][MAX_SOS][MAX_SOS]
Definition: ci.cc:69
ergo_real x[MAX_AOS][MAX_AOS][MAX_AOS][MAX_AOS]
Definition: ci.cc:64
void get_1el_energy_and_gradient(int nSOs, int nEl, int nSlaterDets, const SlaterDet_struct *SlaterDetList, int nSlaterDetPairs, const SlaterDet_pair_struct *SlaterDet_pair_list, const int *pairCountList, int noOfTrialVectors, ergo_real *energy_list, ergo_real **coeffListList, const two_idx_SO_struct *h_SO, ergo_real **resultGradient_list)
Definition: ci.cc:118
int get_FCI_Slater_dets_all(SlaterDet_struct *SlaterDetList, int nElTot, int nSOs)
Definition: ci.cc:1787
void do_mat_vec_mul(int n, const ergo_real *sourceVector, ergo_real *resultVector) const
Definition: ci.cc:2531
Simple implementation of the Lanczos method.
static ergo_real get_SlaterDet_energy(int nSOs, int nEl, const four_idx_SO_struct *g_SO, const two_idx_SO_struct *h_SO, const SlaterDet_struct *SlaterDet)
Definition: ci.cc:2043
SlaterDet_struct ** groupList
Definition: ci.cc:2529
int get_relevant_SlaterDet_pairs(int nSlaterDets, SlaterDet_struct *SlaterDetList, SlaterDet_struct **groupList, int nEl, SlaterDet_pair_struct *resultList)
Definition: ci.cc:2417
char SOs_a_pos[2]
Definition: ci.cc:97
int get_Lowdin_orbitals(int n, const ergo_real *S, ergo_real *MOs)
Definition: ci.cc:2481
Definition: basisinfo.h:112
char SOs_b_pos[2]
Definition: ci.cc:98
int get_F_orbs(int n, const ergo_real *F, const ergo_real *ovl, ergo_real *cmo, ergo_real *eigv)
get_f_orbs: use diagonalization to find the molecular orbitals corresponding to given Fock matrix f.
Definition: densfromf_full.cc:63
int get_relevant_SlaterDet_pairs_recursive(int nSlaterDets, SlaterDet_struct *SlaterDetList, SlaterDet_struct **groupList, int nEl, SlaterDet_pair_struct *resultList, int level, int groupIdx1, int groupIdx2)
Definition: ci.cc:2234
void get_relevant_SlaterDet_pairs_recursive_do_mult_or_dmat(SlaterDet_struct **groupList, int nEl, int level, int groupIdx1, int groupIdx2, int ia, int ib, int aDiffCount, int bDiffCount, pair_status_struct *status, int nSOs, int nSlaterDets, const SlaterDet_struct *SlaterDetList, const four_idx_SO_struct *g_SO, const two_idx_SO_struct *h_SO, const ergo_real *sourceVector, ergo_real *resultVector, two_idx_SO_struct *result_dmat_1el, four_idx_SO_struct *result_dmat_2el)
Definition: ci.cc:1821
int do_power_method(int n, ergo_real *A, ergo_real *v)
Definition: ci.cc:2547
Treal template_blas_fabs(Treal x)
ergo_real get_eigs(int n, ergo_real *M, ergo_real *bestVector, ergo_real *eigValListResult)
Definition: ci.cc:2438
int nEl
Definition: ci.cc:2523
int sign(Treal value)
Sign function returns the sign of the input.
Definition: bisection.h:48
ergo_real convergence_threshold
Definition: ci.h:51
int aDiffList[2]
Definition: ci.cc:1811
int q
Definition: ci.cc:2576
void get_CI_matrix(int nSOs, int nEl, const four_idx_SO_struct *g_SO, const two_idx_SO_struct *h_SO, int nSlaterDets, const SlaterDet_struct *SlaterDetList, int nSlaterDetPairs, const SlaterDet_pair_struct *SlaterDet_pair_list, const int *pairCountList, ergo_real *resultMatrix)
Definition: ci.cc:1654
ergo_real shift
Definition: ci.cc:2530
int spin
Definition: ci.cc:80
char SO_list[MAX_ELECTRONS]
Definition: ci.cc:85
int b
Definition: ci.cc:93
void mult_by_CI_matrix(int nSOs, int nEl, const four_idx_SO_struct *g_SO, const two_idx_SO_struct *h_SO, int nSlaterDets, const SlaterDet_struct *SlaterDetList, int nSlaterDetPairs, const SlaterDet_pair_struct *SlaterDet_pair_list, const int *pairCountList, const ergo_real *sourceVector, ergo_real *resultVector, ergo_real shift)
Definition: ci.cc:1612
void get_dipole_moment_fullmat(int n, const ergo_real *densityMatrix, const BasisInfoStruct &basisInfo, const Molecule &molecule, int logArea, const char *label)
Definition: dipole_moment.cc:91
Contains coefficients needed for quick integral evaluation.
Definition: integral_info.h:94
int aDiffPosList[2]
Definition: ci.cc:1813
int get_1e_density_matrix(int nSOs, int nEl, two_idx_SO_struct *D, int nSlaterDets, const SlaterDet_struct *SlaterDetList, const ergo_real *coeffList)
Definition: ci.cc:1272
ergo_real shift
Definition: ci.h:54
const int SPIN_A
Definition: ci.cc:59
void do_lanczos_method(int n, const ergo_real *guessVector, ergo_real &resultEig_lo, ergo_real *resultVec_lo, ergo_real &resultEig_hi, ergo_real *resultVec_hi, const Tmatvecmul &matvecmul, int maxIterations_in, ergo_real shift, ergo_real extraEnergy)
Definition: simple_lanczos.h:54
int get_relevant_SlaterDet_pairs_recursive_2(SlaterDet_struct **groupList, int nEl, SlaterDet_pair_struct *resultList, int level, int groupIdx1, int groupIdx2, int ia, int ib, int aDiffCount, int bDiffCount, pair_status_struct *status)
Definition: ci.cc:2082
const four_idx_SO_struct * g_SO
Definition: ci.cc:2526
int main(int argc, char *argv[])
Definition: bin2m.cc:45
const int SPIN_B
Definition: ci.cc:60
int s
Definition: ci.cc:2578
const SlaterDet_struct * SlaterDetList
Definition: ci.cc:2528
Code for explicit computation of 4-index 2-electron integrals.
int count
Definition: ci.cc:87
int use_energy_diff_limit
Definition: ci.h:55
Basic OS access utilities.
ergo_real coeffs[MAX_AOS]
Definition: ci.cc:79
int do_CI(const BasisInfoStruct &basisInfo, const IntegralInfo &integralInfo, const CI::Options &options, const Molecule &molecule, const ergo_real *S, const ergo_real *h_AO, const ergo_real *F_a, const ergo_real *F_b, int n_el_a, int n_el_b, ergo_real nuclearEnergy, ergo_real HF_energy)
Definition: ci.cc:2596
ergo_real x[MAX_SOS][MAX_SOS]
Definition: ci.cc:74
#define LOG_CAT_INFO
Definition: output.h:49
int nDiff
Definition: ci.cc:94
Code for setting up basis functions starting from shells.
Parameters related to integral evaluation.
static void normalize_vector(int n, ergo_real *v)
Definition: ci.cc:110
int p
Definition: ci.cc:2575
void get_1el_contribs_to_mult_or_dmat(int nSOs, int nEl, int nSlaterDets, const SlaterDet_struct *SlaterDetList, const SlaterDet_pair_struct *SlaterDetPair, const two_idx_SO_struct *h_SO, const ergo_real *sourceVector, ergo_real *resultVector, two_idx_SO_struct *resultdmat)
Definition: ci.cc:294
void get_CI_energy_and_gradient(int nSOs, int nEl, const four_idx_SO_struct *g_SO, const two_idx_SO_struct *h_SO, int nSlaterDets, const SlaterDet_struct *SlaterDetList, int nSlaterDetPairs, const SlaterDet_pair_struct *SlaterDet_pair_list, const int *pairCountList, int noOfTrialVectors, ergo_real *energyList, ergo_real **coeffListList, ergo_real **gradientList, ergo_real nuclearEnergy)
Definition: ci.cc:1542
int s
Definition: ci.cc:638
const int MAX_SOS
Definition: ci.cc:56
int nSlaterDets
Definition: ci.cc:2525
An interface file for writing and reading density matrices to/from a file, including basis set inform...
int no_of_core_electrons
Definition: ci.h:49
void output_current_memory_usage(int logArea, const char *contextString)
Definition: output.cc:186
int r
Definition: ci.cc:637
ergo_real get_CI_energy(int nSOs, int nEl, const four_idx_SO_struct *g_SO, const two_idx_SO_struct *h_SO, int nSlaterDets, const SlaterDet_struct *SlaterDetList, const ergo_real *coeffList, ergo_real nuclearEnergy)
Definition: ci.cc:1494
const two_idx_SO_struct * h_SO
Definition: ci.cc:2527
Representation of a molecule as a set of nuclei and total charge.
Definition: molecule.h:87
Functions for computing the matrix of a dipole/quadrupole/etc operator. Full and sparse versions.
void ergo_free(void *p)
Definition: memorymanag.cc:68
int use_random_orbitals
Definition: ci.h:47
Configuration Interaction (CI) code.
int max_no_of_iterations
Definition: ci.h:53
int get_combinations(SlaterDet_struct *SlaterDetList, int nEl, int nSOs)
Definition: ci.cc:1688
int get_FCI_Slater_dets_alpha_beta(SlaterDet_struct *SlaterDetList, int nEl_a, int nEl_b, int nSOs)
Definition: ci.cc:1746
static void syev(const char *jobz, const char *uplo, const int *n, T *a, const int *lda, T *w, T *work, const int *lwork, int *info)
Definition: mat_gblas.h:382
int use_random_starting_guess
Definition: ci.h:50
int q
Definition: ci.cc:636
int compare(int pp, int qq, int rr, int ss)
Definition: ci.cc:2586
const int MAX_AOS
Definition: ci.cc:55
void do_output(int logCategory, int logArea, const char *format,...)
Definition: output.cc:53
int startIndex
Definition: ci.cc:86
int bDiffPosList[2]
Definition: ci.cc:1814
char SOs_b[2]
Definition: ci.cc:96
int bDiffList[2]
Definition: ci.cc:1812
Routine get_dens_from_fock_full() for getting density matrix from a given Fock matrix using diagonali...
void get_2el_contribs_to_mult_or_dmat(int nSOs, int nEl, int nSlaterDets, const SlaterDet_struct *SlaterDetList, const SlaterDet_pair_struct *SlaterDetPair, const four_idx_SO_struct *g_SO, const ergo_real *sourceVector, ergo_real *resultVector, four_idx_SO_struct *result_dmat_2el)
Definition: ci.cc:863
int sign
Definition: ci.cc:639
int do_CI(const BasisInfoStruct &basisInfo, const IntegralInfo &integralInfo, const CI::Options &options, const Molecule &molecule, const ergo_real *S, const ergo_real *h_AO, const ergo_real *F_a, const ergo_real *F_b, int n_el_a, int n_el_b, ergo_real nuclearEnergy, ergo_real HF_energy)
Definition: ci.cc:2596
Functionality for writing output messages to a text file.
const int MAX_ELECTRONS
Definition: ci.cc:57
int a
Definition: ci.cc:92
#define LOG_AREA_CI
Definition: output.h:64
int use_lowdin_orbitals
Definition: ci.h:48