我目前正在编写一些代码,涉及在Fortran中构建稀疏矩阵并解决一个简单的AX = b线性系统。为此,我应项目主管的要求使用Pardiso稀疏矩阵库。
代码分为两部分。前半部分构建矩阵和右侧,后半部分调用Pardiso来解决该系统。我知道上半部分正常工作,因为在Fortran之外导出数据并用Python解决系统会产生预期的结果。但是,我不能让Pardiso正常工作,主要是因为我误解了它给出的错误信息。该手册解释得很少,互联网论坛很少(没有双关语)填充了与Pardiso相关的问题。
我为Pardiso使用的设置如下:
function m1(){
$('.loader').show();
var xargs={
type : 'POST',
url : resourceUrls["listUrl"],
data : "sId="+sId,
async:false,
dataType : "text",
success : OnGetJsonCallback,
failure : function(response) {
$(".loader").hide();
}
};
$.ajax(xargs);
}
我得到的错误是:
错误PARDISO(sequence_ido,参数)error_num = 4输入检查:
matrix_number_new 22 ido 32675不兼容
手册或互联网没有说明这意味着什么。 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
和pardiso_chkmatrix
没有吐出任何错误,所以我不确定发生了什么。
答案 0 :(得分:0)
很难确定问题是什么,但这是一个假设。 32675的值可疑地接近可以存储在2字节变量中的最大整数值(在C:" short int"类型变量中),等于32767.显然Pardiso存储中的一些内部数组整数值为" short int" (2个字节)而不是" int"(4个字节),以节省内存。正如我所说,这只是一种可能性。