使用SLEPc在矩阵入口处插入-nan + iG

时间:2014-05-07 10:00:58

标签: c++ petsc

我在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

这一次过去了。所以我想也许编译处理的差异导致了这个问题。有人对我的问题有任何想法吗?

0 个答案:

没有答案