23 #ifndef COM_DAFER45_TBTK_HOPPING_AMPLITUDE_SET 24 #define COM_DAFER45_TBTK_HOPPING_AMPLITUDE_SET 146 template<
bool isConstIterator>
151 typedef typename std::conditional<
155 >::type HoppingAmplitudeReferenceType;
161 HoppingAmplitudeReferenceType
operator*();
164 bool operator==(
const _Iterator &rhs)
const;
170 int getMinBasisIndex()
const;
173 int getMaxBasisIndex()
const;
176 int getNumBasisIndices()
const;
180 typedef typename std::conditional<
184 >::type HoppingAmplitudeTreeIteratorType;
188 typedef typename std::conditional<
191 HoppingAmplitudeTree*
192 >::type HoppingAmplitudeTreePointerType;
196 HoppingAmplitudeTreeIteratorType iterator;
206 HoppingAmplitudeTreePointerType hoppingAmplitudeTree,
218 ) : _Iterator<false>(hoppingAmplitudeTree,
end){};
232 ) : _Iterator<true>(hoppingAmplitudeTree,
end){};
353 std::complex<double> **amplitudes,
355 int *numHoppingAmplitudes,
373 "HoppingAmplitudeSet::construct()",
374 "HoppingAmplitudeSet is already constructed.",
379 isConstructed =
true;
383 return isConstructed;
387 const Index &blockIndex
393 const Index &blockIndex
402 "HoppingAmplitudeSet::getSparseMatrix()",
403 "HoppingAmplitudeSet has to be constructed first.",
419 (*iterator).getAmplitude()
440 const Index &subspace
446 const Index &subspace
452 const Index &subspace
470 const Index &subspace
476 const Index &subspace
482 const Index &subspace
487 template<
bool isConstIterator>
488 inline bool HoppingAmplitudeSet::_Iterator<isConstIterator>::operator==(
491 return iterator == rhs.iterator;
494 template<
bool isConstIterator>
495 inline bool HoppingAmplitudeSet::_Iterator<isConstIterator>::operator!=(
498 return iterator != rhs.iterator;
508 template<
bool isConstIterator>
509 inline void HoppingAmplitudeSet::_Iterator<isConstIterator>::operator++(){
513 template<
bool isConstIterator>
514 inline typename HoppingAmplitudeSet::_Iterator<
516 >::HoppingAmplitudeReferenceType HoppingAmplitudeSet::_Iterator<
522 template<
bool isConstIterator>
523 inline int HoppingAmplitudeSet::_Iterator<isConstIterator>::getMinBasisIndex()
const{
524 return iterator.getMinBasisIndex();
527 template<
bool isConstIterator>
528 inline int HoppingAmplitudeSet::_Iterator<isConstIterator>::getMaxBasisIndex()
const{
529 return iterator.getMaxBasisIndex();
532 template<
bool isConstIterator>
533 inline int HoppingAmplitudeSet::_Iterator<isConstIterator>::getNumBasisIndices()
const{
534 return iterator.getNumBasisIndices();
537 template<
bool isConstIterator>
538 inline HoppingAmplitudeSet::_Iterator<isConstIterator>::_Iterator(
539 HoppingAmplitudeTreePointerType hoppingAmplitudeTree,
545 hoppingAmplitudeTree->end()
546 : hoppingAmplitudeTree->begin()
Node in tree used by HoppingAmplitudeSet to store HoppingAmplitudes .
int getFirstIndexInSubspace(const Index &subspaceIndex) const
Definition: HoppingAmplitudeTree.h:500
std::vector< Index > getIndexList(const Index &pattern) const
unsigned int getSizeInBytes() const
Definition: HoppingAmplitudeSet.h:501
Node in tree used by HoppingAmplitudeSet to store HoppingAmplitudes .
Definition: HoppingAmplitudeTree.h:40
unsigned int getSizeInBytes() const
Definition: HoppingAmplitudeTree.h:556
HoppingAmplitude container.
Definition: HoppingAmplitudeSet.h:50
SparseMatrix< std::complex< double > > getSparseMatrix() const
Definition: HoppingAmplitudeSet.h:398
const std::vector< HoppingAmplitude > & getHoppingAmplitudes(Index index) const
Hopping amplitude from state 'from' to state 'to'.
Definition: Serializable.h:43
int getLastIndexInSubspace(const Index &subspaceIndex) const
Definition: HoppingAmplitudeTree.h:516
int getBasisSize() const
Definition: HoppingAmplitudeTree.h:496
Data structure for mapping physical indices to a linear index.
void tabulate(std::complex< double > **amplitudes, int **indices, int *numHoppingAmplitudes, int *maxIndexSize) const
int getFirstIndexInBlock(const Index &blockIndex) const
Definition: HoppingAmplitudeSet.h:386
void add(HoppingAmplitude ha)
Index getSubspaceIndex(const Index &index) const
Iterator end()
Definition: HoppingAmplitudeSet.h:457
int getLastIndexInBlock(const Index &blockIndex) const
Definition: HoppingAmplitudeSet.h:392
std::vector< Index > getIndexListMultiplePatterns(const std::vector< Index > &patterns) const
Definition: HoppingAmplitudeSet.h:227
virtual std::string serialize(Mode mode) const
IndexTree getIndexTree() const
ConstIterator cbegin() const
Definition: HoppingAmplitudeSet.h:435
int getBasisIndex(const Index &index) const
void construct()
Definition: SparseMatrix.h:780
bool getIsConstructed() const
Definition: HoppingAmplitudeSet.h:382
Definition: HoppingAmplitudeSet.h:213
HoppingAmplitudeTree * getSubTree(const Index &subspace)
virtual ~HoppingAmplitudeSet()
Definition: HoppingAmplitudeTree.h:313
bool isProperSubspace(const Index &subspace) const
Hopping amplitude from state 'from' to state 'to'.
Definition: HoppingAmplitude.h:53
Data structure for mapping physical indices to linear indices.
Definition: IndexTree.h:35
Physical index.
Definition: Index.h:44
Iterator begin()
Definition: HoppingAmplitudeSet.h:427
Definition: SparseMatrix.h:35
Definition: HoppingAmplitudeTree.h:327
const Vector2d operator*(double lhs, const Vector2d &rhs)
Definition: Vector2d.h:129
Mode
Definition: Serializable.h:47
IndexTree getSubspaceIndices() const
void generateBasisIndices()
Index getPhysicalIndex(int basisIndex) const
ConstIterator cend() const
Definition: HoppingAmplitudeSet.h:465
void add(unsigned int row, unsigned int col, const DataType &value)
Definition: SparseMatrix.h:563
Abstract base class for serializable objects.
bool operator!=(const IndexTree &lhs, const IndexTree &rhs)
Definition: IndexTree.h:391
void construct()
Definition: HoppingAmplitudeSet.h:370