37#if !defined(_DFT_SPARSE_PATTERN_H_)
38#define _DFT_SPARSE_PATTERN_H_ 1
40#if !defined(BEGIN_NAMESPACE)
41#define BEGIN_NAMESPACE(x) namespace x {
42#define END_NAMESPACE(x) }
64 void addInterval(
int lo,
int hi);
65 void addIntervals(
int nIntervals,
int (*intervals)[2]);
67 IntervalList::const_iterator
current, end;
69 Iterator(
const IntervalList::const_iterator& beg,
70 const IntervalList::const_iterator& end_,
int p)
71 : current(beg), end(end_), pos(p)
77 if(pos == current->hi)
78 printf(
"Iterator increased to %d current limit %d last? %s %s\n",
80 & *current == & *end ?
"YES" :
"NO",
81 current == end ?
"YES" :
"NO");
83 if(pos >= current->hi) {
92 bool res = !(& *current == & *other.
current && pos == other.
pos);
94 printf(
"Iterator::operator!=() compares %p with %p, returns %s \n",
95 & *current, & *other.
current, res ?
"TRUE" :
"FALSE");
110 IntervalList::const_iterator a = list.begin();
111 IntervalList::const_iterator b = list.
end();
112 return Iterator(a, b, a != list.end() ? a->lo : 0);
116 return Iterator(list.end(),list.end(),0);
121 for(IntervalList::const_iterator i = list.begin();
122 i != list.end(); ++i)
123 result += i->hi- i->lo;
133 : bis(bis_), ranges(new
Column[bis_.noOfBasisFuncs])
142 void add(
int nRanges,
const int (*range)[2]);
144 void save(FILE *f)
const;
147 return ranges[column];
152 return ranges[col].
size();
160 int sizeTotal()
const;
Code for setting up basis functions starting from shells.
A way to store sparse matrix patterns.
Definition: sparse_pattern.h:53
const Column & operator[](int column) const
Definition: sparse_pattern.h:146
std::vector< Interval > IntervalList
Definition: sparse_pattern.h:60
~SparsePattern()
Definition: sparse_pattern.h:136
const BasisInfoStruct & bis
Definition: sparse_pattern.h:129
int getColumnSize(int col) const
returns the number of stored elements for specified column.
Definition: sparse_pattern.h:151
int size() const
Returns the dimension of the pattern.
Definition: sparse_pattern.h:156
SparsePattern(const BasisInfoStruct &bis_)
Definition: sparse_pattern.h:132
Column * ranges
Definition: sparse_pattern.h:130
Definition: grid_matrix.h:42
void setupShellMap(const BasisInfoStruct &bis, int *shellMap, int *aoMap)
Definition: sparse_pattern.cc:446
#define END_NAMESPACE(x)
Definition: sparse_pattern.h:42
#define BEGIN_NAMESPACE(x)
Definition: sparse_pattern.h:41
Definition: basisinfo.h:112
int noOfBasisFuncs
Definition: basisinfo.h:120
Definition: sparse_pattern.h:66
bool operator!=(const Iterator &other) const
Definition: sparse_pattern.h:91
Iterator & operator++()
Definition: sparse_pattern.h:74
int pos
Definition: sparse_pattern.h:68
IntervalList::const_iterator current
Definition: sparse_pattern.h:67
int operator*() const
Definition: sparse_pattern.h:99
Iterator(const IntervalList::const_iterator &beg, const IntervalList::const_iterator &end_, int p)
Definition: sparse_pattern.h:69
IntervalList::const_iterator end
Definition: sparse_pattern.h:67
const Interval * operator->() const
Definition: sparse_pattern.h:103
Definition: sparse_pattern.h:61
Iterator end() const
Definition: sparse_pattern.h:115
Iterator begin() const
Definition: sparse_pattern.h:109
int size() const
Definition: sparse_pattern.h:119
IntervalList list
Definition: sparse_pattern.h:62
ranges are upper-exclusive: involve i: lo <= i < hi.
Definition: sparse_pattern.h:56
int hi
Definition: sparse_pattern.h:57
Interval(int l_, int h_)
Definition: sparse_pattern.h:58