ScaMaC  0.8.2
A Scalable Matrix Collection
scamac_generator.h
Go to the documentation of this file.
1 
8 #ifndef SCAMAC_GENERATOR_H
9 #define SCAMAC_GENERATOR_H
10 
11 #ifndef __cplusplus
12 #include <complex.h>
13 #endif
14 
15 
16 #include "scamac_error.h"
17 #include "scamac_inttypes.h"
18 #include "scamac_defs.h"
19 #include <stdbool.h>
20 
24 typedef struct scamac_generator_st ScamacGenerator;
28 typedef struct scamac_workspace_st ScamacWorkspace;
29 
38 ScamacErrorCode scamac_generator_check(const ScamacGenerator * gen, char ** desc);
39 ScamacErrorCode scamac_generator_finalize(ScamacGenerator * gen);
40 ScamacErrorCode scamac_generator_destroy(ScamacGenerator * gen);
41 
42 ScamacErrorCode scamac_workspace_alloc(const ScamacGenerator * gen, ScamacWorkspace ** ws);
43 ScamacErrorCode scamac_workspace_free (ScamacWorkspace * ws);
44 
56 ScamacErrorCode scamac_generate_row(const ScamacGenerator * gen, ScamacWorkspace * ws, ScamacIdx irow, ScamacFlag flag,
57  ScamacIdx * nzr, ScamacIdx * cind, double * val);
58 
59 /* more specialized versions */
60 ScamacErrorCode scamac_generate_row_real (const ScamacGenerator * gen, ScamacWorkspace * ws, ScamacIdx irow, ScamacFlag flag, ScamacIdx * nzr, ScamacIdx * cind, double * val);
61 #ifndef __cplusplus
62 ScamacErrorCode scamac_generate_row_cplx (const ScamacGenerator * gen, ScamacWorkspace * ws, ScamacIdx irow, ScamacFlag flag, ScamacIdx * nzr, ScamacIdx * cind, double complex * val);
63 #endif
64 ScamacErrorCode scamac_generate_row_int (const ScamacGenerator * gen, ScamacWorkspace * ws, ScamacIdx irow, ScamacFlag flag, int * nzr, int * cind, double * val);
65 ScamacErrorCode scamac_generate_row_int_real(const ScamacGenerator * gen, ScamacWorkspace * ws, ScamacIdx irow, ScamacFlag flag, int * nzr, int * cind, double * val);
66 #ifndef __cplusplus
67 ScamacErrorCode scamac_generate_row_int_cplx(const ScamacGenerator * gen, ScamacWorkspace * ws, ScamacIdx irow, ScamacFlag flag, int * nzr, int * cind, double complex * val);
68 #endif
69 
70 
75 ScamacErrorCode scamac_alloc_cind_val(const ScamacGenerator * gen, ScamacFlag flag, ScamacIdx ** cind, double ** val);
76 
77 const char * scamac_generator_query_name (const ScamacGenerator * gen);
78 
79 ScamacIdx scamac_generator_query_nrow (const ScamacGenerator * gen);
80 ScamacIdx scamac_generator_query_ncol (const ScamacGenerator * gen);
81 ScamacIdx scamac_generator_query_maxnzrow(const ScamacGenerator * gen);
82 ScamacIdx scamac_generator_query_maxnzcol(const ScamacGenerator * gen);
83 ScamacIdx scamac_generator_query_maxnz (const ScamacGenerator * gen);
84 ScamacIdx scamac_generator_query_valtype (const ScamacGenerator * gen);
85 ScamacIdx scamac_generator_query_symmetry(const ScamacGenerator * gen);
86 
91 bool scamac_generator_get_coord (const ScamacGenerator * gen, ScamacWorkspace * ws, ScamacIdx idx, double * x, double * y, double * z, int * ilayer, ScamacIdx * iblock);
92 //bool scamac_generator_get_coord (const ScamacGenerator * gen, ScamacIdx idx, double * x, double * y, double * z, int * ilayer, ScamacIdx * iblock);
93 #endif /* SCAMAC_GENERATOR_H */
basic ScaMaC definitions
ScaMaC index/integer types.
ScamacErrorCode scamac_generate_row(const ScamacGenerator *gen, ScamacWorkspace *ws, ScamacIdx irow, ScamacFlag flag, ScamacIdx *nzr, ScamacIdx *cind, double *val)
Generate one row of a matrix.
int scamac_generator_query_coorddim(const ScamacGenerator *gen)
ScamacErrorCode scamac_generator_check(const ScamacGenerator *gen, char **desc)
Check the parameters of the generator.
struct scamac_generator_st ScamacGenerator
Abstract generator object.
Definition: scamac_generator.h:24
ScaMaC data structure and macro definitions.
ScamacErrorCode scamac_alloc_cind_val(const ScamacGenerator *gen, ScamacFlag flag, ScamacIdx **cind, double **val)
Allocate vector cind and val, for calls to scamac_generate_row().
struct scamac_workspace_st ScamacWorkspace
Abstract workspace object.
Definition: scamac_generator.h:28