6 #ifndef MYRAMATH_MULTIFRONTAL_SPARSERCHOLESKYSOLVER_H 7 #define MYRAMATH_MULTIFRONTAL_SPARSERCHOLESKYSOLVER_H 14 #include <myramath/utility/detail/LIBPUBLIC.h> 27 #include <myramath/multifrontal/detail/llt/LContainer.h> 36 template<
class Precision>
class RCholeskyKernel;
40 template<
class Number>
class SparseMatrix;
41 template<
class Number>
class SparseMatrixRange;
42 template<
class Number>
class CSparseMatrixRange;
46 template <
class Number>
class Matrix;
47 template <
class Number>
class MatrixRange;
48 template <
class Number>
class CMatrixRange;
49 template <
class Number>
class Vector;
50 template <
class Number>
class VectorRange;
51 template <
class Number>
class CVectorRange;
52 template <
class Number>
class LowerMatrix;
53 template <
class Number>
class LowerMatrixRange;
54 template <
class Number>
class CLowerMatrixRange;
66 typedef Precision Number;
73 typedef ::myra::multifrontal::Options
Options;
86 #ifdef MYRAMATH_ENABLE_CPP11 104 void factor(
const SRange& A, Options options = defaults());
105 JobGraph factor_jobgraph(
const SRange& A, Options options = defaults());
109 void factor(
const SRange& A,
const Permutation& P, Options options = defaults());
110 JobGraph factor_jobgraph(
const SRange& A,
const Permutation& P, Options options = defaults());
114 void factor(
const SRange& A,
const AssemblyTree& tree, Options options = defaults());
115 JobGraph factor_jobgraph(
const SRange& A,
const AssemblyTree& tree, Options options = defaults());
122 void solve(
const DRange& B,
char side =
'L',
char op =
'N', Options options = defaults().set_nthreads(1))
const;
123 JobGraph solve_jobgraph(
const DRange& B,
char side =
'L',
char op =
'N', Options options = defaults().set_nthreads(1))
const;
128 void solveL(
const DRange& B,
char side =
'L',
char op =
'N', Options options = defaults().set_nthreads(1))
const;
129 JobGraph solveL_jobgraph(
const DRange& B,
char side =
'L',
char op =
'N', Options options = defaults().set_nthreads(1))
const;
135 void schur_inplace(
const SRange& B,
const LRange& S, Options options = defaults())
const;
136 JobGraph schur_jobgraph(
const SRange& B,
const LRange& S, Options options = defaults())
const;
139 LowerMatrix<Number> schur(
const iRange& Bi,
const DRange& Bv, Options options = defaults())
const;
140 void schur_inplace(
const iRange& Bi,
const DRange& Bv,
const LRange& S, Options options = defaults())
const;
141 JobGraph schur_jobgraph(
const iRange& Bi,
const DRange& Bv,
const LRange& S, Options options = defaults())
const;
144 Matrix<Number> schur(
const SRange& B,
const SRange& C, Options options = defaults())
const;
145 void schur_inplace(
const SRange& B,
const SRange& C,
const DRange& S, Options options = defaults())
const;
146 JobGraph schur_jobgraph(
const SRange& B,
const SRange& C,
const DRange& S, Options options = defaults())
const;
149 Matrix<Number> schur(
const iRange& Bi,
const DRange& Bv,
const iRange& Ci,
const DRange& Cv, Options options = defaults())
const;
150 void schur_inplace(
const iRange& Bi,
const DRange& Bv,
const iRange& Ci,
const DRange& Cv,
const DRange& S, Options options = defaults())
const;
151 JobGraph schur_jobgraph(
const iRange& Bi,
const DRange& Bv,
const iRange& Ci,
const DRange& Cv,
const DRange& S, Options options = defaults())
const;
156 Number inverse(
int ij)
const;
159 Number inverse(
int i,
int j)
const;
162 Matrix<Number> inverse(
const iRange& i,
const iRange& j, Options options = defaults())
const;
163 void inverse_inplace(
const iRange& i,
const iRange& j,
const DRange& Z, Options options = defaults())
const;
164 JobGraph inverse_jobgraph(
const iRange& i,
const iRange& j,
const DRange& Z, Options options = defaults())
const;
168 void inverse_inplace(
const iRange& ij,
const LRange& Z, Options options = defaults())
const;
169 JobGraph inverse_jobgraph(
const iRange& ij,
const LRange& Z, Options options = defaults())
const;
177 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;
178 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;
190 static Options defaults();
196 typedef multifrontal::detail::llt::LContainer<Kernel> LContainer;
203 {
public:
typedef Precision 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
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
Type erasure class that wraps JobGraphBase, gives it value semantics.
Definition: JobGraph.h:64
Represents a const MatrixRange.
Definition: bothcat.h:22
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.
Pivot factorization for SparseRCholeskySolver.
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
Sparse direct solver suitable for real symmetric positive definite systems.
Definition: SparseRCholeskySolver.h:61
Factors A into L*L', presents solve methods.
Definition: Kernel.h:34
Stores a lower triangular matrix in rectangular packed format.
Definition: conjugate.h:22
Represents a const intRange.
Definition: intRange.h:142