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