MyraMath
Classes | Public Types | Public Member Functions | Static Public Member Functions | Friends | List of all members
myra::SparseRLDLTSolver< Precision > Class Template Reference

Sparse direct solver suitable for real symmetric indefinite systems. More...

#include <SparseRLDLTSolver.h>

Classes

class  SparseRLDLTSolver_RefineAction
 

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

 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.
 
SparseRLDLTSolveroperator= (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 AssemblyTreetree () const
 Returns symbolic factorization.
 
template<>
float default_tolerance ()
 
template<>
double default_tolerance ()
 
template<>
int default_iterations ()
 
template<>
int default_iterations ()
 

Static Public Member Functions

static Options defaults ()
 Returns default options.
 
static Precision default_tolerance ()
 
static int default_iterations ()
 

Friends

class SparseRLDLTSolver_RefineAction
 

Detailed Description

template<class Precision>
class myra::SparseRLDLTSolver< Precision >

Sparse direct solver suitable for real symmetric indefinite systems.


The documentation for this class was generated from the following files: