6 #ifndef MYRAMATH_MULTIFRONTAL_SYMBOLIC_ASSEMBLYTREE_H 7 #define MYRAMATH_MULTIFRONTAL_SYMBOLIC_ASSEMBLYTREE_H 14 #include <myramath/MYRAMATH_EXPORT.h> 43 typedef std::pair<const int*,const int*>
Range;
57 std::vector<int> pattern;
62 std::vector<int> blocking;
65 std::vector<int> striding;
69 std::vector<Node*> children;
81 int parent_id()
const;
84 std::vector<int> children_ids()
const;
87 void inspect(std::ostream& out)
const;
92 Range p_pattern()
const 93 {
return Range(pattern.data(), pattern.data()+p); }
96 Range q_pattern()
const 97 {
return Range(pattern.data()+p, pattern.data()+p+q); }
100 Range p_blocking()
const 101 {
return Range(blocking.data(), blocking.data()+P); }
104 Range q_blocking()
const 105 {
return Range(blocking.data()+P, blocking.data()+P+Q); }
108 Range block_pattern(
int b)
const 109 {
return Range(pattern.data()+striding[b], pattern.data()+striding[b+1]); }
114 std::pair<uint64_t,uint64_t> n_words()
const;
117 uint64_t n_work_llt()
const;
118 uint64_t n_work_lu()
const;
123 Range block_up(
int b)
const;
126 Range block_down(
int b,
int c)
const;
131 std::vector<int> up_data;
136 std::vector<int> down_data;
141 void finalize(
int blocksize);
145 std::vector<int> block_up_finalize(
int b,
int blocksize)
const;
149 std::vector<int> block_down_finalize(
int b,
int c,
int blocksize)
const;
153 std::vector<int> map(Range range)
const;
180 #ifdef MYRAMATH_ENABLE_CPP11 195 const Node& node(
int n)
const;
196 const Node& at(
int n)
const;
199 int unknown2node(
int i)
const;
202 std::vector<int> roots()
const;
205 std::vector<int> leaves()
const;
209 std::pair<uint64_t,uint64_t> n_words()
const;
212 uint64_t n_work_llt()
const;
215 uint64_t n_work_lu()
const;
222 int perm(
int i)
const;
223 int iperm(
int i)
const;
224 int swaps(
int i)
const;
227 void inspect(std::ostream& out)
const;
238 std::vector<Node*> nodes;
247 std::vector<int> pivot2node;
256 std::ostream& operator<< (std::ostream& out,
const AssemblyTree& atree);
Options pack for routines in /multifrontal.
Definition: Options.h:24
Represents a Permutation matrix, used to reorder rows/columns/etc of various numeric containers...
Definition: Permutation.h:34
Symbolic analysis data structure for all multifrontal solvers.
Definition: AssemblyTree.h:38
Container of values, allows random (i) access.
Container of values, allows random (i,j) access.
std::pair< const int *, const int * > Range
Useful typedefs.
Definition: AssemblyTree.h:43
Symbolic analysis data structure for multifrontal schur complement.
Definition: SchurTree.h:42
Represents an immutable view of a Pattern.
Definition: PatternRange.h:31
Abstraction layer, serializable objects write themselves to these.
Definition: Streams.h:39
Options pack for routines in /multifrontal.
Aggregates a (perm, iperm, swaps) triple into a vocabulary type.
Definition: AssemblyTree.h:47
Represents a const intRange.
Definition: intRange.h:142