6 #ifndef MYRAMATH_MULTIFRONTAL_SPARSELUSOLVER_H     7 #define MYRAMATH_MULTIFRONTAL_SPARSELUSOLVER_H    14 #include <myramath/MYRAMATH_EXPORT.h>    27 #include <myramath/multifrontal/detail/lu/LUContainer.h>    36 template<
class Number> 
class LUKernel;
    40 template<
class Number> 
class SparseMatrix;
    41 template<
class Number> 
class CSparseMatrixRange;
    45 template<
class Number> 
class Matrix;
    46 template<
class Number> 
class MatrixRange;
    47 template<
class Number> 
class CMatrixRange;
    48 template<
class Number> 
class Vector;
    49 template<
class Number> 
class VectorRange;
    50 template<
class Number> 
class CVectorRange;
    68     typedef ::myra::multifrontal::Options 
Options;
    81 #ifdef MYRAMATH_ENABLE_CPP11   102     void factor(
const SRange& A, Options options = defaults());
   103     JobGraph factor_jobgraph(
const SRange& A, Options options = defaults());
   107     void factor(
const SRange& in_A, 
const Permutation& P, Options options = defaults());
   108     JobGraph factor_jobgraph(
const SRange& in_A, 
const Permutation& P, Options options = defaults());
   112     void factor(
const SRange& in_A, 
const AssemblyTree& tree, Options options = defaults());
   113     JobGraph factor_jobgraph(
const SRange& in_A, 
const AssemblyTree& tree, Options options = defaults());
   120     void solve(
const DRange& B, 
char side = 
'L', 
char op = 
'N', Options options = defaults()) 
const;
   121     JobGraph solve_jobgraph(
const DRange& B, 
char side = 
'L', 
char op = 
'N', Options options = defaults()) 
const;
   126     void solveL(
const DRange& B, 
char side, 
char op, Options options) 
const;
   127     JobGraph solveL_jobgraph(
const DRange& B, 
char side, 
char op, Options options) 
const;
   132     void solveU(
const DRange& B, 
char side, 
char op, Options options) 
const;
   133     JobGraph solveU_jobgraph(
const DRange& B, 
char side, 
char op, Options options) 
const;
   142     std::vector<Precision> refine(
const DRange& B, 
char side = 
'L', 
char op = 
'N', Precision tolerance = default_tolerance(), 
int iterations = default_iterations(), Options options = defaults()) 
const;
   150     Matrix<Number> schur(
const SRange& B, 
const SRange& C, Options options = defaults()) 
const;
   151     void schur_inplace(
const SRange& B, 
const SRange& C, 
const DRange& S, Options options = defaults()) 
const;
   152     JobGraph schur_jobgraph(
const SRange& B, 
const SRange& C, 
const DRange& S, Options options = defaults()) 
const;    
   155     Matrix<Number> schur(
const iRange& Bi, 
const DRange& Bv, 
const iRange& Ci, 
const DRange& Cv, Options options = defaults()) 
const;    
   156     void schur_inplace(
const iRange& Bi, 
const DRange& Bv, 
const iRange& Ci, 
const DRange& Cv, 
const DRange& S, Options options = defaults()) 
const;
   157     JobGraph schur_jobgraph(
const iRange& Bi, 
const DRange& Bv, 
const iRange& Ci, 
const DRange& Cv, 
const DRange& S, Options options = defaults()) 
const;
   162     Number inverse(
int i, 
int j) 
const;
   165     Matrix<Number> inverse(
const iRange& i, 
const iRange& j, Options options = defaults()) 
const;
   166     void inverse_inplace(
const iRange& i, 
const iRange& j, 
const DRange& Z, Options options = defaults()) 
const;
   167     JobGraph inverse_jobgraph(
const iRange& i, 
const iRange& j, 
const DRange& Z, Options options = defaults()) 
const;
   175     Matrix<Number> partialsolve(
const iRange& i, 
const iRange& j, 
const CMatrixRange<Number>& B, 
char side = 
'L', 
char op = 
'N', Options options = defaults().set_nthreads(1)) 
const;
   176     void partialsolve_inplace(
const iRange& i, 
const iRange& j, 
const CMatrixRange<Number>& B, 
const MatrixRange<Number>& X, 
char side = 
'L', 
char op = 
'N', Options options = defaults().set_nthreads(1)) 
const;
   188     static Options defaults();
   189     static Precision default_tolerance();
   190     static int default_iterations();
   196     typedef ::myra::multifrontal::detail::lu::LUContainer<Kernel> 
LUContainer;
   203   { 
public: 
typedef Number type; };
 Reflects Number trait for a Container, containers of Numbers (Matrix's, Vector's, etc) should special...
Definition: Number.h:55
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
Tabulates an IxJ matrix. Allows random access, has column major layout to be compatible with BLAS/LAP...
Definition: bdsqr.h:20
Pivot factorization for SparseLUSolver. 
Type erasure class that wraps JobGraphBase, gives it value semantics. 
Definition: JobGraph.h:64
Represents a const MatrixRange. 
Definition: bothcat.h:22
Factors A into L*U, presents solve methods. 
Definition: Kernel.h:35
Abstraction layer, serializable objects write themselves to these. 
Definition: Streams.h:39
Abstraction for representing a directed acyclic graph of Job's. 
Various utility functions/classes related to scalar Number types. 
Represents a mutable MatrixRange. 
Definition: conjugate.h:26
Represents a const SparseMatrixRange. 
Definition: bothcat.h:24
Options pack for routines in /multifrontal. 
Tabulates a vector of length N, allows random access. 
Definition: conjugate.h:21
Sparse direct solver suitable for symmetric-pattern nonsymmetric-valued A. 
Definition: SparseLUSolver.h:57
Reflects Precision trait for a Number, scalar Number types should specialize it. 
Definition: Number.h:33
Represents a const VectorRange. 
Definition: axpy.h:20
Definition: partialsolve.h:32
Definition: SparseLUSolver.cpp:439
Represents a const intRange. 
Definition: intRange.h:142