40template <
typename _ExpansionScalar,
typename _Shell>
42 public SimpleSpinOrbitalBasis<_ExpansionScalar, _Shell, USpinOrbitalBasisComponent<_ExpansionScalar, _Shell>> {
79 template <
typename FQOneElectronOperator,
typename Z = Shell>
88 ResultOperator f {f_par};
107 template <
typename FQOneElectronOperator,
typename Z = Shell>
112 using Vectorizer =
typename FQOneElectronOperator::Vectorizer;
114 const auto N = FQOneElectronOperator::NumberOfComponents;
115 const auto& vectorizer = FQOneElectronOperator::vectorizer;
125 auto engine = GQCP::IntegralEngine::InHouse<GQCP::LondonGTOShell>(fq_one_op);
130 std::array<SquareMatrix<ResultScalar>, N> fs;
131 for (
size_t i = 0; i < N; i++) {
138 ResultOperator op {array};
151 template <
typename Z = Shell>
155 const auto L = this->
quantize(op.angularMomentum());
156 const auto& B = op.magneticField().strength();
157 return 0.5 * L.dot(B);
168 template <
typename Z = Shell>
176 const auto Q = this->
quantize(op.electronicQuadrupole()).allParameters();
177 const auto& B = op.magneticField().strength();
193 (std::pow(B_x, 2) + std::pow(B_z, 2)) * Q_yy +
194 (std::pow(B_x, 2) + std::pow(B_y, 2)) * Q_zz -
195 2 * B_x * B_y * Q_xy -
196 2 * B_x * B_z * Q_xz -
197 2 * B_y * B_z * Q_yz);
199 return ResultOperator {D_par};
247template <
typename ExpansionScalar,
typename Shell>
265template <
typename _ExpansionScalar,
typename _Shell>
280template <
typename _ExpansionScalar,
typename _Shell>
Definition: DenseVectorizer.hpp:49
Definition: DiamagneticOperator.hpp:35
static Matrix< double > calculateLibintIntegrals(const FQOneElectronOperator &fq_one_op, const ScalarBasis< GTOShell > &left_scalar_basis, const ScalarBasis< GTOShell > &right_scalar_basis)
Definition: IntegralCalculator.hpp:181
static auto calculate(BaseOneElectronIntegralEngine< Shell, N, IntegralScalar > &engine, const ShellSet< Shell > &left_shell_set, const ShellSet< Shell > &right_shell_set) -> std::array< MatrixX< IntegralScalar >, N >
Definition: IntegralCalculator.hpp:61
Definition: JacobiRotation.hpp:33
Definition: OrbitalZeemanOperator.hpp:35
size_t numberOfBasisFunctions() const
Definition: ScalarBasis.hpp:155
std::vector< size_t > basisFunctionIndices(const std::function< bool(const Shell &)> &selector) const
Definition: ScalarBasis.hpp:164
Definition: SimpleSpinOrbitalBasis.hpp:39
const ScalarBasis< Shell > & scalarBasis() const
Definition: SimpleSpinOrbitalBasis.hpp:133
const Transformation & expansion() const
Definition: SimpleSpinorBasis.hpp:98
Definition: SquareMatrix.hpp:39
Definition: StorageArray.hpp:38
Definition: UMullikenDomainComponent.hpp:35
Definition: USQOneElectronOperatorComponent.hpp:40
Definition: USpinOrbitalBasisComponent.hpp:42
auto quantize(const DiamagneticOperator &op) const -> enable_if_t< std::is_same< Z, LondonGTOShell >::value, USQOneElectronOperatorComponent< product_t< DiamagneticOperator::Scalar, ExpansionScalar >, DiamagneticOperator::Vectorizer > >
Definition: USpinOrbitalBasisComponent.hpp:169
typename Shell::Primitive Primitive
Definition: USpinOrbitalBasisComponent.hpp:51
typename Shell::BasisFunction BasisFunction
Definition: USpinOrbitalBasisComponent.hpp:54
UMullikenDomainComponent< ExpansionScalar > mullikenDomain(const std::function< bool(const Shell &)> &selector) const
Definition: USpinOrbitalBasisComponent.hpp:230
auto quantize(const OrbitalZeemanOperator &op) const -> enable_if_t< std::is_same< Z, LondonGTOShell >::value, USQOneElectronOperatorComponent< product_t< OrbitalZeemanOperator::Scalar, ExpansionScalar >, OrbitalZeemanOperator::Vectorizer > >
Definition: USpinOrbitalBasisComponent.hpp:152
_Shell Shell
Definition: USpinOrbitalBasisComponent.hpp:48
UMullikenDomainComponent< ExpansionScalar > mullikenDomain(const std::function< bool(const BasisFunction &)> &selector) const
Definition: USpinOrbitalBasisComponent.hpp:214
auto quantize(const FQOneElectronOperator &fq_one_op) const -> enable_if_t< std::is_same< Z, GTOShell >::value, USQOneElectronOperatorComponent< product_t< typename FQOneElectronOperator::Scalar, ExpansionScalar >, typename FQOneElectronOperator::Vectorizer > >
Definition: USpinOrbitalBasisComponent.hpp:80
auto quantize(const FQOneElectronOperator &fq_one_op) const -> enable_if_t< std::is_same< Z, LondonGTOShell >::value, USQOneElectronOperatorComponent< product_t< typename FQOneElectronOperator::Scalar, ExpansionScalar >, typename FQOneElectronOperator::Vectorizer > >
Definition: USpinOrbitalBasisComponent.hpp:108
_ExpansionScalar ExpansionScalar
Definition: USpinOrbitalBasisComponent.hpp:45
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
@ xz
Definition: DyadicCartesianDirection.hpp:30
@ yy
Definition: DyadicCartesianDirection.hpp:32
@ xy
Definition: DyadicCartesianDirection.hpp:29
@ xx
Definition: DyadicCartesianDirection.hpp:28
@ yz
Definition: DyadicCartesianDirection.hpp:33
@ zz
Definition: DyadicCartesianDirection.hpp:36
@ z
Definition: CartesianDirection.hpp:30
@ x
Definition: CartesianDirection.hpp:28
@ y
Definition: CartesianDirection.hpp:29
Definition: JacobiRotatable.hpp:37
Definition: SimpleSpinorBasis.hpp:38