Go to the documentation of this file.
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;
IntervalList::const_iterator current
Definition: sparse_pattern.h:67
void addInterval(int lo, int hi)
Add interval { i: lo <= i < hi } to the list.
Definition: sparse_pattern.cc:46
const Column & operator[](int column) const
Definition: sparse_pattern.h:146
int noOfBasisFuncs
Definition: basisinfo.h:120
Common DFT routines. Mostly functional mixing.
Iterator end() const
Definition: sparse_pattern.h:115
int noOfBasisFuncs
Definition: basisinfo.h:80
int sizeTotal() const
returns the total number of nonzero elements.
Definition: sparse_pattern.cc:276
double ergo_real
Definition: realtype.h:69
Iterator(const IntervalList::const_iterator &beg, const IntervalList::const_iterator &end_, int p)
Definition: sparse_pattern.h:69
static void prepareAOMap(const BasisInfoStruct &bis, const int *shellMap, int *aoMap)
Prepares the AO map given a shell map.
Definition: sparse_pattern.cc:288
#define END_NAMESPACE(x)
Definition: sparse_pattern.h:42
Iterator & operator++()
Definition: sparse_pattern.h:74
const Interval * operator->() const
Definition: sparse_pattern.h:103
Definition: basisinfo.h:71
ShellSpecStruct * shellList
Definition: basisinfo.h:119
ergo_real centerCoords[3]
Definition: basisinfo.h:76
Definition: basisinfo.h:112
void addIntervals(int nIntervals, int(*intervals)[2])
Definition: sparse_pattern.cc:101
Class that can be used to store sparse matrix patterns.
ranges are upper-exclusive: involve i: lo <= i < hi.
Definition: sparse_pattern.h:56
real lo[3]
Definition: dft_common.h:167
bool operator!=(const Iterator &other) const
Definition: sparse_pattern.h:91
int pos
Definition: sparse_pattern.h:68
int getMaxDim() const
Return the index of the largest Cartesian dimension: 0 for x, 1 for y and 2 for z.
Definition: dft_common.cc:111
~SparsePattern()
Definition: sparse_pattern.h:136
Interval(int l_, int h_)
Definition: sparse_pattern.h:58
Definition: sparse_matrix.cc:65
int noOfShells
Definition: basisinfo.h:118
size_t size() const
Definition: sparse_matrix.cc:105
int size() const
Returns the dimension of the pattern.
Definition: sparse_pattern.h:156
Iterator begin() const
Definition: sparse_pattern.h:109
A way to store sparse matrix patterns.
Definition: sparse_pattern.h:53
std::list< int >::iterator begin()
Definition: sparse_matrix.cc:99
Class Box provides an ability to determine box containing all Objects.
Definition: dft_common.h:137
void save(FILE *f) const
Save itself to the specified stream.
Definition: sparse_pattern.cc:234
#define LOG_CAT_INFO
Definition: output.h:49
Definition: sparse_pattern.h:66
static ergo_real sqDist(const ergo_real a[], const ergo_real b[])
computes a squared distance between two points.
Definition: sparse_matrix.cc:55
Code for setting up basis functions starting from shells.
void setupShellMap(const BasisInfoStruct &bis, int *shellMap, int *aoMap)
Definition: sparse_pattern.cc:446
int size() const
Definition: sparse_pattern.h:119
std::list< int >::iterator end()
Definition: sparse_matrix.cc:102
SparsePattern(const BasisInfoStruct &bis_)
Definition: sparse_pattern.h:132
real hi[3]
Definition: dft_common.h:168
int startIndexInMatrix
Definition: basisinfo.h:81
IntervalList::const_iterator end
Definition: sparse_pattern.h:67
int operator*() const
Definition: sparse_pattern.h:99
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
Definition: grid_matrix.h:42
#define THR
Definition: fun-cam.c:75
int lo
Definition: sparse_pattern.h:57
void do_output(int logCategory, int logArea, const char *format,...)
Definition: output.cc:53
const BasisInfoStruct & bis
Definition: sparse_pattern.h:129
void add(int nRanges, const int(*range)[2])
marks specified ranges as used.
Definition: sparse_pattern.cc:170
Column * ranges
Definition: sparse_pattern.h:130
#define LOG_AREA_DFT
Definition: output.h:62
static void clusterShells(const ShellSpecStruct *shells, const Box &box, const std::vector< int > &inputList, std::vector< int > &result, int depth)
Definition: sparse_pattern.cc:399
Definition: sparse_pattern.h:61
void setupShellMap(const BasisInfoStruct &bis, int *shellMap, int *aoMap)
Definition: sparse_pattern.cc:446
std::vector< Interval > IntervalList
Definition: sparse_pattern.h:60
Functionality for writing output messages to a text file.
#define BEGIN_NAMESPACE(x)
Definition: sparse_pattern.h:41
void load(FILE *f)
Load itself from the specified stream.
Definition: sparse_pattern.cc:197
void ergoShellsToOrbs(const int *nshlbl, const int(*shlblock)[2], int *norbbl, int(*orbblock)[2], const BasisInfoStruct &bis)
transform shell block indices to orbital block indices.
Definition: dft_common.cc:708