pairinteraction
A Rydberg Interaction Calculator
pairinteraction::SystemAtom< Scalar > Class Template Reference

#include <SystemAtom.hpp>

+ Inheritance diagram for pairinteraction::SystemAtom< Scalar >:
+ Collaboration diagram for pairinteraction::SystemAtom< Scalar >:

Public Types

using Type = SystemAtom< Scalar >
 
using real_t = typename traits::CrtpTraits< Type >::real_t
 
using basis_t = typename traits::CrtpTraits< Type >::basis_t
 
- Public Types inherited from pairinteraction::System< SystemAtom< Scalar > >
using scalar_t = typename traits::CrtpTraits< SystemAtom< Scalar > >::scalar_t
 
using real_t = typename traits::CrtpTraits< SystemAtom< Scalar > >::real_t
 
using ketvec_t = typename traits::CrtpTraits< SystemAtom< Scalar > >::ketvec_t
 
using basis_t = typename traits::CrtpTraits< SystemAtom< Scalar > >::basis_t
 
using operator_t = typename traits::CrtpTraits< SystemAtom< Scalar > >::operator_t
 
- Public Types inherited from pairinteraction::TransformationBuilderInterface< traits::CrtpTraits< SystemAtom< Scalar > >::scalar_t >
using real_t = typename traits::NumTraits< traits::CrtpTraits< SystemAtom< Scalar > >::scalar_t >::real_t
 

Public Member Functions

 SystemAtom (std::shared_ptr< const basis_t > basis)
 
Typeset_electric_field (const std::array< real_t, 3 > &field)
 
Typeset_magnetic_field (const std::array< real_t, 3 > &field)
 
Typeset_diamagnetism_enabled (bool enable)
 
Typeset_ion_distance_vector (const std::array< real_t, 3 > &vector)
 
Typeset_ion_charge (real_t charge)
 
Typeset_ion_interaction_order (int value)
 
- Public Member Functions inherited from pairinteraction::System< SystemAtom< Scalar > >
 System (std::shared_ptr< const basis_t > basis)
 
 System (const System &other)
 
 System (System &&other) noexcept
 
System< SystemAtom< Scalar > > & operator= (const System &other)
 
System< SystemAtom< Scalar > > & operator= (System &&other) noexcept
 
virtual ~System ()
 
std::shared_ptr< const basis_tget_basis () const
 
std::shared_ptr< const basis_tget_eigenbasis () const
 
Eigen::VectorX< real_tget_eigenenergies () const
 
const Eigen::SparseMatrix< scalar_t, Eigen::RowMajor > & get_matrix () const
 
const Transformation< scalar_t > & get_transformation () const override
 
Transformation< scalar_tget_rotator (real_t alpha, real_t beta, real_t gamma) const override
 
Sorting get_sorter (const std::vector< TransformationType > &labels) const override
 
std::vector< IndicesOfBlockget_indices_of_blocks (const std::vector< TransformationType > &labels) const override
 
void get_indices_of_blocks_without_checks (const std::set< TransformationType > &unique_labels, IndicesOfBlocksCreator &blocks) const
 
System< SystemAtom< Scalar > > & transform (const Transformation< scalar_t > &transformation)
 
System< SystemAtom< Scalar > > & transform (const Sorting &transformation)
 
System< SystemAtom< Scalar > > & diagonalize (const DiagonalizerInterface< scalar_t > &diagonalizer, std::optional< real_t > min_eigenenergy={}, std::optional< real_t > max_eigenenergy={}, double rtol=1e-6)
 
bool is_diagonal () const
 
- Public Member Functions inherited from pairinteraction::TransformationBuilderInterface< traits::CrtpTraits< SystemAtom< Scalar > >::scalar_t >
virtual ~TransformationBuilderInterface ()=default
 
virtual const Transformation< traits::CrtpTraits< SystemAtom< Scalar > >::scalar_t > & get_transformation () const=0
 
virtual Transformation< traits::CrtpTraits< SystemAtom< Scalar > >::scalar_t > get_rotator (real_t alpha, real_t beta, real_t gamma) const=0
 
Transformation< traits::CrtpTraits< SystemAtom< Scalar > >::scalar_t > get_rotator (const std::array< real_t, 3 > &to_z_axis, const std::array< real_t, 3 > &to_y_axis) const
 
virtual Sorting get_sorter (const std::vector< TransformationType > &labels) const=0
 
virtual std::vector< IndicesOfBlockget_indices_of_blocks (const std::vector< TransformationType > &labels) const=0
 

Additional Inherited Members

virtual void construct_hamiltonian () const=0
 
- Protected Attributes inherited from pairinteraction::System< SystemAtom< Scalar > >
std::unique_ptr< operator_thamiltonian
 
bool hamiltonian_requires_construction
 
bool hamiltonian_is_diagonal
 
std::vector< TransformationTypeblockdiagonalizing_labels
 

Detailed Description

template<typename Scalar>
class pairinteraction::SystemAtom< Scalar >

Definition at line 37 of file SystemAtom.hpp.

Member Typedef Documentation

◆ basis_t

template<typename Scalar >
using pairinteraction::SystemAtom< Scalar >::basis_t = typename traits::CrtpTraits<Type>::basis_t

Definition at line 43 of file SystemAtom.hpp.

◆ real_t

template<typename Scalar >
using pairinteraction::SystemAtom< Scalar >::real_t = typename traits::CrtpTraits<Type>::real_t

Definition at line 42 of file SystemAtom.hpp.

◆ Type

template<typename Scalar >
using pairinteraction::SystemAtom< Scalar >::Type = SystemAtom<Scalar>

Definition at line 41 of file SystemAtom.hpp.

Constructor & Destructor Documentation

◆ SystemAtom()

template<typename Scalar >
pairinteraction::SystemAtom< Scalar >::SystemAtom ( std::shared_ptr< const basis_t basis)

Definition at line 22 of file SystemAtom.cpp.

Member Function Documentation

◆ set_diamagnetism_enabled()

template<typename Scalar >
SystemAtom< Scalar > & pairinteraction::SystemAtom< Scalar >::set_diamagnetism_enabled ( bool  enable)

Definition at line 56 of file SystemAtom.cpp.

◆ set_electric_field()

template<typename Scalar >
SystemAtom< Scalar > & pairinteraction::SystemAtom< Scalar >::set_electric_field ( const std::array< real_t, 3 > &  field)

Definition at line 26 of file SystemAtom.cpp.

Referenced by pairinteraction::DOCTEST_TEST_CASE(), and main().

+ Here is the caller graph for this function:

◆ set_ion_charge()

template<typename Scalar >
SystemAtom< Scalar > & pairinteraction::SystemAtom< Scalar >::set_ion_charge ( real_t  charge)

Definition at line 79 of file SystemAtom.cpp.

◆ set_ion_distance_vector()

template<typename Scalar >
SystemAtom< Scalar > & pairinteraction::SystemAtom< Scalar >::set_ion_distance_vector ( const std::array< real_t, 3 > &  vector)

Definition at line 64 of file SystemAtom.cpp.

◆ set_ion_interaction_order()

template<typename Scalar >
SystemAtom< Scalar > & pairinteraction::SystemAtom< Scalar >::set_ion_interaction_order ( int  value)

Definition at line 86 of file SystemAtom.cpp.

◆ set_magnetic_field()

template<typename Scalar >
SystemAtom< Scalar > & pairinteraction::SystemAtom< Scalar >::set_magnetic_field ( const std::array< real_t, 3 > &  field)

Definition at line 41 of file SystemAtom.cpp.


The documentation for this class was generated from the following files: