|
|
◆ HBReadInfo()
| Sub HBReadInfo |
( |
Fname As |
String, |
|
|
Title As |
String, |
|
|
Key As |
String, |
|
|
Nrow As |
Long, |
|
|
Ncol As |
Long, |
|
|
Nnz As |
Long, |
|
|
Neltvl As |
Long, |
|
|
Nrhs As |
Long, |
|
|
Nrhsix As |
Long, |
|
|
DataType As |
Long, |
|
|
MatShape As |
Long, |
|
|
MatForm As |
Long, |
|
|
RhsForm As |
Long, |
|
|
IniVec As |
Long, |
|
|
SolVec As |
Long, |
|
|
Optional Info As |
Long |
|
) |
| |
Harwell-Boeing形式ファイルから行列情報を読み出す
- 目的
- Harwell-Boeing形式ファイルから行列の形式およびサイズを読み出す.
- 引数
-
| [in] | Fname | 入力ファイル名. |
| [out] | Title | Title 文字列. |
| [out] | Key | Key 文字列. |
| [out] | Nrow | 行列の行数 (疎行列の場合).
変数の数 (Nu) (有限要素行列の場合). |
| [out] | Ncol | 行列の列数 (疎行列の場合).
基本行列の数 (Ne) (有限要素行列の場合). |
| [out] | Nnz | 非ゼロ要素数 (疎行列の場合).
変数インデクス数 (Nind) (有限要素行列の場合). |
| [out] | Neltvl | 使用しない (疎行列の場合).
要素数 (有限要素行列の場合). |
| [out] | Nrhs | 右辺行列の列数. |
| [out] | Nrhsix | 右辺行列の行インデックス数. (RhsForm = 1, MatForm = 0 (疎行列) の場合) |
| [out] | DataType | 行列のデータ型.
= 0: 実数.
= 1: 複素数.
= 2: パターン. |
| [out] | MatShape | 行列の形状.
= 0: 非対称行列.
= 1: 対称行列.
= 2: 歪対称(交代)行列.
= 3: エルミート行列.
= 4: 長方形行列. |
| [out] | MatForm | 行列の格納形式.
= 0: 疎行列.
= 1: 有限要素行列. |
| [out] | RhsForm | 右辺行列の格納形式.
= 0: 密行列.
= 1: 係数行列と同形式. |
| [out] | IniVec | 初期推定ベクトルが格納されているかどうか.
= 0: 格納しない.
= 1: 格納する. |
| [out] | SolVec | 解ベクトルが格納されているかどうか.
= 0: 格納しない.
= 1: 格納する. |
| [out] | Info | (省略可)
= 0: 正常終了.
=i < 0: (-i)番目の入力パラメータの誤り.
= 1: ファイルがオープンできなかった.
= 3: ファイル読み出しエラー.
= 4: 読み出しフォーマットの誤り. |
- 使用例
- 次の Harwell-Boeing 形式ファイル (Test_HBWrite.rua) の行列情報を読み出す.
7 1 2 3 1
RUA 3 3 9 0
(8I10) (8I10) (3D23.15) (3D23.15)
F 1 0
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
-3.727000000000000e-01 4.319000000000000e-01 -1.424700000000000e+00
Sub HBWrite(Fname As String, ByVal Title As String, Key As String, Nrow As Long, Ncol As Long, Nnz As Long, Neltvl As Long, Val() As Double, Ptr() As Long, Ind() As Long, Nrhs As Long, Nrhsix As Long, Rhsval() As Double, Rhsptr() As Long, Rhsind() As Long, Sguess() As Double, Xexact() As Double, DataType As Long, MatShape As Long, MatForm As Long, RhsForm As Long, IniVec As Long, SolVec As Long, Optional Info As Long, Optional Fchk As Long=0, Optional Base As Long=-1, Optional Format As Long=0, Optional IntN As Long=8, Optional IntW As Long=10, Optional DblN As Long=3, Optional DblW As Long=23, Optional DblD As Long=15) Harwell-Boeing形式ファイルへの書き込み
Sub Ex_HBReadInfo()
Dim Title As String, Key As String
Dim M As Long, N As Long, Nnz As Long, Neltvl As Long, Nrhs As Long, Nrhsix As Long
Dim DataType As Long, MatShape As Long, MatForm As Long, RhsForm As Long, IniVec As Long, SolVec As Long
Dim Info As Long
Call HBReadInfo("Test_HBWrite.rua", Title, Key, M, N, Nnz, Neltvl, Nrhs, Nrhsix, DataType, MatShape, MatForm, RhsForm, IniVec, SolVec, Info)
Debug.Print "Title = """ + Title + """, Key = """ + Key + """, M =" + Str(M) + ", N =" + Str(N) + ", Nnz =" + Str(Nnz) + ", Neltvl =" + Str(Neltvl) + ", Nrhs =" + Str(Nrhs) + ", Nrhsix =" + Str(Nrhsix)
Debug.Print "DataType =" + Str(DataType) + ", MatShape =" + Str(MatShape) + ", MatForm =" + Str(MatForm) + ", RhsForm = " + Str(RhsForm) + ", IniVec =" + Str(IniVec) + ", SolVec = " + Str(SolVec); ""
End Sub
Sub HBReadInfo(Fname As String, Title As String, Key As String, Nrow As Long, Ncol As Long, Nnz As Long, Neltvl As Long, Nrhs As Long, Nrhsix As Long, DataType As Long, MatShape As Long, MatForm As Long, RhsForm As Long, IniVec As Long, SolVec As Long, Optional Info As Long) Harwell-Boeing形式ファイルから行列情報を読み出す
- 実行結果
Title = "Test HBWrite", Key = "Key", M = 3, N = 3, Nnz = 9, Neltvl = 0, Nrhs = 1, Nrhsix = 0
DataType = 0, MatShape = 0, MatForm = 0, RhsForm = 0, IniVec = 0, SolVec = 0
|