File DFTBDipoleMatrixCalculator.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
template<class DFTBMethod>
class DFTBDipoleMatrixCalculator : public Scine::Sparrow::DipoleMatrixCalculator
#include <DFTBDipoleMatrixCalculator.h>

Class responsible for the calculation of the dipole matrix in MO basis for DFTB methods.

This class calculates the dipole matrix in MO basis according to R. Rüger, E. van Lenthe, T. Heine and L. Visscher, Tight-Binding Approximations to Time-Dependent Density Functional Theory

It works with the DFTBO0, DFTB2 and DFTB3 methods in restricted and unrestricted formalism.

Public Functions

~DFTBDipoleMatrixCalculator()

Virtual destructor.

const Utils::DipoleMatrix &getAODipoleMatrix() const

Getter for the AO dipole matrix. Throws an exception.

Utils::DipoleMatrix getMODipoleMatrix() const

Getter for the MO dipole matrix. Returns an rvalue.

void setAODipoleMatrix(Utils::DipoleMatrix dipoleMatrix)

Setter for the AO dipole matrix. Here it throws an exception.

void fillDipoleMatrix(const Eigen::RowVector3d &dipoleEvaluationCoordinate)

Calculates the MO dipole matrix for the DFTB methods.

void initialize()

Initialize the underlying dipole matrix.

void setIntegralMethod(const IntegralMethod &IntegralMethod)

This does nothing in DFTB.

void invalidate()

Invalidates the underlying dipole matrices and forces a new calculation.

bool isValid() const

Checks the validity of the underlying dipole matrix.

Public Static Functions

static std::unique_ptr<DFTBDipoleMatrixCalculator<DFTBMethod>> create(DFTBMethod &method)

Private Functions

DFTBDipoleMatrixCalculator(DFTBMethod &method)
void calculateRestrictedTransitionChargeMatrices(const Utils::PositionCollection &positions)
void calculateUnrestrictedTransitionChargeMatrices(const Utils::PositionCollection &positions)

Private Members

bool valid_ = {false}
Utils::DipoleMatrix dipoleMatrixMO_
const DFTBMethod &method_
const Utils::PositionCollection positions_
const Utils::MolecularOrbitals &coefficientMatrix_
const Eigen::MatrixXd &overlapMatrix_
const Utils::AtomsOrbitalsIndexes &aoIndex_
std::vector<Eigen::MatrixXd> transitionChargeMatrices_