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*);
76 void convert(
double* v)
const;
79 void set_element(
int,
double);
80 void accumulate_element(
int,
double);
81 double get_element(
int)
const;
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);
133 double get_element(
int,
int)
const;
134 void set_element(
int,
int,
double);
135 void accumulate_element(
int,
int,
double);
136 SCMatrix * get_subblock(
int,
int,
int,
int);
137 void assign_subblock(
SCMatrix*,
int,
int,
int,
int,
int=0,
int=0);
138 void accumulate_subblock(
SCMatrix*,
int,
int,
int,
int,
int=0,
int=0);
141 void assign_row(
SCVector *v,
int i);
142 void assign_column(
SCVector *v,
int i);
143 void accumulate_row(
SCVector *v,
int i);
144 void accumulate_column(
SCVector *v,
int i);
152 void transpose_this();
153 double invert_this();
155 double determ_this();
157 void gen_invert_this();
159 int schmidt_orthog_tol(
SymmSCMatrix*,
double tol,
double *res=0);
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);
196 double get_element(
int,
int)
const;
197 void set_element(
int,
int,
double);
198 void accumulate_element(
int,
int,
double);
200 SCMatrix * get_subblock(
int,
int,
int,
int);
202 void assign_subblock(
SCMatrix*,
int,
int,
int,
int);
204 void accumulate_subblock(
SCMatrix*,
int,
int,
int,
int);
207 void assign_row(
SCVector *v,
int i);
208 void accumulate_row(
SCVector *v,
int i);
212 double invert_this();
215 double determ_this();
216 void gen_invert_this();
219 void accumulate_symmetric_sum(
SCMatrix*);
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);
252 double get_element(
int)
const;
253 void set_element(
int,
double);
254 void accumulate_element(
int,
double);
256 double invert_this();
257 double determ_this();
259 void gen_invert_this();
281 void maybe_advance_list();
The SCMatrix class is the abstract base class for general double valued n by m matrices.
Definition: abstract.h:195
A template class that maintains references counts.
Definition: ref.h:332
The SCMatrixKit abstract class acts as a factory for producing matrices.
Definition: abstract.h:58
StateSend is a concrete specialization of MsgStateSend that does the send part of point to point comm...
Definition: mstate.h:157
The SymmSCMatrix class is the abstract base class for diagonal double valued matrices.
Definition: abstract.h:503
StateRecv is a concrete specialization of MsgStateRecv that does the receive part of point to point c...
Definition: mstate.h:178
The RefSCDimension class is a smart pointer to an SCDimension specialization.
Definition: dim.h:156
The SCVector class is the abstract base class for double valued vectors.
Definition: abstract.h:97
static std::ostream & out0()
Return an ostream that writes from node 0.
SCMatrix * matrix(const RefSCDimension &, const RefSCDimension &)
Given the dimensions, create matrices or vectors.
The SymmSCMatrix class is the abstract base class for symmetric double valued matrices.
Definition: abstract.h:364
The DistSCMatrixKit produces matrices that work in a many processor environment.
Definition: dist.h:46