我在MatSetValues函数中遇到了“插入-nan + iG错误”。
我的代码是这样的:
我首先使用下面的代码将double更改为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 / include -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
这一次过去了。所以我想也许编译处理的差异导致了这个问题。有人对我的问题有任何想法吗?