39template <
typename _Shell>
66 template <
typename Z = Shell>
94 return this->
calculate1D(a, K_x, i, b, L_x, j) * primitive_overlap_engine.
calculate1D(a, K_y, k, b, L_y, l) * primitive_overlap_engine.
calculate1D(a, K_z, m, b, L_z, n) +
95 primitive_overlap_engine.
calculate1D(a, K_x, i, b, L_x, j) * this->
calculate1D(a, K_y, k, b, L_y, l) * primitive_overlap_engine.
calculate1D(a, K_z, m, b, L_z, n) +
96 primitive_overlap_engine.
calculate1D(a, K_x, i, b, L_x, j) * primitive_overlap_engine.
calculate1D(a, K_y, k, b, L_y, l) * this->
calculate1D(a, K_z, m, b, L_z, n);
112 template <
typename Z = Shell>
118 return -2 * std::pow(b, 2) * primitive_overlap_engine.
calculate1D(a, K, i, b, L, j + 2) +
119 b * (2 * j + 1) * primitive_overlap_engine.
calculate1D(a, K, i, b, L, j) -
120 0.5 * j * (j - 1) * primitive_overlap_engine.
calculate1D(a, K, i, b, L, j - 2);
136 template <
typename Z = Shell>
159 const auto k_K = left.
kVector();
160 const auto k_L = right.
kVector();
180 return this->
calculate1D(k_K_x, a, K_x, i, k_L_x, b, L_x, j) * S.
calculate1D(k1_y, a, K_y, k, b, L_y, l) * S.
calculate1D(k1_z, a, K_z, m, b, L_z, n) +
181 S.
calculate1D(k1_x, a, K_x, i, b, L_x, j) * this->
calculate1D(k_K_y, a, K_y, k, k_L_y, b, L_y, l) * S.
calculate1D(k1_z, a, K_z, m, b, L_z, n) +
182 S.
calculate1D(k1_x, a, K_x, i, b, L_x, j) * S.
calculate1D(k1_y, a, K_y, k, b, L_y, l) * this->
calculate1D(k_K_z, a, K_z, m, k_L_z, b, L_z, n);
200 template <
typename Z = Shell>
206 const auto k1 = k_L - k_K;
209 return -2 * std::pow(b, 2) * S.
calculate1D(k1, a, K, i, b, L, j + 2) -
210 2 * b * 1.0_ii * k_L * S.
calculate1D(k1, a, K, i, b, L, j + 1) +
211 (b * (2 * j + 1) + 0.5 * std::pow(k_L, 2)) * S.
calculate1D(k1, a, K, i, b, L, j) +
212 static_cast<double>(j) * 1.0_ii * k_L * S.
calculate1D(k1, a, K, i, b, L, j - 1) -
213 0.5 * j * (j - 1) * S.
calculate1D(k1, a, K, i, b, L, j - 2);
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: PrimitiveCanonicalKineticEnergyIntegralEngine.hpp:41
enable_if_t< std::is_same< Z, GTOShell >::value, IntegralScalar > calculate(const CartesianGTO &left, const CartesianGTO &right)
Definition: PrimitiveCanonicalKineticEnergyIntegralEngine.hpp:67
typename Shell::Primitive Primitive
Definition: PrimitiveCanonicalKineticEnergyIntegralEngine.hpp:47
enable_if_t< std::is_same< Z, LondonGTOShell >::value, IntegralScalar > calculate1D(const complex k_K, const double a, const double K, const int i, const complex k_L, const double b, const double L, const int j)
Definition: PrimitiveCanonicalKineticEnergyIntegralEngine.hpp:201
enable_if_t< std::is_same< Z, LondonGTOShell >::value, IntegralScalar > calculate(const LondonCartesianGTO &left, const LondonCartesianGTO &right)
Definition: PrimitiveCanonicalKineticEnergyIntegralEngine.hpp:137
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: PrimitiveCanonicalKineticEnergyIntegralEngine.hpp:113
product_t< KineticOperator::Scalar, typename Primitive::OutputType > IntegralScalar
Definition: PrimitiveCanonicalKineticEnergyIntegralEngine.hpp:50
_Shell Shell
Definition: PrimitiveCanonicalKineticEnergyIntegralEngine.hpp:44
Definition: PrimitiveOverlapIntegralEngine.hpp:43
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
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