mpqc::HBCompositeGenerator< TGenerator, AbsHBData, T, Ranks > Struct Template Reference
Collaboration diagram for mpqc::HBCompositeGenerator< TGenerator, AbsHBData, T, Ranks >:

Documentation

template<typename TGenerator, bool AbsHBData, typename T, std::size_t... Ranks>
struct mpqc::HBCompositeGenerator< TGenerator, AbsHBData, T, Ranks >

Combines a generator producing tuples with HBTupleGenerator.

Template Parameters
TGeneratora generator type producing generalized tuples
AbsHBDatawhether uses a HBData object containing absolute values (magnitudes) or not
Tthe values contained by the HBData object
Ranksresult rank or ranks; if Ranks is a single value, produces std::tuple<const std::array<orbital_index_type, Ranks>&, const typename TGenerator::value_type&> else produces std::tuple<std::tuple<const std::array<orbital_index_type, Ranks>&...>, const typename TGenerator::value_type&>

Public Types

using tvalue_type = typename TGenerator::value_type
 
using hbvalue_type = std::conditional_t< sizeof...(Ranks)==1, std::array< orbital_index_type, Rank >, std::tuple< const std::array< orbital_index_type, Ranks > &... > >
 
using value_type = std::tuple< const hbvalue_type &, const tvalue_type & >
 
using base_type = utility::GeneratorRangeFacade< HBCompositeGenerator< TGenerator, AbsHBData, T, Ranks... >, value_type >
 
using HBGenerator = HBTupleGenerator< Rank, RI, AbsHBData, T >
 
- Public Types inherited from mpqc::utility::GeneratorRangeFacade< HBCompositeGenerator< TGenerator, AbsHBData, T, Ranks... >, std::tuple< const std::conditional_t< sizeof...(Ranks)==1, std::array< orbital_index_type,(...+Ranks)>, std::tuple< const std::array< orbital_index_type, Ranks > &... > > &, const TGenerator::value_type & > >
typedef GeneratorIterator< HBCompositeGenerator< TGenerator, AbsHBData, T, Ranks... >, HBCompositeGenerator< TGenerator, AbsHBData, T, Ranks... > *, std::tuple< const std::conditional_t< sizeof...(Ranks)==1, std::array< orbital_index_type,(...+Ranks)>, std::tuple< const std::array< orbital_index_type, Ranks > &... > > &, const TGenerator::value_type & > > iterator
 
typedef GeneratorIterator< HBCompositeGenerator< TGenerator, AbsHBData, T, Ranks... >, HBCompositeGenerator< TGenerator, AbsHBData, T, Ranks... > *, const std::tuple< const std::conditional_t< sizeof...(Ranks)==1, std::array< orbital_index_type,(...+Ranks)>, std::tuple< const std::array< orbital_index_type, Ranks > &... > > &, const TGenerator::value_type & > > const_iterator
 

Public Member Functions

template<typename TGenerator_ >
 HBCompositeGenerator (TGenerator_ &&tgenerator, std::shared_ptr< const HBSparseTensor< RI, Rank, AbsHBData, T >> hbtensor, typename HBSparseTensor< RI, Rank, AbsHBData, T >::magnitude_type epsilon)
 
 operator bool () const
 
HBCompositeGeneratoroperator++ ()
 
const value_typeoperator* () const
 
bool operator== (const HBCompositeGenerator &other) const
 
const auto & tgenerator () const
 
const auto & hbgenerator () const
 
const_iterator begin ()
 
const_iterator end () const
 
- Public Member Functions inherited from mpqc::utility::GeneratorRangeFacade< HBCompositeGenerator< TGenerator, AbsHBData, T, Ranks... >, std::tuple< const std::conditional_t< sizeof...(Ranks)==1, std::array< orbital_index_type,(...+Ranks)>, std::tuple< const std::array< orbital_index_type, Ranks > &... > > &, const TGenerator::value_type & > >
const_iterator begin ()
 
const_iterator end () const
 

Static Public Attributes

constexpr static std::size_t Rank = (... + Ranks)
 
constexpr static std::size_t arity = sizeof...(Ranks)
 
constexpr static std::size_t RI
 

Member Typedef Documentation

◆ base_type

template<typename TGenerator , bool AbsHBData, typename T , std::size_t... Ranks>
using mpqc::HBCompositeGenerator< TGenerator, AbsHBData, T, Ranks >::base_type = utility::GeneratorRangeFacade< HBCompositeGenerator<TGenerator, AbsHBData, T, Ranks...>, value_type>

◆ HBGenerator

template<typename TGenerator , bool AbsHBData, typename T , std::size_t... Ranks>
using mpqc::HBCompositeGenerator< TGenerator, AbsHBData, T, Ranks >::HBGenerator = HBTupleGenerator<Rank, RI, AbsHBData, T>

◆ hbvalue_type

template<typename TGenerator , bool AbsHBData, typename T , std::size_t... Ranks>
using mpqc::HBCompositeGenerator< TGenerator, AbsHBData, T, Ranks >::hbvalue_type = std::conditional_t< sizeof...(Ranks) == 1, std::array<orbital_index_type, Rank>, std::tuple<const std::array<orbital_index_type, Ranks>&...> >

◆ tvalue_type

template<typename TGenerator , bool AbsHBData, typename T , std::size_t... Ranks>
using mpqc::HBCompositeGenerator< TGenerator, AbsHBData, T, Ranks >::tvalue_type = typename TGenerator::value_type

◆ value_type

template<typename TGenerator , bool AbsHBData, typename T , std::size_t... Ranks>
using mpqc::HBCompositeGenerator< TGenerator, AbsHBData, T, Ranks >::value_type = std::tuple<const hbvalue_type&, const tvalue_type&>

Constructor & Destructor Documentation

◆ HBCompositeGenerator()

template<typename TGenerator , bool AbsHBData, typename T , std::size_t... Ranks>
template<typename TGenerator_ >
mpqc::HBCompositeGenerator< TGenerator, AbsHBData, T, Ranks >::HBCompositeGenerator ( TGenerator_ &&  tgenerator,
std::shared_ptr< const HBSparseTensor< RI, Rank, AbsHBData, T >>  hbtensor,
typename HBSparseTensor< RI, Rank, AbsHBData, T >::magnitude_type  epsilon 
)
inline

Member Function Documentation

◆ begin()

template<typename TGenerator , bool AbsHBData, typename T , std::size_t... Ranks>
const_iterator mpqc::utility::GeneratorRangeFacade< Generator, Value >::begin
inline

◆ end()

template<typename TGenerator , bool AbsHBData, typename T , std::size_t... Ranks>
const_iterator mpqc::utility::GeneratorRangeFacade< Generator, Value >::end
inline

◆ hbgenerator()

template<typename TGenerator , bool AbsHBData, typename T , std::size_t... Ranks>
const auto& mpqc::HBCompositeGenerator< TGenerator, AbsHBData, T, Ranks >::hbgenerator ( ) const
inline

◆ operator bool()

template<typename TGenerator , bool AbsHBData, typename T , std::size_t... Ranks>
mpqc::HBCompositeGenerator< TGenerator, AbsHBData, T, Ranks >::operator bool ( ) const
inlineexplicit
Returns
true if there are no more items to generate

◆ operator*()

template<typename TGenerator , bool AbsHBData, typename T , std::size_t... Ranks>
const value_type& mpqc::HBCompositeGenerator< TGenerator, AbsHBData, T, Ranks >::operator* ( ) const
inline

◆ operator++()

template<typename TGenerator , bool AbsHBData, typename T , std::size_t... Ranks>
HBCompositeGenerator& mpqc::HBCompositeGenerator< TGenerator, AbsHBData, T, Ranks >::operator++ ( )
inline

◆ operator==()

template<typename TGenerator , bool AbsHBData, typename T , std::size_t... Ranks>
bool mpqc::HBCompositeGenerator< TGenerator, AbsHBData, T, Ranks >::operator== ( const HBCompositeGenerator< TGenerator, AbsHBData, T, Ranks > &  other) const
inline

return true if the current state of generators of other and this are identical

◆ tgenerator()

template<typename TGenerator , bool AbsHBData, typename T , std::size_t... Ranks>
const auto& mpqc::HBCompositeGenerator< TGenerator, AbsHBData, T, Ranks >::tgenerator ( ) const
inline

Member Data Documentation

◆ arity

template<typename TGenerator , bool AbsHBData, typename T , std::size_t... Ranks>
constexpr static std::size_t mpqc::HBCompositeGenerator< TGenerator, AbsHBData, T, Ranks >::arity = sizeof...(Ranks)
staticconstexpr

◆ Rank

template<typename TGenerator , bool AbsHBData, typename T , std::size_t... Ranks>
constexpr static std::size_t mpqc::HBCompositeGenerator< TGenerator, AbsHBData, T, Ranks >::Rank = (... + Ranks)
staticconstexpr

◆ RI

template<typename TGenerator , bool AbsHBData, typename T , std::size_t... Ranks>
constexpr static std::size_t mpqc::HBCompositeGenerator< TGenerator, AbsHBData, T, Ranks >::RI
staticconstexpr
Initial value:
=
utility::recursive_tuple_size_v<tvalue_type>

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