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.
More...
#include <TwoElectronIntegralIndexes.h>
|
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
|
|
|
static orbPair_index_t | getPairIndex (orb_index_t i1, orb_index_t i2) |
| Convert two orbitals into an orbital pair. More...
|
|
static bool | pairIsInvalid (orb_index_t i1, orb_index_t i2) |
| Checks if two orbitals form a valid charge distribution. More...
|
|
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} \)
static orbPair_index_t Scine::Sparrow::nddo::TwoElectronIntegralIndexes::getPairIndex |
( |
orb_index_t |
i1, |
|
|
orb_index_t |
i2 |
|
) |
| |
|
inlinestatic |
Convert two orbitals into an orbital pair.
- Parameters
-
i1 | An element of the enum orb_t, describing a single orbital, casted to an integer |
i2 | An element of the enum orb_t, describing a single orbital, casted to an integer |
- Returns
- 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)
static bool Scine::Sparrow::nddo::TwoElectronIntegralIndexes::pairIsInvalid |
( |
orb_index_t |
i1, |
|
|
orb_index_t |
i2 |
|
) |
| |
|
inlinestatic |
Checks if two orbitals form a valid charge distribution.
- Parameters
-
i1 | An element of the enum orb_t, describing a single orbital, casted to an integer |
i2 | An element of the enum orb_t, describing a single orbital, casted to an integer |
- Returns
- A boolean indicating if the given pair forms a valid charge distribution
The documentation for this class was generated from the following files: