37template <
typename _Shell>
66 angular_momentum_operator {angular_momentum_operator},
82 template <
typename Z = Shell>
117 const IntegralScalar term1 = -S1.calculate1D(a, K_y, k, b, L_y, l) * T1.
calculate1D(a, K_z, m, b, L_z, n);
121 const IntegralScalar term2 = -T1.
calculate1D(a, K_y, k, b, L_y, l) * S1.calculate1D(a, K_z, m, b, L_z, n);
123 return S0.
calculate1D(a, K_x, i, b, L_x, j) * (term1 - term2);
130 const IntegralScalar term1 = -S1.calculate1D(a, K_z, m, b, L_z, n) * T1.
calculate1D(a, K_x, i, b, L_x, j);
134 const IntegralScalar term2 = -T1.
calculate1D(a, K_z, m, b, L_z, n) * S1.calculate1D(a, K_x, i, b, L_x, j);
136 return S0.
calculate1D(a, K_y, k, b, L_y, l) * (term1 - term2);
143 const IntegralScalar term1 = -S1.calculate1D(a, K_x, i, b, L_x, j) * T1.
calculate1D(a, K_y, k, b, L_y, l);
147 const IntegralScalar term2 = -T1.
calculate1D(a, K_x, i, b, L_x, j) * S1.calculate1D(a, K_y, k, b, L_y, l);
149 return S0.
calculate1D(a, K_z, m, b, L_z, n) * (term1 - term2);
168 template <
typename Z = Shell>
191 const auto k_K = left.
kVector();
192 const auto k_L = right.
kVector();
219 const IntegralScalar term1 = -S1.calculate1D(k1_y, a, K_y, k, b, L_y, l) * T1.
calculate1D(k_K_z, a, K_z, m, k_L_z, b, L_z, n);
223 const IntegralScalar term2 = -T1.
calculate1D(k_K_y, a, K_y, k, k_L_y, b, L_y, l) * S1.calculate1D(k1_z, a, K_z, m, b, L_z, n);
225 return S0.
calculate1D(k1_x, a, K_x, i, b, L_x, j) * (term1 - term2);
232 const IntegralScalar term1 = -S1.calculate1D(k1_z, a, K_z, m, b, L_z, n) * T1.
calculate1D(k_K_x, a, K_x, i, k_L_x, b, L_x, j);
236 const IntegralScalar term2 = -T1.
calculate1D(k_K_z, a, K_z, m, k_L_z, b, L_z, n) * S1.calculate1D(k1_x, a, K_x, i, b, L_x, j);
238 return S0.
calculate1D(k1_y, a, K_y, k, b, L_y, l) * (term1 - term2);
245 const IntegralScalar term1 = -S1.calculate1D(k1_x, a, K_x, i, b, L_x, j) * T1.
calculate1D(k_K_y, a, K_y, k, k_L_y, b, L_y, l);
249 const IntegralScalar term2 = -T1.
calculate1D(k_K_x, a, K_x, i, k_L_x, b, L_x, j) * S1.calculate1D(k1_y, a, K_y, k, b, L_y, l);
251 return S0.
calculate1D(k1_z, a, K_z, m, b, L_z, n) * (term1 - term2);
Definition: AngularMomentumOperator.hpp:35
const Vector< double, 3 > & reference() const
Definition: BaseReferenceDependentOperator.hpp:66
Definition: BaseVectorPrimitiveIntegralEngine.hpp:32
void prepareStateForComponent(const size_t component)
Definition: BaseVectorPrimitiveIntegralEngine.cpp:60
CartesianDirection component
Definition: BaseVectorPrimitiveIntegralEngine.hpp:36
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: ElectronicDipoleOperator.hpp:33
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: PrimitiveAngularMomentumIntegralEngine.hpp:39
product_t< AngularMomentumOperator::Scalar, typename Primitive::OutputType > IntegralScalar
Definition: PrimitiveAngularMomentumIntegralEngine.hpp:48
_Shell Shell
Definition: PrimitiveAngularMomentumIntegralEngine.hpp:42
typename Shell::Primitive Primitive
Definition: PrimitiveAngularMomentumIntegralEngine.hpp:45
enable_if_t< std::is_same< Z, LondonGTOShell >::value, IntegralScalar > calculate(const LondonCartesianGTO &left, const LondonCartesianGTO &right)
Definition: PrimitiveAngularMomentumIntegralEngine.hpp:169
enable_if_t< std::is_same< Z, GTOShell >::value, IntegralScalar > calculate(const CartesianGTO &left, const CartesianGTO &right)
Definition: PrimitiveAngularMomentumIntegralEngine.hpp:83
PrimitiveAngularMomentumIntegralEngine(const AngularMomentumOperator &angular_momentum_operator, const CartesianDirection component=CartesianDirection::x)
Definition: PrimitiveAngularMomentumIntegralEngine.hpp:65
Definition: PrimitiveElectronicDipoleIntegralEngine.hpp:42
Definition: PrimitiveLinearMomentumIntegralEngine.hpp:38
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: PrimitiveLinearMomentumIntegralEngine.hpp:130
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: 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
CartesianDirection
Definition: CartesianDirection.hpp:27
@ 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