我已将 C++ 程序与 AGMG 库中的 fortran dagmg.f90 例程链接起来。最初,稀疏矩阵由 Eigen 库以 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 * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * **
未知数:17 ** 非零数:51(每行:3.00)
分段故障
为什么我会出现这个错误???