运行AGMG时出现分段错误

时间:2012-08-29 18:23:31

标签: math linear-algebra numerical-methods

我已经将一个C ++程序与AGMG库中的fortran dagmg.f90例程相关联。最初,稀疏矩阵由CRS格式的特征库构建,然后我将其转换为fortran例程所需的格式。 AGMG运行并计算非零数,并显示未知数。但随后它突然显示出分段错误。我无法弄清楚它背后的原因是什么。

    int jatest[NNZ];
int iatest[nodes+1];
double bftest[nodes];
double VXtest[nodes];
// code to convert Af into a, ja, ia vectors for AGMG
double *aptr; int* japtr; int* iaptr;
aptr = Af.valuePtr();
japtr = Af.innerIndexPtr();
iaptr = Af.outerIndexPtr();
for (i = 0; i < NNZ ; i++ ){
  atest[i] = aptr[i];
  jatest[i] = japtr[i] + 1;
 // cout << atest[i] << "\t" << japtr[i] << endl;
}
for ( i = 0; i <= nodes; i++){
  iatest[i] = iaptr[i] + 1;
   }
 dagmg_(nodes,atest,jatest,iatest,bftest,VXtest,ijob,iprint,nrest,iter,tol);

输出如下:

* 输入AGMG * ** * ** * ** * ** < EM> * ** * ** * ** * ** * ** < EM> * ** * ** * **

未知数量:17 ** 非零:51(每行:3.00)

分段错误

为什么我得到这个错?

1 个答案:

答案 0 :(得分:1)

问题解决了:

实际上问题在于AGMG调用LAPACK函数直接解决最粗糙的级别。在更改链接到AGMG的lapack库之后,解决了分段错误的问题。

仅供参考:

g++ *.o ~/lapack-3.4.1/liblapack.a ~/CLAPACK-3.2.1/lapack_LINUX.a ~/mylibs/blas_LINUX.a ~/CLAPACK-3.2.1/blas_LINUX.a ~/CLAPACK-3.2.1/F2CLIBS/libf2c.a ~/lapack-3.4.1/liblapack.a -o myexe -lgfortran