chbread.c

Read a matrix in chb format.

Matrix can be complex or not.

If the matrix is complex and FORCE_COMPLEX is not defined, imaginary part will be dropped.

If the matrix is real and FORCE_COMPLEX is defined, the imaginary part will be 0.

Summary
chbread.cRead a matrix in chb format.
chbReadHeaderReads header from a chb matrix file.
chbReadReads a matrix in chb format.
hbParseRfmtCHB float format parser
chbParseIfmt

chbReadHeader

void chbReadHeader(FILE *infile,
char *Type,
pastix_int_t *Nrow,
pastix_int_t *Ncol,
pastix_int_t *Nnzero,
pastix_int_t *Nrhs,
char *Ptrfmt,
char *Indfmt,
char *Valfmt,
char *Rhsfmt,
pastix_int_t *Ptrcrd,
pastix_int_t *Indcrd,
pastix_int_t *Valcrd,
pastix_int_t *Rhscrd,
char *RhsType)

Reads header from a chb matrix file.

header format is

title 73-80 Key
1-14 totcrd 15-28 ptrcrd 29-42 indcrd 43-56 valcrd 57-70 rhscrd
1-3 mxtype 15-28 nrow 29-42 ncol 43-56 nnzero 57-70 neltvl
1-16 ptrfmt 17-32 indfmt 33-52 valfmt 53-72 rhsfmt
1  2 rhstyp 3  15-28 nrhs 29-42 nrhsix

Parameters infile - File to read from Type - Type of the matrix Nrow - Number of row in the matrix Ncol - Number of columns in the matrix Nnzero - Number of non zeros in the matrix Nrhs - Number of right-hand-side terms Ptrfmt - Indfmt - Valfmt - Rhsfmt - Ptrcrd - Indcrd - Valcrd - Rhscrd - RhsType - Type of right-hand-side term(s)

chbRead

void chbRead(char const *filename,
pastix_int_t *Nrow,
pastix_int_t *Ncol,
pastix_int_t *Nnzero,
pastix_int_t **col,
pastix_int_t **row,
pastix_float_t **val,
char **Type,
char **RhsType,
pastix_float_t **rhs)

Reads a matrix in chb format.

Header is described in chbReadHeader Formats are sicribed in chbParseRfmt and chbParseIfmt

In our file we have header valuesFormat rowFormat columnFormat (rhsFormat) then the columns, the rows, the values, (the rhs)

Parameters

filenamePath to the file to read from
NrowNumber of rows
NcolNumber of columns
NnzeroNumber of non zeros
colIndex of first element of each column in row and val
rowRow of eah element
valValue of each element
TypeType of the matrix
RhsTypeType of the right-hand-side terms.
rhsright-hand-side term(s)

hbParseRfmt

void chbParseRfmt(char *fmt,
pastix_int_t *perline,
pastix_int_t *width,
pastix_int_t *prec,
char *flag)

CHB float format parser

Format is like :

(3(1P,E25.16))

or

(1P,3E25.16)

or

(1P3E25.16)

or

(3E25.16)

or

(3E25)

for perline = 3, format = E, width = 25 and prec = 16

Parameters

fmtformat to parse
perlinenumber of element per line width -
precPrecision flag -

chbParseIfmt

void chbParseIfmt(char *fmt,
pastix_int_t *perline,
pastix_int_t *width,
pastix_int_t *flag)
void chbReadHeader(FILE *infile,
char *Type,
pastix_int_t *Nrow,
pastix_int_t *Ncol,
pastix_int_t *Nnzero,
pastix_int_t *Nrhs,
char *Ptrfmt,
char *Indfmt,
char *Valfmt,
char *Rhsfmt,
pastix_int_t *Ptrcrd,
pastix_int_t *Indcrd,
pastix_int_t *Valcrd,
pastix_int_t *Rhscrd,
char *RhsType)
Reads header from a chb matrix file.
void chbRead(char const *filename,
pastix_int_t *Nrow,
pastix_int_t *Ncol,
pastix_int_t *Nnzero,
pastix_int_t **col,
pastix_int_t **row,
pastix_float_t **val,
char **Type,
char **RhsType,
pastix_float_t **rhs)
Reads a matrix in chb format.
void chbParseRfmt(char *fmt,
pastix_int_t *perline,
pastix_int_t *width,
pastix_int_t *prec,
char *flag)
CHB float format parser
void chbParseIfmt(char *fmt,
pastix_int_t *perline,
pastix_int_t *width,
pastix_int_t *flag)
void chbParseRfmt(char *fmt,
pastix_int_t *perline,
pastix_int_t *width,
pastix_int_t *prec,
char *flag)
Close