MyraMath
|
Sparse direct solver suitable for real symmetric positive definite systems. More...
#include <SparseRCholeskySolver.h>
Public Types | |
typedef Precision | Number |
typedef MatrixRange< Number > | DRange |
typedef LowerMatrixRange< Number > | LRange |
typedef CSparseMatrixRange< Number > | SRange |
typedef intCRange | iRange |
typedef ::myra::multifrontal::Options | Options |
Public Member Functions | |
SparseRCholeskySolver () | |
Default constructor, empty Solver of size 0x0, but can call .factor(A) later. | |
SparseRCholeskySolver (const SparseRCholeskySolver &that) | |
Copy constructor. | |
void | swap (SparseRCholeskySolver &that) |
Member swap. | |
SparseRCholeskySolver (SparseRCholeskySolver &&that) | |
Move constructor, default construct and swap idiom. | |
SparseRCholeskySolver & | operator= (SparseRCholeskySolver that) |
Copy-assignment operator, copy construct and swap idiom. | |
SparseRCholeskySolver (InputStream &in) | |
InputStream constructor. | |
void | write (OutputStream &out) const |
Writes to OutputStream. | |
SparseRCholeskySolver (const SRange &A, Options options=defaults()) | |
Reorders for reduced fill and then factors A = L*L'. | |
void | factor (const SRange &A, Options options=defaults()) |
JobGraph | factor_jobgraph (const SRange &A, Options options=defaults()) |
SparseRCholeskySolver (const SRange &A, const Permutation &P, Options options=defaults()) | |
Uses external reordering and factors A = L*L'. | |
void | factor (const SRange &A, const Permutation &P, Options options=defaults()) |
JobGraph | factor_jobgraph (const SRange &A, const Permutation &P, Options options=defaults()) |
SparseRCholeskySolver (const SRange &A, const AssemblyTree &tree, Options options=defaults()) | |
Reuses an existing symbolic factorization (an AssemblyTree) to factor A=L*L'. | |
void | factor (const SRange &A, const AssemblyTree &tree, Options options=defaults()) |
JobGraph | factor_jobgraph (const SRange &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 |
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). | |
const AssemblyTree & | tree () const |
Returns symbolic factorization. | |
Static Public Member Functions | |
static Options | defaults () |
Returns default options. | |
Sparse direct solver suitable for real symmetric positive definite systems.