Class Scine::Sparrow::nddo::OneElectronMatrix

class OneElectronMatrix

This class generates the one-electron matrix H for semi-empirical methods.

Public Functions

OneElectronMatrix(const Utils::ElementTypeCollection &elements, const Utils::PositionCollection &positions, const Eigen::MatrixXd &densityMatrix, const TwoCenterIntegralContainer &twoCIntegrals, const ElementParameters &elementPar, const Utils::AtomsOrbitalsIndexes &aoIndexes)

Constructor.

void initialize()

Initializes one-electron matrix H and the used data structures.

void calculate(const Utils::MatrixWithDerivatives &S)

Fills the one-electron matrix H by reading and calculating the required integrals.

void calculateSameAtomBlocks()

Calculates all the blocks on the same atoms.

void calculateSameAtomBlock(int a, int startIndex, int nAOs)

Calculates a specific block on an atom.

void calculateDifferentAtomsBlocks(const Utils::MatrixWithDerivatives &S)

Calculates all the blocks on different atom pairs.

void calculateDifferentAtomsBlock(int startRow, int startCol, const AtomicParameters &pA, const AtomicParameters &pB, const Utils::MatrixWithDerivatives &S)

Calculates a block between a specific atom pair.

template<Utils::derivativeType O>
void addDerivatives(Utils::AutomaticDifferentiation::DerivativeContainerType<O> &derivativeContainer, const Utils::MatrixWithDerivatives &S) const

Calculates the derivative contribution up to the order.

Template Parameters
  • O.:

const Eigen::MatrixXd &operator()() const

Getter for the one-electron matrix H.