我在函数 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 库,并将它与我程序的其他部分链接起来。
然而,它一直告诉我
在矩阵入口 (2,3) 处插入 -nan+iG!
(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
这次过去了。所以我想可能是编译处理的差异导致了这个问题。有人对我的问题有任何想法吗?