30#include <boost/math/constants/constants.hpp>
41template <
typename _Shell>
68 template <
typename Z = Shell>
80 return primitive_integral;
96 template <
typename Z = Shell>
100 if ((i < 0) || (j < 0)) {
105 const auto p = a + b;
108 return std::pow(boost::math::constants::pi<double>() / p, 0.5) * E(i, j, 0);
124 template <
typename Z = Shell>
140 const auto k1_component = k1(direction);
141 primitive_integral *= this->
calculate1D(k1_component, a, K, i, b, L, j);
144 return primitive_integral;
161 template <
typename Z = Shell>
165 if ((i < 0) || (j < 0)) {
173 const auto p = a + b;
178 for (
int t = 0; t <= i + j; t++) {
179 integral += E(i, j, t) *
180 std::pow(-1.0_ii * k1, t) *
181 std::pow(boost::math::constants::pi<double>() / p, 0.5) *
182 std::exp(-1.0_ii * k1 * P) *
183 std::exp(-std::pow(k1, 2) / (4 * p));
Definition: BaseScalarPrimitiveIntegralEngine.hpp:30
Definition: CartesianGTO.hpp:38
const Vector< double, 3 > & center() const
Definition: CartesianGTO.hpp:129
double gaussianExponent() const
Definition: CartesianGTO.hpp:139
const CartesianExponents & cartesianExponents() const
Definition: CartesianGTO.hpp:112
Definition: LondonCartesianGTO.hpp:38
Vector< double, 3 > kVector() const
Definition: LondonCartesianGTO.cpp:45
const CartesianGTO & cartesianGTO() const
Definition: LondonCartesianGTO.hpp:89
Definition: Matrix.hpp:47
Definition: McMurchieDavidsonCoefficient.hpp:30
double centerOfMass() const
Definition: McMurchieDavidsonCoefficient.cpp:87
Definition: PrimitiveOverlapIntegralEngine.hpp:43
product_t< OverlapOperator::Scalar, typename Primitive::OutputType > IntegralScalar
Definition: PrimitiveOverlapIntegralEngine.hpp:52
_Shell Shell
Definition: PrimitiveOverlapIntegralEngine.hpp:46
typename Shell::Primitive Primitive
Definition: PrimitiveOverlapIntegralEngine.hpp:49
enable_if_t< std::is_same< Z, GTOShell >::value, IntegralScalar > calculate1D(const double a, const double K, const int i, const double b, const double L, const int j)
Definition: PrimitiveOverlapIntegralEngine.hpp:97
enable_if_t< std::is_same< Z, LondonGTOShell >::value, IntegralScalar > calculate(const LondonCartesianGTO &left, const LondonCartesianGTO &right)
Definition: PrimitiveOverlapIntegralEngine.hpp:125
enable_if_t< std::is_same< Z, LondonGTOShell >::value, IntegralScalar > calculate1D(const complex k1, const double a, const double K, const int i, const double b, const double L, const int j)
Definition: PrimitiveOverlapIntegralEngine.hpp:162
enable_if_t< std::is_same< Z, GTOShell >::value, IntegralScalar > calculate(const CartesianGTO &left, const CartesianGTO &right)
Definition: PrimitiveOverlapIntegralEngine.hpp:69
Definition: complex.hpp:57
Definition: BaseOneElectronIntegralBuffer.hpp:25
typename std::enable_if< B, T >::type enable_if_t
Definition: type_traits.hpp:37
decltype(std::declval< T >() *std::declval< U >()) product_t
Definition: aliases.hpp:35
std::complex< double > complex
Definition: complex.hpp:31
@ z
Definition: CartesianDirection.hpp:30
@ x
Definition: CartesianDirection.hpp:28
@ y
Definition: CartesianDirection.hpp:29
size_t value(const CartesianDirection direction) const
Definition: CartesianExponents.hpp:116