【问题标题】:Fortran Pardiso sparse matrix formatting issuesFortran Pardiso 稀疏矩阵格式问题
【发布时间】:2016-10-02 11:44:29
【问题描述】:

我目前正在编写一些代码,其中涉及在 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 不要吐出任何错误,所以我不确定发生了什么。

【问题讨论】:

    标签: fortran sparse-matrix pardiso


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2016-10-03
      • 1970-01-01
      • 2013-05-05
      • 2020-10-16
      • 2018-01-19
      • 1970-01-01
      • 1970-01-01
      • 2012-12-10
      • 1970-01-01
      相关资源
      最近更新 更多