0

我目前正在编写一些代码,其中涉及在 Fortran 中构建一个稀疏矩阵并解决一个简单的 AX=b 线性系统。为此,我应项目主管的要求使用 Pardiso 稀疏矩阵库。

代码分为两部分。前半部分构建矩阵和右手边,后半部分调用 Pardiso 解决该系统。我知道前半部分有效,因为将这些数据导出到 Fortran 之外并用 Python 解决系统产生了预期的结果。但是,我无法让 Pardiso 正常工作,主要是因为我误解了它给出的错误消息。该手册解释得很少,互联网论坛上也很少(没有双关语)充斥着与 Pardiso 相关的问题。

我用于 Pardiso 的设置如下:

iparm(1)=0
iparm(2)=2
iparm(6)=0
iparm(10)=13
iparm(11)=1
iparm(13)=1
iparm(19)=0
iparm(21)=1
iparm(26)=1
iparm(52)=1
mtype = 11
iparm(3) = 1
solver=0
mtype=11

我得到的错误是:

error PARDISO (sequence_ido,parameters ) error_num= 4 输入检查:

matrix_number_new 22 ido 32675 不兼容

手册或互联网没有说明这意味着什么。pardiso_chkmatrix并且pardiso_printstats不要吐出任何错误,所以我不确定发生了什么。

4

1 回答 1

0

很难确定问题是什么,但这里有一个假设。32675 的值可疑地接近可以存储在 2 字节变量(在 C 中:“short int”类型变量)中的最大整数值,它等于 32767。显然 Pardiso 中的一些内部数组将整数值存储为“short int”(2 字节)而不是“int”(4 字节),以节省内存。正如我所说,这只是一种可能性。

于 2016-06-05T12:18:29.773 回答