Fortran Pardiso稀疏矩阵格式问题



我目前正在编写一些代码,其中包括用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_chkmatrixpardiso_printstats没有出现任何错误,所以我不确定发生了什么

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

最新更新