|
| SparseRLDLTSolver () |
| Default constructor, empty Solver of size 0x0, but can call .factor(A) later.
|
|
| SparseRLDLTSolver (const SparseRLDLTSolver &that) |
| Copy constructor.
|
|
void | swap (SparseRLDLTSolver &that) |
| Member swap.
|
|
| SparseRLDLTSolver (SparseRLDLTSolver &&that) |
| Move constructor, default construct and swap idiom.
|
|
SparseRLDLTSolver & | operator= (SparseRLDLTSolver that) |
| Copy-assignment operator, copy construct and swap idiom.
|
|
| SparseRLDLTSolver (InputStream &in) |
| InputStream constructor.
|
|
void | write (OutputStream &out) const |
| Writes to OutputStream.
|
|
| SparseRLDLTSolver (const SRange &in_A, Options options=defaults()) |
| Reorders for reduced fill and then factors A = L*I*L'.
|
|
void | factor (const SRange &A, Options options=defaults()) |
|
JobGraph | factor_jobgraph (const SRange &A, Options options=defaults()) |
|
| SparseRLDLTSolver (const SRange &in_A, const Permutation &P, Options options=defaults()) |
| Uses external reordering and factors A = L*I*L'.
|
|
void | factor (const SRange &in_A, const Permutation &P, Options options=defaults()) |
|
JobGraph | factor_jobgraph (const SRange &in_A, const Permutation &P, Options options=defaults()) |
|
| SparseRLDLTSolver (const SRange &in_A, const AssemblyTree &tree, Options options=defaults()) |
| Reuses an existing symbolic factorization (an AssemblyTree)
|
|
void | factor (const SRange &in_A, const AssemblyTree &tree, Options options=defaults()) |
|
JobGraph | factor_jobgraph (const SRange &in_A, const AssemblyTree &tree, Options options=defaults()) |
|
void | solve (const DRange &B, char side='L', char op='N', Options options=defaults().set_nthreads(1)) const |
| Solves op(A)*X=B or X*op(A)=B, overwrites B with X.
|
|
JobGraph | solve_jobgraph (const DRange &B, char side='L', char op='N', Options options=defaults().set_nthreads(1)) const |
|
void | solveL (const DRange &B, char side='L', char op='N', Options options=defaults().set_nthreads(1)) const |
| Solves op(L)*X=B or X*op(L)=B, overwrites B with X.
|
|
JobGraph | solveL_jobgraph (const DRange &B, char side='L', char op='N', Options options=defaults().set_nthreads(1)) const |
|
void | solveD (const DRange &B, char side='L') const |
| Solves D*X=B or X*D=B, overwrites B with X.
|
|
std::vector< Precision > | refine (const DRange &B, char side='L', char op='N', Precision tolerance=default_tolerance(), int iterations=default_iterations(), Options options=defaults().set_nthreads(1)) const |
| Same semantics as solve(), but applies backwards refinement for greater accuracy.
|
|
LowerMatrix< Number > | schur (const SRange &B, Options options=defaults()) const |
| Calculates the symmetric schur complement S = B'*inv(A)*B.
|
|
void | schur_inplace (const SRange &B, const LRange &S, Options options=defaults()) const |
|
JobGraph | schur_jobgraph (const SRange &B, const LRange &S, Options options=defaults()) const |
|
LowerMatrix< Number > | schur (const iRange &Bi, const DRange &Bv, Options options=defaults()) const |
| Calculates the symmetric schur complement S = Bv'*Bi'*inv(A)*Bi*Bv.
|
|
void | schur_inplace (const iRange &Bi, const DRange &Bv, const LRange &S, Options options=defaults()) const |
|
JobGraph | schur_jobgraph (const iRange &Bi, const DRange &Bv, const LRange &S, Options options=defaults()) const |
|
Matrix< Number > | schur (const SRange &B, const SRange &C, Options options=defaults()) const |
| Calculates the unsymmetric schur complement S = B'*inv(A)*C.
|
|
void | schur_inplace (const SRange &B, const SRange &C, const DRange &S, Options options=defaults()) const |
|
JobGraph | schur_jobgraph (const SRange &B, const SRange &C, const DRange &S, Options options=defaults()) const |
|
Matrix< Number > | schur (const iRange &Bi, const DRange &Bv, const iRange &Ci, const DRange &Cv, Options options=defaults()) const |
| Calculates the unsymmetric schur complement S = Bv'*Bi'*inv(A)*Ci*Cv.
|
|
void | schur_inplace (const iRange &Bi, const DRange &Bv, const iRange &Ci, const DRange &Cv, const DRange &S, Options options=defaults()) const |
|
JobGraph | schur_jobgraph (const iRange &Bi, const DRange &Bv, const iRange &Ci, const DRange &Cv, const DRange &S, Options options=defaults()) const |
|
Number | inverse (int ij) const |
| Returns the (ij,ij)'th diagonal entry of inv(A). Runs sequentially.
|
|
Number | inverse (int i, int j) const |
| Returns the (i,j)'th entry of inv(A). Runs sequentially.
|
|
Matrix< Number > | inverse (const iRange &i, const iRange &j, Options options=defaults()) const |
| Returns multiple entries of inv(A), the stencil is the tensor product of i and j indices.
|
|
void | inverse_inplace (const iRange &i, const iRange &j, const DRange &Z, Options options=defaults()) const |
|
JobGraph | inverse_jobgraph (const iRange &i, const iRange &j, const DRange &Z, Options options=defaults()) const |
|
LowerMatrix< Number > | inverse (const iRange &ij, Options options=defaults()) const |
| Returns multiple entries of inv(A), the stencil is the tensor product of ij x ij indices.
|
|
void | inverse_inplace (const iRange &ij, const LRange &Z, Options options=defaults()) const |
|
JobGraph | inverse_jobgraph (const iRange &ij, const LRange &Z, Options options=defaults()) const |
|
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 |
| Like solve(), but exploits "restriction" of B and X (only certain entries of B are nonzero, and only certain entries of X are sought)
|
|
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 |
|
JobGraph | partialsolve_jobgraph (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 |
|
int | size () const |
| Returns size of underlying system A (it's square).
|
|
std::pair< int, int > | inertia () const |
| Returns inertia of A, [I+, I-].
|
|
const AssemblyTree & | tree () const |
| Returns symbolic factorization.
|
|
template<> |
float | default_tolerance () |
|
template<> |
double | default_tolerance () |
|
template<> |
int | default_iterations () |
|
template<> |
int | default_iterations () |
|
template<class Precision>
class myra::SparseRLDLTSolver< Precision >
Sparse direct solver suitable for real symmetric indefinite systems.