File Local2c2eIntegralCalculator.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 -
namespace
nddo -
namespace
multipole -
class
Local2c2eIntegralCalculator - #include <Local2c2eIntegralCalculator.h>
This class is responsible for the calculation of the 2-center-2-electron integrals in the local coordinate system.
Public Types
-
using
LocalTerms= std::list<LocalTerm> Each charge distribution might be expanded in more than just one multipole (so, more than one LocalTerm possible).
-
using
LocalTermArray= std::array<std::array<LocalTerms, 40>, 40> There are 40 possible charge distributions.
Public Static Functions
-
template<Utils::derivOrder
O>
static Utils::AutomaticDifferentiation::Value1DType<O>getIntegral(GeneralTypes::twoElIntegral_t t1, GeneralTypes::twoElIntegral_t t2, double R, const ChargeSeparationParameter &D1, const ChargeSeparationParameter &d2, const KlopmanParameter &rho1, const KlopmanParameter &rho2) Wrapper around the next overload. It enables the reference of the twoElIntegral_t without the need to cast them.
-
template<Utils::derivOrder
O>
static Utils::AutomaticDifferentiation::Value1DType<O>getIntegral(int t1, int t2, double R, const ChargeSeparationParameter &D1, const ChargeSeparationParameter &d2, const KlopmanParameter &rho1, const KlopmanParameter &rho2) Calculates the integral value (up to the derivative order O) of the repulsion integral.
- Return
The 2-center-2-electron value up to the O-th derivative in the local coordinates system.
- Template Parameters
O: the derivative order, defines up to which derivative the value must be computed.
- Parameters
t1: the index referring to the first GeneralTypes::twoElIntegral_t orbital pair.t2: the index referring to the second GeneralTypes::twoElIntegral_t orbital pair.R: the distance between the two centers at which the multipoles are located.D1: the charge separation parameter belonging to the first multipole.d2: the charge separation parameter belonging to the second multipole.rho1: the Klopman parameter for the first center.rho2: the Klopman parameter for the second center.
Private Static Functions
-
static LocalTermArray
setUpTerms()¶ Generates the possible terms that define the multipole/multipole interactions.
-
static std::list<std::pair<double, multipole_t>>
getMultipoles(GeneralTypes::twoElIntegral_t t, bool hasD)¶ Generates a multipole corresponding to the two electron integral type t.
hasD makes sure that charge configuration corresponding to different multipoles in presence or absence of d basis functions are correctly represented
-
struct
LocalTerm - #include <Local2c2eIntegralCalculator.h>
Struct defining an interaction between two multipoles.
It consists of a prefactor, f, the charge distributions and the corresponding multipoles. It thus uniquely defines an interaction.
-
using
-
class
-
namespace
-
namespace
-
namespace