6 #ifndef MYRAMATH_MULTIFRONTAL_SYMBOLIC_SCHURTREE_H     7 #define MYRAMATH_MULTIFRONTAL_SYMBOLIC_SCHURTREE_H    14 #include <myramath/MYRAMATH_EXPORT.h>    47     typedef std::pair<const int*,const int*> 
Range;
    79             void inspect(std::ostream& out) 
const;
    87         std::vector<WriteMapItem> items;
    88         std::vector<int> strides;
   101         const int* begin(
int j) 
const;
   102         const int* end(
int j) 
const;
   105             void inspect(std::ostream& out) 
const;
   116         std::vector<int> nodes;
   117         std::vector<int> strides;
   134         std::vector<int> i_pattern;
   135         std::vector<int> j_pattern;
   141         std::vector<int> i_blocking;
   142         std::vector<int> j_blocking;
   145         std::vector<int> i_striding;
   146         std::vector<int> j_striding;
   150         std::vector<Node*> children;
   165         int parent_id() 
const;
   168         std::vector<int> children_ids() 
const;
   171             void inspect(std::ostream& out) 
const;
   176         Range p_pattern()
 const   177           { 
return Range(i_pattern.data(), i_pattern.data()+p); }
   180         Range q_pattern()
 const   181           { 
return Range(i_pattern.data()+p, i_pattern.data()+p+q); }
   184         Range p_blocking()
 const   185           { 
return Range(i_blocking.data(), i_blocking.data()+P); }
   188         Range q_blocking()
 const   189           { 
return Range(i_blocking.data()+P, i_blocking.data()+P+Q); }
   192         Range iblock_pattern(
int ib)
 const   193           { 
return Range(i_pattern.data()+i_striding[ib], i_pattern.data()+i_striding[ib+1]); }
   196         Range jblock_pattern(
int jb)
 const   197           { 
return Range(j_pattern.data()+j_striding[jb], j_pattern.data()+j_striding[jb+1]); }
   200         static bool j_intersects(
const Node& n1, 
const Node& n2);
   203         std::pair<int,int> j_find(
int j) 
const;     
   208         std::pair<uint64_t,uint64_t> n_words() 
const;        
   211         uint64_t n_work_solve() 
const;
   214         uint64_t n_work_rankk() 
const;
   217         static uint64_t n_work_gemm(
const Node& x, 
const Node& y);
   222         Range iblock_up(
int ib) 
const;
   225         Range iblock_down(
int ib, 
int c) 
const;
   230         Range jblock_up(
int jb) 
const;
   233         Range jblock_down(
int jb, 
int c) 
const;
   238         std::vector<int> iup_data;
   243         std::vector<int> idown_data;
   249         std::vector<int> iblock_up_finalize(
int b, 
int blocksize) 
const;
   253         std::vector<int> iblock_down_finalize(
int b, 
int c, 
int blocksize) 
const;
   257         std::vector<int> imap(Range range) 
const;
   260         void ifinalize(
int blocksize);
   263         std::vector<int> jup_data;
   268         std::vector<int> jdown_data;
   274         std::vector<int> jblock_up_finalize(
int jb, 
int blocksize) 
const; 
   278         std::vector<int> jblock_down_finalize(
int jb, 
int c, 
int blocksize) 
const;
   282         std::vector<int> jmap(Range range) 
const;
   285         void jfinalize(
int blocksize);
   311 #ifdef MYRAMATH_ENABLE_CPP11   320     std::pair<int,int> size() 
const;
   326     const Node& node(
int n) 
const;
   329     std::vector<int> roots() 
const;
   332     std::vector<int> leaves() 
const;
   335     std::vector<int> postorder() 
const;
   336     std::vector<int> preorder() 
const;
   339     const std::vector<int>& s2a() 
const;
   342     std::map<int,int> a2s() 
const;
   350     std::pair<uint64_t,uint64_t> n_words() 
const;
   353     uint64_t n_work_solve() 
const;
   356     uint64_t n_work_rankk() 
const;
   373     void inspect(std::ostream& out) 
const;
   381     void postorder_detail(
int n, std::vector<int>& answer) 
const;
   382     void preorder_detail(
int n, std::vector<int>& answer) 
const;
   389     std::vector<Node*> nodes;
   392     std::vector<int> schur2assembly;
   403 std::ostream& operator<< (std::ostream& out, 
const SchurTree::Node& stree);
   404 std::ostream& operator<< (std::ostream& out, 
const SchurTree& stree);
 
std::pair< const int *, const int * > Range
Useful typedefs. 
Definition: SchurTree.h:47
Options pack for routines in /multifrontal. 
Definition: Options.h:24
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. 
Symbolic analysis data structure for multifrontal schur complement. 
Definition: SchurTree.h:42
Definition: SchurTree.h:123
Represents an immutable view of a Pattern. 
Definition: PatternRange.h:31
Abstraction layer, serializable objects write themselves to these. 
Definition: Streams.h:39
Definition: SchurTree.h:51
Various utility functions/classes related to scalar Number types. 
Describes data layout and job dependencies for symmetric-pattern multifrontal solvers. 
Definition: SchurTree.h:93
Options pack for routines in /multifrontal. 
Definition: SchurTree.h:61
Definition: AssemblyTree.h:47
Represents a const intRange. 
Definition: intRange.h:142