138 NumMyRows_ = Graph.NumMyRows();
139 int NumNz = Graph.NumMyNonzeros();
145 std::vector<int> ia(NumMyRows_+1,0);
146 std::vector<int> ja(NumNz);
148 for(
int i = 0; i < NumMyRows_; ++i )
150 int * tmpP = &ja[ia[i]];
151 Graph.ExtractMyRowCopy( i, NumNz-ia[i], cnt, tmpP );
152 ia[i+1] = ia[i] + cnt;
156 std::vector<int> iat(NumMyRows_+1);
157 std::vector<int> jat(NumNz);
159 for(
int i = 0; i < NumMyRows_; ++i )
162 for(
int j = ia[i]; j < ia[i+1]; ++j )
164 if( ja[j] < NumMyRows_ )
170 iat[NumMyRows_] = loc;
173 Reorder_.resize(NumMyRows_);
174 std::vector<double> info(TRILINOS_AMD_INFO);
176 trilinos_amd_order( NumMyRows_, &iat[0], &jat[0], &Reorder_[0], NULL, &info[0] );
178 if( info[TRILINOS_AMD_STATUS] == TRILINOS_AMD_INVALID )
179 cout <<
"AMD ORDERING: Invalid!!!!" << endl;
182 InvReorder_.resize(NumMyRows_);
184 for (
int i = 0 ; i < NumMyRows_ ; ++i)
187 for (
int i = 0 ; i < NumMyRows_ ; ++i)
188 InvReorder_[Reorder_[i]] = i;
190 for (
int i = 0 ; i < NumMyRows_ ; ++i) {
191 if (InvReorder_[i] == -1)