Scine::Sparrow  5.1.0
Library for fast and agile quantum chemical calculations with semiempirical methods.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Pages
Scine::Sparrow::nddo::TwoElectronIntegralIndexes Class Reference

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>

Collaboration diagram for Scine::Sparrow::nddo::TwoElectronIntegralIndexes:
Collaboration graph

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
 

Static Public Member Functions

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...
 

Detailed Description

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} \)

Member Function Documentation

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
i1An element of the enum orb_t, describing a single orbital, casted to an integer
i2An 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
i1An element of the enum orb_t, describing a single orbital, casted to an integer
i2An 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: