15template <
typename Scalar>
18template <
typename Scalar>
26template <
typename Scalar>
31 using ketvec_t = std::vector<std::shared_ptr<const ket_t>>;
36template <
typename Scalar>
45 SystemAtom(std::shared_ptr<const basis_t> basis);
55 std::array<real_t, 3> electric_field{0, 0, 0};
56 std::array<real_t, 3> magnetic_field{0, 0, 0};
57 bool diamagnetism_enabled{
false};
58 std::array<real_t, 3> ion_distance_vector{0, 0, std::numeric_limits<real_t>::infinity()};
60 int ion_interaction_order{3};
62 void construct_hamiltonian()
const override;
65extern template class SystemAtom<double>;
66extern template class SystemAtom<std::complex<double>>;
Class for creating a basis of atomic kets.
Class for representing atomic kets.
Type & set_ion_charge(real_t charge)
typename traits::CrtpTraits< Type >::real_t real_t
Type & set_diamagnetism_enabled(bool enable)
SystemAtom(std::shared_ptr< const basis_t > basis)
typename traits::CrtpTraits< Type >::basis_t basis_t
Type & set_electric_field(const std::array< real_t, 3 > &field)
Type & set_magnetic_field(const std::array< real_t, 3 > &field)
Type & set_ion_distance_vector(const std::array< real_t, 3 > &vector)
Type & set_ion_interaction_order(int value)
typename traits::NumTraits< Scalar >::real_t real_t
std::vector< std::shared_ptr< const ket_t > > ketvec_t
Helper struct to extract types from a derived basis type. Must be specialized for each derived basis ...
Helper struct to extract types from a numerical type.