24 #ifndef COM_DAFER45_TBTK_GAUSSIAN_BASIS_GENERATOR
25 #define COM_DAFER45_TBTK_GAUSSIAN_BASIS_GENERATOR
27 #include "TBTK/GaussianState.h"
29 #include <unordered_map>
32 #include <libint2.hpp>
36 class GaussianBasisGenerator{
39 GaussianBasisGenerator();
42 GaussianBasisGenerator(
43 const GaussianBasisGenerator &gaussianBasisGenerator
47 ~GaussianBasisGenerator();
50 GaussianBasisGenerator& operator=(
51 const GaussianBasisGenerator &rhs
55 std::vector<GaussianState> generateBasis();
57 std::vector<GaussianState> basisSet;
59 libint2::BasisSet libintBasisSet;
61 std::unordered_map<size_t, std::vector<size_t>> libintShellPairList;
64 std::vector<std::shared_ptr<libint2::ShellPair>>
65 > libintShellPairData;
67 std::vector<libint2::Atom> atoms;
69 static unsigned int instanceCounter;
75 void initializeBasisSet();
78 void computeShellPairs(
double threshold = 1e-12);
81 void calculateSingleParticleTerms(
85 std::complex<double> value,
86 unsigned int linearBraIndex,
87 unsigned int linearKetIndex
93 void calculateTwoBodyFockTerms();