32 #ifndef _math_scmat_dist_h
33 #define _math_scmat_dist_h
35 #include <util/group/message.h>
36 #include <util/group/mstate.h>
38 #include <math/scmat/block.h>
39 #include <math/scmat/matrix.h>
40 #include <math/scmat/abstract.h>
65 void init_blocklist();
66 double *find_element(
int i)
const;
67 int element_to_node(
int i)
const;
68 int block_to_node(
int)
const;
70 void error(
const char *);
74 void assign_p(
const double*);
91 void vprint(
const char* title=0,
112 void init_blocklist();
113 void error(
const char *);
114 double *find_element(
int i,
int j)
const;
115 int element_to_node(
int i,
int j)
const;
116 int block_to_node(
int,
int)
const;
121 enum VecOp {CopyFromVec, CopyToVec, AccumFromVec, AccumToVec};
122 enum Form { Row, Col } form;
123 void create_vecform(Form,
int nvec = -1);
124 void delete_vecform();
125 void vecform_op(VecOp op,
int *ivec = 0);
134 void set_element(
int,
int,
double);
135 void accumulate_element(
int,
int,
double);
142 void assign_column(
SCVector *v,
int i);
144 void accumulate_column(
SCVector *v,
int i);
157 void gen_invert_this();
165 void vprint(
const char* title=0,
167 void vprint(
const char* title=0,
184 void init_blocklist();
185 double *find_element(
int i,
int j)
const;
186 int element_to_node(
int i,
int j)
const;
187 int block_to_node(
int,
int)
const;
190 void error(
const char *msg);
197 void set_element(
int,
int,
double);
198 void accumulate_element(
int,
int,
double);
216 void gen_invert_this();
241 void init_blocklist();
242 double *find_element(
int i)
const;
243 int element_to_node(
int i)
const;
244 int block_to_node(
int)
const;
246 void error(
const char *msg);
253 void set_element(
int,
double);
254 void accumulate_element(
int,
double);
281 void maybe_advance_list();