getOrdering uses [keys] now
parent
14102e259e
commit
7b0c69da2d
|
@ -245,21 +245,20 @@ Ordering colamd(int n_col, int n_row, int nrNonZeros, const map<Key, vector<int>
|
||||||
int Alen = nrNonZeros*30; /* colamd arg 3: size of the array A TODO: use Tim's function ! */
|
int Alen = nrNonZeros*30; /* colamd arg 3: size of the array A TODO: use Tim's function ! */
|
||||||
int * A = new int[Alen]; /* colamd arg 4: row indices of A, of size Alen */
|
int * A = new int[Alen]; /* colamd arg 4: row indices of A, of size Alen */
|
||||||
int * p = new int[n_col + 1]; /* colamd arg 5: column pointers of A, of size n_col+1 */
|
int * p = new int[n_col + 1]; /* colamd arg 5: column pointers of A, of size n_col+1 */
|
||||||
{
|
|
||||||
p[0] = 0;
|
p[0] = 0;
|
||||||
int j = 1;
|
int j = 1;
|
||||||
int count = 0;
|
int count = 0;
|
||||||
typedef typename map<Key, vector<int> >::const_iterator iterator;
|
typedef typename map<Key, vector<int> >::const_iterator iterator;
|
||||||
for(iterator it = columns.begin(); it != columns.end(); it++)
|
for(iterator it = columns.begin(); it != columns.end(); it++) {
|
||||||
{
|
const Key& key = it->first;
|
||||||
const Key& key = it->first;
|
const vector<int>& column = it->second;
|
||||||
const vector<int>& column = it->second;
|
initialOrder.push_back(key);
|
||||||
initialOrder.push_back(key);
|
BOOST_FOREACH(int i, column) A[count++] = i; // copy sparse column
|
||||||
BOOST_FOREACH(int i, column) A[count++] = i; // copy sparse column
|
p[j] = count; // column j (base 1) goes from A[j-1] to A[j]-1
|
||||||
p[j] = count; // column j (base 1) goes from A[j-1] to A[j]-1
|
j+=1;
|
||||||
j+=1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
double* knobs = NULL; /* colamd arg 6: parameters (uses defaults if NULL) */
|
double* knobs = NULL; /* colamd arg 6: parameters (uses defaults if NULL) */
|
||||||
int stats[COLAMD_STATS]; /* colamd arg 7: colamd output statistics and error codes */
|
int stats[COLAMD_STATS]; /* colamd arg 7: colamd output statistics and error codes */
|
||||||
|
|
||||||
|
@ -290,12 +289,9 @@ Ordering LinearFactorGraph::getOrdering() const {
|
||||||
|
|
||||||
// loop over all factors = rows
|
// loop over all factors = rows
|
||||||
for (int i = 0; i < n_row; i++) {
|
for (int i = 0; i < n_row; i++) {
|
||||||
shared_factor factor = factors_[i];
|
set<Key> keys = factors_[i]->keys();
|
||||||
for (map<Key, Matrix>::const_iterator lit = factor->begin(); lit != factor->end(); lit++) {
|
BOOST_FOREACH(Key key, keys) columns[key].push_back(i);
|
||||||
const Key& key = lit->first;
|
nrNonZeros+= keys.size();
|
||||||
columns[key].push_back(i);
|
|
||||||
nrNonZeros++;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
int n_col = (int)(columns.size()); /* colamd arg 2: number of columns in A */
|
int n_col = (int)(columns.size()); /* colamd arg 2: number of columns in A */
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue