Вставка -nan + iG при вводе матрицы с использованием SLEPc

Я получил «Вставка -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

На этот раз это прошло. Так что я думаю, что, возможно, разница в обработке компиляции вызвала проблему. Кто-нибудь имеет представление о моей проблеме?

1

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]