184 int NumIn, NumL, NumU;
197 std::vector<int> L(MaxNumIndices);
198 std::vector<int> U(MaxNumIndices);
214 for (j=0; j< NumIn; j++) {
219 if (k==i) DiagFound =
true;
235 if (NumL)
L_Graph_->InsertMyIndices(i, NumL, &L[0]);
236 if (NumU)
U_Graph_->InsertMyIndices(i, NumU, &U[0]);
255 std::vector<std::vector<int> > Levels(MaxRC);
256 std::vector<int> LinkList(MaxRC);
257 std::vector<int> CurrentLevel(MaxRC);
258 std::vector<int> CurrentRow(MaxRC);
259 std::vector<int> LevelsRowU(MaxRC);
267 int LenL =
L_Graph_->NumMyIndices(i);
268 int LenU =
U_Graph_->NumMyIndices(i);
269 int Len = LenL + LenU + 1;
272 CurrentRow[LenL] = i;
277 ierr1 =
U_Graph_->ExtractMyRowCopy(i, LenU, LenU, &CurrentRow[LenL+1]);
280 cout <<
"ierr1 = "<< ierr1 << endl;
281 cout <<
"i = " << i << endl;
282 cout <<
"NumMyBlockRows_ = " <<
U_Graph_->NumMyBlockRows() << endl;
287 for (j=0; j<Len-1; j++) {
288 LinkList[CurrentRow[j]] = CurrentRow[j+1];
289 CurrentLevel[CurrentRow[j]] = 0;
293 CurrentLevel[CurrentRow[Len-1]] = 0;
297 First = CurrentRow[0];
301 int PrevInList = Next;
302 int NextInList = LinkList[Next];
313 for (ii=0; ii<LengthRowU; )
315 int CurInList = IndicesU[ii];
316 if (CurInList < NextInList)
319 int NewLevel = CurrentLevel[RowU] + Levels[RowU][ii+1] + 1;
322 LinkList[PrevInList] = CurInList;
323 LinkList[CurInList] = NextInList;
324 PrevInList = CurInList;
325 CurrentLevel[CurInList] = NewLevel;
329 else if (CurInList == NextInList)
331 PrevInList = NextInList;
332 NextInList = LinkList[PrevInList];
333 int NewLevel = CurrentLevel[RowU] + Levels[RowU][ii+1] + 1;
334 CurrentLevel[CurInList] =
EPETRA_MIN(CurrentLevel[CurInList], NewLevel);
339 PrevInList = NextInList;
340 NextInList = LinkList[PrevInList];
343 Next = LinkList[Next];
355 CurrentRow[LenL++] = Next;
356 Next = LinkList[Next];
360 int ierr11 =
L_Graph_->InsertMyIndices(i, LenL, &CurrentRow[0]);
365 if (Next != i)
return(-2);
367 LevelsRowU[0] = CurrentLevel[Next];
368 Next = LinkList[Next];
377 LevelsRowU[LenU+1] = CurrentLevel[Next];
378 CurrentRow[LenU++] = Next;
379 Next = LinkList[Next];
383 int ierr2 =
U_Graph_->InsertMyIndices(i, LenU, &CurrentRow[0]);
387 Levels[i] = std::vector<int>(LenU+1);
388 for (
int jj=0; jj<LenU+1; jj++) Levels[i][jj] = LevelsRowU[jj];