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;
int pos
Definition: sparse_pattern.h:68
const BasisInfoStruct & bis
Definition: sparse_pattern.h:129
bool operator!=(const Iterator &other) const
Definition: sparse_pattern.h:91
Iterator(const IntervalList::const_iterator &beg, const IntervalList::const_iterator &end_, int p)
Definition: sparse_pattern.h:69
const Column & operator[](int column) const
Definition: sparse_pattern.h:146
#define END_NAMESPACE(x)
Definition: sparse_pattern.h:42
int size() const
Returns the dimension of the pattern.
Definition: sparse_pattern.h:156
int operator*() const
Definition: sparse_pattern.h:99
Definition: sparse_pattern.h:61
#define BEGIN_NAMESPACE(x)
Definition: sparse_pattern.h:41
A way to store sparse matrix patterns.
Definition: sparse_pattern.h:53
int lo
Definition: sparse_pattern.h:57
Column * ranges
Definition: sparse_pattern.h:130
std::vector< Interval > IntervalList
Definition: sparse_pattern.h:60
Code for setting up basis functions starting from shells.
Definition: sparse_pattern.h:66
IntervalList list
Definition: sparse_pattern.h:62
int getColumnSize(int col) const
returns the number of stored elements for specified column.
Definition: sparse_pattern.h:151
void setupShellMap(const BasisInfoStruct &bis, int *shellMap, int *aoMap)
Definition: sparse_pattern.cc:446
IntervalList::const_iterator end
Definition: sparse_pattern.h:67
ranges are upper-exclusive: involve i: lo <= i < hi.
Definition: sparse_pattern.h:56
int size() const
Definition: sparse_pattern.h:119
int noOfBasisFuncs
Definition: basisinfo.h:120
Iterator end() const
Definition: sparse_pattern.h:115
IntervalList::const_iterator current
Definition: sparse_pattern.h:67
const Interval * operator->() const
Definition: sparse_pattern.h:103
Definition: basisinfo.h:112
Iterator begin() const
Definition: sparse_pattern.h:109
SparsePattern(const BasisInfoStruct &bis_)
Definition: sparse_pattern.h:132
~SparsePattern()
Definition: sparse_pattern.h:136
Interval(int l_, int h_)
Definition: sparse_pattern.h:58
Definition: grid_matrix.h:42
Iterator & operator++()
Definition: sparse_pattern.h:74