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

Sparse direct solver suitable for symmetric-pattern nonsymmetric-valued A. More...

#include <SparseLUSolver.h>

Classes

class  SparseLUSolver_RefineAction
 

Public Types

typedef ReflectPrecision< Number >::type Precision
 
typedef MatrixRange< Number > DRange
 
typedef CSparseMatrixRange< Number > SRange
 
typedef intCRange iRange
 
typedef ::myra::multifrontal::Options Options
 

Public Member Functions

 SparseLUSolver ()
 Default constructor, empty Solver of size 0x0, but can call .factor(A) later.
 
 SparseLUSolver (const SparseLUSolver &that)
 Copy constructor.
 
void swap (SparseLUSolver &that)
 Member swap.
 
 SparseLUSolver (SparseLUSolver &&that)
 Move constructor, default construct and swap idiom.
 
SparseLUSolveroperator= (SparseLUSolver that)
 Copy-assignment operator, copy construct and swap idiom.
 
 SparseLUSolver (InputStream &in)
 InputStream constructor.
 
void write (OutputStream &out) const
 Writes to OutputStream.
 
 SparseLUSolver (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())
 
 SparseLUSolver (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())
 
 SparseLUSolver (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()) 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()) const
 
void solveL (const DRange &B, char side, char op, Options options) const
 Solves op(L)*X=B or X*op(L)=B, overwrites B with X.
 
JobGraph solveL_jobgraph (const DRange &B, char side, char op, Options options) const
 
void solveU (const DRange &B, char side, char op, Options options) const
 Solves op(U)*X=B or X*op(U)=B, overwrites B with X.
 
JobGraph solveU_jobgraph (const DRange &B, char side, char op, Options options) const
 
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
 Same semantics as solve(), but applies backwards refinement for greater accuracy.
 
Matrix< Number > schur (const SRange &B, const SRange &C, Options options=defaults()) const
 Calculates the schur complement 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 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 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
 
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 AssemblyTreetree () const
 Returns symbolic factorization.
 
template<>
float default_tolerance ()
 
template<>
double default_tolerance ()
 
template<>
float default_tolerance ()
 
template<>
double default_tolerance ()
 
template<>
int default_iterations ()
 
template<>
int default_iterations ()
 
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 SparseLUSolver_RefineAction
 

Detailed Description

template<class Number>
class myra::SparseLUSolver< Number >

Sparse direct solver suitable for symmetric-pattern nonsymmetric-valued A.


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