XLPack 7.0
XLPack 数値計算ライブラリ (C API) リファレンスマニュアル
読み取り中…
検索中…
一致する文字列を見つけられません

◆ hb_read()

void hb_read ( char *  fname,
char *  title,
char *  key,
char *  mxtype,
int *  nrow,
int *  ncol,
int *  nnz,
int *  neltvl,
double  val[],
int  lval,
int  ptr[],
int  lptr,
int  ind[],
int  lind,
char *  rhstyp,
int *  nrhs,
int *  nrhsix,
double  rhsval[],
int  lrhsval,
int  rhsptr[],
int  lrhsptr,
int  rhsind[],
int  lrhsind,
double  sguess[],
int  lsguess,
double  xexact[],
int  lxexact,
int  skip,
int  base,
int  format,
int  sort,
int *  info 
)

Harwell-Boeing形式ファイルの読み出し

目的
Harwell-Boeing形式ファイルから疎行列または有限要素行列(非組立形式)を読み出す.

読み出したデータは, データの順番など内容のチェックは行わずにそのまま配列に格納する. 疎行列は CSR, CSC または COO形式で格納される. ただし, オプションで疎行列を行あるいは列内で行番号の昇順に並べ替えることができる.
引数
[in]fname入力ファイル名.
fname = NULL の場合, stdinが使われる.
[out]title配列 title[ltitle] (ltitle >= 73)
Title 文字列.
[out]key配列 key[lkey] (lkey >= 9)
Key 文字列.
[out]mxtype[]配列 mxtype[3]
行列タイプ.
mxtype[0]: データ型.
= 'R': 実数.
= 'C': 複素数.
= 'P': パターン(行列データなし).
mxtype[1]: 行列の形状.
= 'U': 非対称行列.
= 'S': 対称行列.
= 'Z': 歪対称行列.
= 'H': エルミート行列.
= 'R': 長方形行列.
mxtype[2]: 格納形式.
= 'A': 疎行列.
= 'E': 有限要素行列.
[out]nrow行列の行数 (疎行列の場合).
変数の数 (Nu) (有限要素行列の場合).
[out]ncol行列の列数 (疎行列の場合).
基本行列の数 (Ne) (有限要素行列の場合).
[out]nnz非ゼロ要素数 (疎行列の場合).
変数インデクス数 (Nind) (有限要素行列の場合).
[out]neltvl使用しない (疎行列の場合).
要素数 (有限要素行列の場合).
[out]val[]配列 val[lval]
非ゼロ要素 (疎行列の場合).
要素の数値データ (有限要素行列の場合).
mxtype[0] = 'P' (データ型 = パターン) の場合, 参照されない.
[in]lvalval[] の配列サイズ. (lval >= nnz (疎行列の場合), lval >= neltvl (有限要素行列の場合))
mxtype[0] = 'C' (データ型 = 複素数) の場合, lval は2倍になる.
[out]ptr[]配列 ptr[lptr]
行ポインタ(CSRの場合), 列ポインタ(CSC の場合), または 行インデクス(COO の場合) (疎行列の場合).
変数インデクスへのポインタ (有限要素行列の場合).
[in]lptrptr[] の配列サイズ. (lptr >= nrow + 1 (CSR), lptr >= ncol + 1 (CSC, 有限要素行列), または lptr >= nnz (COO))
[out]ind[]配列 ind[lind]
列インデクス(CSR あるいは COO の場合), または 行インデクス(CSC の場合) (疎行列の場合).
変数インデクス (有限要素行列の場合)
[in]lindind[] の配列サイズ. (lind >= nnz)
[out]rhstyp[]配列 rhstyp[3]
右辺行列タイプ.
rhstyp[0]: 行列データ格納形式.
= 'F': 密行列.
= 'M': 係数行列と同形式.
rhstyp[1]: 初期推定ベクトル.
= 'G': 初期推定ベクトルを格納.
rhstyp[2]: 解ベクトル.
= 'X': 解ベクトルを格納.
注 - 右辺行列が格納されていないとき(nrhs <= 0)は rhstyp[] は参照されない.
[out]nrhs右辺行列の列数.
[out]nrhsix右辺行列の行インデックス数. (rhstyp[0] = 'M', mxtype[2] = 'A' (疎行列) の場合)
[out]rhsval[]配列 rhsval[lrhsval]
右辺行列値.
[in]lrhsvalrhsval[] の配列サイズ. (lrhsval >= nrow*nrhs (rhstyp[0] = 'F' (密行列) の場合), lrhsval >= nrhsix (rhstyp[0] = 'M', mxtype[2] = 'A' (疎行列) の場合), lrhsval >= nnz*nrhs (rhstyp[0] = 'M', mxtype[2] = 'E' (有限要素行列) の場合))
mxtype[0] = 'C' (データ型 = 複素数) の場合, lrhsval は2倍になる.
[out]rhsptr[]配列 rhsptr[lrhsptr]
右辺行列の行ポインタ(CSRの場合), 列ポインタ(CSC の場合), 行インデクス(COO の場合). (rhstyp[0] = 'M', mxtype[2] = 'A' (疎行列) の場合)
[in]lrhsptrrhsptr[] の配列サイズ. (lrhsptr >= nrow + 1 (CSRの場合), lrhsptr >= nrhs + 1 (CSCの場合), lrhsptr >= nrhsix (COOの場合))
[out]rhsind[]配列 rhsind[lrhsind]
右辺行列の列インデクス(CSR あるいは COO の場合), または 行インデクス(CSC の場合). (rhstyp[0] = 'M', mxtype[2] = 'A' (疎行列) の場合)
[in]lrhsindrhsind[] の配列サイズ. (lrhsind >= nrhsix)
[out]sguess[]配列 sguess[lsguess]
初期推定ベクトル. (rhstyp[1] = 'G' の場合)
[in]lsguesssguess[] の配列サイズ. (lsguess >= nrow*nrhs)
mxtype[0] = 'C' (データ型 = 複素数) の場合, lsguess は2倍になる.
[out]xexact[]配列 xexact[lxexact]
解ベクトル. (rhstyp[2] = 'X' の場合)
[in]lxexactxexact[] の配列サイズ. (lxexact >= nrow*nrhs)
mxtype[0] = 'C' (データ型 = 複素数) の場合, lxexact は2倍になる.
[in]skip一部のデータだけを読み出すときに以下のようにフラグを指定する.
ビット1(最下位ビット) = 1: 行列データを読み出さない.
ビット2 = 1: 右辺行列(初期推定ベクトルと解ベクトルを除く)を読み出さない.
ビット3 = 1: 初期推定ベクトルを読み出さない.
ビット4 = 1: 解ベクトルを読み出さない.
[in]baseptr, ind, rhsptr および rhsind のインデクス形式.
= 0: 0-ベース(C形式): 開始インデクス値が 0.
= 1: 1-ベース(Fortran形式): 開始インデクス値が 1.
[in]format疎行列の格納形式.
= 0: CSR形式.
= 1: CSC形式.
= 2: COO形式.
[in]sort読み出した疎行列を行内で列番号の昇順(CSR の場合) または 列内で行番号の昇順(CSC の場合)に並べ替えるかどうかを指定.
= 0: 並べ替えを行わない.
= 1: 並べ替えを行う.
[out]info= 0: 正常終了.
< 0: (-info)番目の入力パラメータの誤り.
= 1: ファイルがオープンできなかった.
= 3: ファイル読み込みエラー.
= 4: 読み出しフォーマットの誤り.
= 5: メモリーエラー.