mpqc::HBTupleGenerator< RO, RI, AbsHBData, T > Class Template Reference
Collaboration diagram for mpqc::HBTupleGenerator< RO, RI, AbsHBData, T >:

Documentation

template<std::size_t RO, std::size_t RI, bool AbsHBData = true, typename T = double>
class mpqc::HBTupleGenerator< RO, RI, AbsHBData, T >

HBTupleGenerator (HB="heat-bath") generates tuples like TupleGenerator<>, but instead of generating all tuples from a host range of integers, every input tuple defines its own output tuple range, with its every element associated with a decreasing magnitude (importance).

Template Parameters
ROoutput tuple rank
RIinput tuple rank
AbsHBDatawhether uses a HBData object containing absolute values (magnitudes) or not
Tthe values contained by the HBData object

Public Types

using value_type = const std::array< orbital_index_type, RO >
 
using input_tuple_type = std::array< orbital_index_type, RI >
 
using output_tuple_type = std::array< orbital_index_type, RO >
 
- Public Types inherited from mpqc::utility::GeneratorRangeFacade< HBTupleGenerator< RO, RI, true, double >, const std::array< orbital_index_type, RO > >
typedef GeneratorIterator< HBTupleGenerator< RO, RI, true, double >, HBTupleGenerator< RO, RI, true, double > *, const std::array< orbital_index_type, RO > > iterator
 
typedef GeneratorIterator< HBTupleGenerator< RO, RI, true, double >, HBTupleGenerator< RO, RI, true, double > *, const const std::array< orbital_index_type, RO > > const_iterator
 

Public Member Functions

 HBTupleGenerator (std::shared_ptr< const HBSparseTensor< RI, RO, AbsHBData, T >> hbdata, const input_tuple_type &input, typename HBSparseTensor< RI, RO, AbsHBData, T >::magnitude_type epsilon)
 
 HBTupleGenerator (const HBTupleGenerator &)=default
 
HBTupleGeneratoroperator= (const HBTupleGenerator &)=default
 
 operator bool () const
 
HBTupleGeneratoroperator++ ()
 
const output_tuple_typeoperator* () const
 
const auto & attribute () const
 
bool operator== (HBTupleGenerator const &other) const
 
- Public Member Functions inherited from mpqc::utility::GeneratorRangeFacade< HBTupleGenerator< RO, RI, true, double >, const std::array< orbital_index_type, RO > >
const_iterator begin ()
 
const_iterator end () const
 

Member Typedef Documentation

◆ input_tuple_type

template<std::size_t RO, std::size_t RI, bool AbsHBData = true, typename T = double>
using mpqc::HBTupleGenerator< RO, RI, AbsHBData, T >::input_tuple_type = std::array<orbital_index_type, RI>

◆ output_tuple_type

template<std::size_t RO, std::size_t RI, bool AbsHBData = true, typename T = double>
using mpqc::HBTupleGenerator< RO, RI, AbsHBData, T >::output_tuple_type = std::array<orbital_index_type, RO>

◆ value_type

template<std::size_t RO, std::size_t RI, bool AbsHBData = true, typename T = double>
using mpqc::HBTupleGenerator< RO, RI, AbsHBData, T >::value_type = const std::array<orbital_index_type, RO>

Constructor & Destructor Documentation

◆ HBTupleGenerator() [1/2]

template<std::size_t RO, std::size_t RI, bool AbsHBData = true, typename T = double>
mpqc::HBTupleGenerator< RO, RI, AbsHBData, T >::HBTupleGenerator ( std::shared_ptr< const HBSparseTensor< RI, RO, AbsHBData, T >>  hbdata,
const input_tuple_type input,
typename HBSparseTensor< RI, RO, AbsHBData, T >::magnitude_type  epsilon 
)
inline

initializes generator using HB-format sparse tensor and an input tuple

Parameters
[in]hbdatathe HBData object
[in]inputinput tuple
[in]epsiloncontrols where the range ends; the iteration stops when the element magnitude falls below epsilon
[in]endif true, will point to the end of the range, else will point to the beginning (if possible)

◆ HBTupleGenerator() [2/2]

template<std::size_t RO, std::size_t RI, bool AbsHBData = true, typename T = double>
mpqc::HBTupleGenerator< RO, RI, AbsHBData, T >::HBTupleGenerator ( const HBTupleGenerator< RO, RI, AbsHBData, T > &  )
default

Member Function Documentation

◆ attribute()

template<std::size_t RO, std::size_t RI, bool AbsHBData = true, typename T = double>
const auto& mpqc::HBTupleGenerator< RO, RI, AbsHBData, T >::attribute ( ) const
inline

◆ operator bool()

template<std::size_t RO, std::size_t RI, bool AbsHBData = true, typename T = double>
mpqc::HBTupleGenerator< RO, RI, AbsHBData, T >::operator bool ( ) const
inlineexplicit
Returns
true if not at the end

◆ operator*()

template<std::size_t RO, std::size_t RI, bool AbsHBData = true, typename T = double>
const output_tuple_type& mpqc::HBTupleGenerator< RO, RI, AbsHBData, T >::operator* ( ) const
inline

◆ operator++()

template<std::size_t RO, std::size_t RI, bool AbsHBData = true, typename T = double>
HBTupleGenerator& mpqc::HBTupleGenerator< RO, RI, AbsHBData, T >::operator++ ( )
inline

◆ operator=()

template<std::size_t RO, std::size_t RI, bool AbsHBData = true, typename T = double>
HBTupleGenerator& mpqc::HBTupleGenerator< RO, RI, AbsHBData, T >::operator= ( const HBTupleGenerator< RO, RI, AbsHBData, T > &  )
default

◆ operator==()

template<std::size_t RO, std::size_t RI, bool AbsHBData = true, typename T = double>
bool mpqc::HBTupleGenerator< RO, RI, AbsHBData, T >::operator== ( HBTupleGenerator< RO, RI, AbsHBData, T > const &  other) const
inline

The documentation for this class was generated from the following file:
  • mpqc/math/fock/hb.h