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