File TwoElectronIntegralIndexes.h¶
- Copyright
This code is licensed under the 3-clause BSD license.
Copyright ETH Zurich, Laboratory for Physical Chemistry, Reiher Group.
See LICENSE.txt for details.
-
namespace
Scine
-
namespace
Sparrow
-
namespace
nddo
-
class
TwoElectronIntegralIndexes
- #include <TwoElectronIntegralIndexes.h>
This class initializes and stores as a static array the indices of the charge distributions on one center playing a role in the multipole expansion.
The generation of the indices array happens only one time being it declared static. The generated charge distributions are located on one single center, as in the NDDO approximation charge distributions centered on two centers are neglected: \( \langle \phi_\mu\phi_\nu | \phi_\\lambda\phi_\sigma \rangle = \vardelta_{IJ}\vardelta_{KL}\langle \chi_\mu^I\chi_\nu^J | \chi_\\lambda^K\chi_\sigma^L\rangle \) In total, 40 possible charge distributions are possible: out of a symmetric 9x9 matrix, the diagonal and the terms that give rise to a charge distribution are retained. In the end 40 indices are stored. 5 charge distributions do not give rise to a multipole:
\( p_x d_{yz} \)
\( p_y d_{xz} \)
\( p_z d_{xy} \)
\( p_z d_{x^2 - y^2} \)
\( p_xy d_{x^2 - y^2} \)
Public Types
-
using
orb_index_t
= int¶
-
using
orbPair_index_t
= int¶
-
using
Array
= std::array<std::array<orbPair_index_t, 9>, 9> 9x9 matrix with all the possible orbital combinations
Public Static Functions
-
static orbPair_index_t
getPairIndex
(orb_index_t i1, orb_index_t i2) Convert two orbitals into an orbital pair.
- Return
The corresponding element in the array, casted as an integer. The integer 100 corresponds to an invalid pair (i.e. a pair with no interaction)
- Parameters
i1
: An element of the enum orb_t, describing a single orbital, casted to an integeri2
: An element of the enum orb_t, describing a single orbital, casted to an integer
-
static bool
pairIsInvalid
(orb_index_t i1, orb_index_t i2) Checks if two orbitals form a valid charge distribution.
- Return
A boolean indicating if the given pair forms a valid charge distribution
- Parameters
i1
: An element of the enum orb_t, describing a single orbital, casted to an integeri2
: An element of the enum orb_t, describing a single orbital, casted to an integer
Private Static Functions
-
static orbPair_index_t
getIndex
(orb_index_t i1, orb_index_t i2)¶
Private Static Attributes
-
constexpr orbPair_index_t
invalidPair
= 100¶
-
class
-
namespace
-
namespace