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