Я получил «Вставка -nan + iG error» в функции MatSetValues.
Мой код выглядит так:
Сначала я использую приведенный ниже код для изменения двойного в PETScScalar (я использую сложную версию).
for(i=0;i<nz;i++)temp[i] = Ax[i] + Az[i] * PETSC_i;
Затем я использую код ниже, чтобы вставить значения в матрицу.
ierr = MatSetValues(A,n,Conlumn_ptr,n,Ai,temp,INSERT_VALUES);
Вот проблема:
Я компилирую свой код PETSc в .so lib и связываю его с другой частью моей программы.
Тем не менее, он продолжает говорить мне
Вставка -nan + iG при входе в матрицу (2,3)!
(2,3) на самом деле равен нулю, и я могу напечатать его с помощью std :: cerr, который говорит мне, что он равен нулю.
Поэтому я копирую матрицу с экрана в файл и компилирую ее с параметрами:
g ++ test.cpp -L. -leigen_slepc -lstdc ++ -I / home / altria / software / slepc-3.4.4 / включает -I / home / altria / software / slepc-3.4.4 / arch-linux2-c-debug / include -I / home / altria /software/petsc-3.4.4/include -I / home / altria / software / petsc-3.4.4 / arch-linux2-c-debug / include
На этот раз это прошло. Так что я думаю, что, возможно, разница в обработке компиляции вызвала проблему. Кто-нибудь имеет представление о моей проблеме?
Задача ещё не решена.