6 #ifndef MYRAMATH_MULTIFRONTAL_SPARSEZLDLHSOLVER_H     7 #define MYRAMATH_MULTIFRONTAL_SPARSEZLDLHSOLVER_H    14 #include <myramath/MYRAMATH_EXPORT.h>    27 #include <myramath/multifrontal/detail/llt/LContainer.h>    36 template <
class Precision> 
class ZLDLHKernel;
    40 template<
class Number> 
class SparseMatrix;
    41 template<
class Number> 
class SparseMatrixRange;
    42 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;
    51 template <
class Number> 
class LowerMatrix;
    52 template <
class Number> 
class LowerMatrixRange;
    53 template <
class Number> 
class CLowerMatrixRange;
    65     typedef std::complex<Precision> Number;
    72     typedef ::myra::multifrontal::Options 
Options;
    85 #ifdef MYRAMATH_ENABLE_CPP11   106     void factor(
const SRange& A, Options options = defaults());
   107     JobGraph factor_jobgraph(
const SRange& A, Options options = defaults());
   111     void factor(
const SRange& in_A, 
const Permutation& P, Options options = defaults());
   112     JobGraph factor_jobgraph(
const SRange& in_A, 
const Permutation& P, Options options = defaults());
   116     void factor(
const SRange& in_A, 
const AssemblyTree& tree, Options options = defaults());
   117     JobGraph factor_jobgraph(
const SRange& in_A, 
const AssemblyTree& tree, Options options = defaults());
   124     void solve(
const DRange& B, 
char side = 
'L', 
char op = 
'N', Options options = defaults()) 
const;
   125     JobGraph solve_jobgraph(
const DRange& B, 
char side = 
'L', 
char op = 
'N', Options options = defaults()) 
const;
   130     void solveL(
const DRange& B, 
char side = 
'L', 
char op = 
'N', Options options = defaults().set_nthreads(1)) 
const;
   131     JobGraph solveL_jobgraph(
const DRange& B, 
char side = 
'L', 
char op = 
'N', Options options = defaults().set_nthreads(1)) 
const;
   136     void solveD(
const DRange& B, 
char side = 
'L') 
const;
   145     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;
   153     void schur_inplace(
const SRange& B, 
const LRange& S, Options options = defaults()) 
const;
   154     JobGraph schur_jobgraph(
const SRange& B, 
const LRange& S, Options options = defaults()) 
const;
   157     LowerMatrix<Number> schur(
const iRange& Bi, 
const DRange& Bv, Options options = defaults()) 
const;    
   158     void schur_inplace(
const iRange& Bi, 
const DRange& Bv, 
const LRange& S, Options options = defaults()) 
const;
   159     JobGraph schur_jobgraph(
const iRange& Bi, 
const DRange& Bv, 
const LRange& S, Options options = defaults()) 
const;
   162     Matrix<Number> schur(
const SRange& B, 
const SRange& C, Options options = defaults()) 
const;
   163     void schur_inplace(
const SRange& B, 
const SRange& C, 
const DRange& S, Options options = defaults()) 
const;
   164     JobGraph schur_jobgraph(
const SRange& B, 
const SRange& C, 
const DRange& S, Options options = defaults()) 
const;    
   167     Matrix<Number> schur(
const iRange& Bi, 
const DRange& Bv, 
const iRange& Ci, 
const DRange& Cv, Options options = defaults()) 
const;    
   168     void schur_inplace(
const iRange& Bi, 
const DRange& Bv, 
const iRange& Ci, 
const DRange& Cv, 
const DRange& S, Options options = defaults()) 
const;
   169     JobGraph schur_jobgraph(
const iRange& Bi, 
const DRange& Bv, 
const iRange& Ci, 
const DRange& Cv, 
const DRange& S, Options options = defaults()) 
const;
   175     Number inverse(
int ij) 
const;
   178     Number inverse(
int i, 
int j) 
const;
   181     Matrix<Number> inverse(
const iRange& i, 
const iRange& j, Options options = defaults()) 
const;
   182     void inverse_inplace(
const iRange& i, 
const iRange& j, 
const DRange& Z, Options options = defaults()) 
const;
   183     JobGraph inverse_jobgraph(
const iRange& i, 
const iRange& j, 
const DRange& Z, Options options = defaults()) 
const;
   187     void inverse_inplace(
const iRange& ij, 
const LRange& Z, Options options = defaults()) 
const;
   188     JobGraph inverse_jobgraph(
const iRange& ij, 
const LRange& Z, Options options = defaults()) 
const;
   196     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;
   197     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;
   206     std::pair<int,int> inertia() 
const;
   212     static Options defaults();
   213     static Precision default_tolerance();
   214     static int default_iterations();
   220     typedef ::myra::multifrontal::detail::llt::LContainer<Kernel> LContainer;
   227   { 
public: 
typedef std::complex<Precision> type; };
 Pivot factorization for SparseZLDLHSolver. 
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
Represents a mutable LowerMatrixRange. 
Definition: conjugate.h:28
Tabulates an IxJ matrix. Allows random access, has column major layout to be compatible with BLAS/LAP...
Definition: bdsqr.h:20
Factors A into L*L', presents solve methods. 
Definition: Kernel.h:39
Sparse direct solver suitable for complex hermitian indefinite systems. 
Definition: SparseZLDLHSolver.h:60
Type erasure class that wraps JobGraphBase, gives it value semantics. 
Definition: JobGraph.h:64
Represents a const MatrixRange. 
Definition: bothcat.h:22
Definition: SparseZLDLHSolver.cpp:334
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
Represents a const VectorRange. 
Definition: axpy.h:20
Stores a lower triangular matrix in rectangular packed format. 
Definition: conjugate.h:22
Represents a const intRange. 
Definition: intRange.h:142