1

介绍

我正在用 Fortran 开发一个代码,通过对线性算子进行预处理来解决 MHD 问题。待反转的稀疏矩阵可以认为是以下层次结构的矩阵。原始矩阵(例如,A_1)是块的带状矩阵。A_1 的每个块都是相同结构(即块带状矩阵)的稀疏矩阵(例如,A_2)。A_2 的每个块又是相同稀疏结构 A_3 的块带状矩阵。最后,A_3 的每个块是一个 5 x 5 的密集矩阵 A_4。我发现这种分层表示对于初始化矩阵的元素非常方便。

问题

我想知道是否存在一个库(在 Fortran 中)允许处理这种结构并将其转换为标准稀疏矩阵格式之一(CSR、CSC、BSR、...),因为 Sparse BLAS 或 MKL Pardiso 将用于反转它。让我强调一下,我的意图是仅使用层次结构来初始化矩阵的元素。当然,层次结构可以忽略,矩阵可以硬编码为 CSR 格式,但我发现这太耗时,无法实现和测试。

注释

  1. 我不期望线性求解器使用分层结构,尽管在 S. Pissanetsky “稀疏矩阵技术”,1984 年,学术出版社,第 27 页(可在此处在线获得)中提到了此类存储方案,即“超矩阵”和“超稀疏”存储方案,并用于高斯消除。我还没有找到这些方案的可用实现。

  2. 块压缩稀疏行 (BSR) 格式(由 MKL 支持)可用于处理两层矩阵,A_3(sparse) + A_4(dense),仅此而已。

4

0 回答 0