8 #ifndef SPARROW_TWOELECTRONINTEGRALINDEXES_H
9 #define SPARROW_TWOELECTRONINTEGRALINDEXES_H
38 using orb_index_t = int;
39 using orbPair_index_t = int;
41 using Array = std::array<std::array<orbPair_index_t, 9>, 9>;
50 static orbPair_index_t
getPairIndex(orb_index_t i1, orb_index_t i2) {
51 return getIndex(i1, i2);
61 return (getIndex(i1, i2) == invalidPair);
66 static orbPair_index_t getIndex(orb_index_t i1, orb_index_t i2) {
67 static Array pairIndexes = createUniqueIndexes();
68 return pairIndexes[i1][i2];
73 static Array createUniqueIndexes();
76 static constexpr orbPair_index_t invalidPair = 100;
83 #endif // SPARROW_TWOELECTRONINTEGRALINDEXES_H
This class initializes and stores as a static array the indices of the charge distributions on one ce...
Definition: TwoElectronIntegralIndexes.h:36
static orbPair_index_t getPairIndex(orb_index_t i1, orb_index_t i2)
Convert two orbitals into an orbital pair.
Definition: TwoElectronIntegralIndexes.h:50
static bool pairIsInvalid(orb_index_t i1, orb_index_t i2)
Checks if two orbitals form a valid charge distribution.
Definition: TwoElectronIntegralIndexes.h:60
std::array< std::array< orbPair_index_t, 9 >, 9 > Array
9x9 matrix with all the possible orbital combinations
Definition: TwoElectronIntegralIndexes.h:41