|
|
◆ HBWrite1()
| Sub HBWrite1 |
( |
Fname As |
String, |
|
|
ByVal Title As |
String, |
|
|
Key As |
String, |
|
|
Nrow As |
Long, |
|
|
Ncol As |
Long, |
|
|
Nnz As |
Long, |
|
|
Val() As |
Double, |
|
|
Ptr() As |
Long, |
|
|
Ind() As |
Long, |
|
|
DataType As |
Long, |
|
|
MatShape As |
Long, |
|
|
MatForm As |
Long, |
|
|
Optional Info As |
Long, |
|
|
Optional Fchk As |
Long = 0, |
|
|
Optional Base As |
Long = -1, |
|
|
Optional Format As |
Long = 0 |
|
) |
| |
Harwell-Boeing形式ファイルへの書き込み (シンプルドライバ)
- 目的
- Harwell-Boeing形式ファイルに疎行列 (CSR, CSC または COO形式) を書き込む.
データの順番など内容のチェックは行わずにそのまま書き込む.
右辺行列(初期推定ベクトル, 解ベクトルを含む)の書き込みは行わない.
- 引数
-
| [in] | Fname | 出力ファイル名. |
| [in] | Title | Title 文字列. |
| [in] | Key | Key 文字列. |
| [in] | Nrow | 行列の行数. (Nrow >= 0) (Nrow = 0 の場合, 処理を行わずに戻る) |
| [in] | Ncol | 行列の列数. (Ncol >= 0) (Ncol = 0 の場合, 処理を行わずに戻る) |
| [in] | Nnz | 非ゼロ要素数. (通常 Ptr(Nrow) - Ptr(0) (CSR) または Ptr(Ncol) - Ptr(0) (CSC) に等しい) (Nnz >= 0) (Nnz = 0 の場合, 処理を行わずに戻る) |
| [in] | Val() | 配列 Val(LVal - 1) (LInd >= Nnz)
非ゼロ要素. |
| [in] | Ptr() | 配列 Ptr(LPtr - 1) (LPtr >= Nrow + 1 (CSR), LPtr >= Ncol + 1 (CSC), または LPtr >= Nnz (COO))
行ポインタ(CSRの場合), 列ポインタ(CSC の場合), または 行インデクス(COO の場合). |
| [in] | Ind() | 配列 Ind(LInd - 1) (LInd >= Nnz)
列インデクス(CSR あるいは COO の場合), または 行インデクス(CSC の場合). |
| [in] | DataType | 行列のデータ型.
= 0: 実数.
= 2: パターン. |
| [in] | MatShape | 行列の形状.
= 0: 非対称行列.
= 1: 対称行列.
= 2: 歪対称(交代)行列.
= 4: 長方形行列. |
| [in] | MatForm | 行列の格納形式.
= 0: 疎行列. |
| [out] | Info | (省略可)
= 0: 正常終了.
= i < 0: (-i)番目の入力パラメータの誤り.
= 1: ファイルがオープンできなかった.
= 2: ファイルがすでに存在する.
= 5: メモリーエラー. |
| [in] | Fchk | (省略可)
出力ファイルのチェックフラグ. (省略時 = 0)
= 0: 指定されたファイルがすでに存在してかどうかをチェックせずに上書きする.
= 1: 指定されたファイルがすでに存在していればエラー(Info = 2)を返す. |
| [in] | Base | (省略可)
Ptr および Ind のインデクス形式. (省略時 = Ptr(0)
= 0: 0-ベース(C形式): 開始インデクス値が 0.
= 1: 1-ベース(Fortran形式): 開始インデクス値が 1. |
| [in] | Format | (省略可)
疎行列の格納形式. (省略時 = 0)
= 0: CSR形式.
= 1: CSC形式.
= 2: COO形式. |
- 使用例
- 次の行列を Harwell-Boeing 形式ファイル (Test_HBWrite1.rua) に書き込む.
( 0.2 -0.11 -0.93 )
A = ( -0.32 0.81 0.37 )
( -0.8 -0.92 -0.29 )
Sub Ex_HBWrite1()
Const Title = "Test HBWrite1", Key = "Key"
Const M = 3, N = 3, Nnz = M * N
Const DataType = 0, MatShape = 0, MatForm = 0
Dim A(Nnz - 1) As Double, Ia(M) As Long, Ja(Nnz - 1) As Long
Dim Info As Long
A(0) = 0.2: A(1) = -0.11: A(2) = -0.93: A(3) = -0.32: A(4) = 0.81: A(5) = 0.37: A(6) = -0.8: A(7) = -0.92: A(8) = -0.29
Ia(0) = 0: Ia(1) = 3: Ia(2) = 6: Ia(3) = 9
Ja(0) = 0: Ja(1) = 1: Ja(2) = 2: Ja(3) = 0: Ja(4) = 1: Ja(5) = 2: Ja(6) = 0: Ja(7) = 1: Ja(8) = 2
Call HBWrite1("Test_HBWrite1.rua", Title, Key, M, N, Nnz, A(), Ia(), Ja(), DataType, MatShape, MatForm, Info)
Debug.Print " HBWrite1: Info =" + Str(Info)
End Sub
Sub HBWrite1(Fname As String, ByVal Title As String, Key As String, Nrow As Long, Ncol As Long, Nnz As Long, Val() As Double, Ptr() As Long, Ind() As Long, DataType As Long, MatShape As Long, MatForm As Long, Optional Info As Long, Optional Fchk As Long=0, Optional Base As Long=-1, Optional Format As Long=0) Harwell-Boeing形式ファイルへの書き込み (シンプルドライバ)
- 実行結果
- 実行結果 (Test_HBWrite1.rua ファイル)
6 1 2 3 0
RUA 3 3 9 0
(8I10) (8I10) (3D23.15) (3D23.15)
1 4 7 10
1 2 3 1 2 3 1 2
3
2.000000000000000e-01 -3.200000000000000e-01 -8.000000000000000e-01
-1.100000000000000e-01 8.100000000000001e-01 -9.200000000000000e-01
-9.300000000000000e-01 3.700000000000000e-01 -2.900000000000000e-01
|