File NDDODipoleMomentCalculator.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
NDDOMethod
>
classNDDODipoleMomentCalculator
: public Scine::Sparrow::DipoleMomentCalculator - #include <NDDODipoleMomentCalculator.h>
Class resposible for the calculation of the dipole in the NDDO methods.
It must be able to calculate the dipole both with the NDDO approximation and with the use of the dipole matrix.
- Template Parameters
NDDOMethod
: An NDDO method, must derive from Utils::SCFMethod and must have the method getInitializer. getInitializer must return a valid NDDOInitializer instance.
Public Functions
-
~NDDODipoleMomentCalculator
()¶
-
Eigen::RowVector3d
calculate
() const Calculates the molecular electrical dipole moment.
- Return
An Eigen::Vector3d containing the dipole moment components in atomic units.
-
void
useNDDOApproximation
(bool useNDDOApprox) Sets wether to use the NDDO dipole approximation or calculate the dipole from the dipole matrix.
- Parameters
useNDDOApprox
: The flag present in the method wrapper settings.
Public Static Functions
-
static std::unique_ptr<NDDODipoleMomentCalculator<NDDOMethod>>
create
(NDDOMethod &method, DipoleMatrixCalculator &dipoleMatrixCalculator) Factory method for the NDDODipoleMomentCalculator class.
- Return
An unique pointer to an instance of NDDODipoleMomentCalculator<NDDOMethod>
- Parameters
method
: An NDDO method, i.e. PM6Method, MNDOMethod, AM1Method,…dipoleMatrixCalculator
: An instance to the class calculating the dipole matrix.
Private Functions
-
Eigen::RowVector3d
calculateWithNDDOApproximation
(std::vector<double> atomicCharges, Utils::PositionCollection positions, Eigen::MatrixXd densityMatrix, Utils::ElementTypeCollection elements, std::vector<int> nrAOs, std::vector<double> chargeSeparationSP, std::vector<double> chargeSeparationPD) const¶
-
Eigen::RowVector3d
calculateWithDipoleMatrix
(std::vector<double> coreCharges, Utils::PositionCollection positions, Eigen::MatrixXd densityMatrix, Utils::DipoleMatrix dipoleMatrix, Eigen::MatrixXd overlapMatrix, Eigen::RowVector3d dipoleEvaluationCoordinate) const¶
-
NDDODipoleMomentCalculator
(NDDOMethod &method, DipoleMatrixCalculator &dipoleMatrixCalculator)¶
Private Members
-
NDDOMethod &
method_
¶
-
DipoleMatrixCalculator &
dipoleMatrixCalculator_
¶
-
bool
useNDDOApproximation_
= {true}¶
-
template<class
-
namespace