19 #ifndef SELDON_FILE_COMPUTATION_SPARSE_DIRECT_SOLVER_INLINE_CXX
52 type_ordering = SparseMatrixOrdering::USER;
70 solver->HideMessages();
79 solver->ShowMessages();
88 solver->ShowMessages();
96 pivot_threshold = eps;
97 solver->SetPivotThreshold(eps);
105 nb_threads_per_node = p;
106 solver->SetNumberOfThreadPerNode(nb_threads_per_node);
114 return nb_threads_per_node;
123 type_ordering = SparseMatrixOrdering::AUTO;
132 enforce_unsym_ilut =
true;
147 refine_solution =
true;
148 solver->RefineSolution();
153 inline void SparseDirectSolver<T>::DoNotRefineSolution()
155 refine_solution =
false;
156 solver->DoNotRefineSolution();
161 inline void SparseDirectSolver<T>::
162 SetCoefficientEstimationNeededMemory(
double coef)
164 solver->SetCoefficientEstimationNeededMemory(coef);
169 inline void SparseDirectSolver<T>::
170 SetMaximumCoefficientEstimationNeededMemory(
double coef)
172 solver->SetMaximumCoefficientEstimationNeededMemory(coef);
177 inline void SparseDirectSolver<T>::
178 SetIncreaseCoefficientEstimationNeededMemory(
double coef)
180 solver->SetIncreaseCoefficientEstimationNeededMemory(coef);
188 return threshold_matrix;
193 template<
class T0,
class Prop,
class Storage,
class Allocator,
class T>
215 template <
class T0,
class Prop0,
class Storage0,
class Allocator0,
216 class T1,
class Storage1,
class Allocator1>
220 #ifdef SELDON_CHECK_DIMENSIONS
234 template <
class T,
class Prop0,
class Allocator0,
class Allocator1>
244 template <
class T,
class Prop0,
class Allocator0,
class Allocator1>
254 template <
class T,
class Prop0,
class Allocator0,
class Allocator1>
264 template <
class T,
class Prop0,
class Allocator0,
class Allocator1>
274 template <
class T,
class Prop0,
class Allocator0,
class Allocator1>
284 template <
class T,
class Prop0,
class Allocator0,
class Allocator1>
293 #define SELDON_FILE_COMPUTATION_SPARSE_DIRECT_SOLVER_INLINE_CXX
void Factorize(Matrix< T, Prop, Storage, Allocator > &A, bool keep_matrix=false)
factorisation of matrix A
void SetPermutation(const IVect &)
sets directly the new ordering (by giving a permutation vector)
void Solve(Vector< T > &x)
x_solution is overwritten by solution of A x = b
int GetM() const
returns the number of rows of the factorised matrix
void SelectOrdering(int)
modifies the ordering algorithm to use
void SelectDirectSolver(int)
modifies the direct solver to use
void GetAndSolveLU(Matrix< T0, Prop0, Storage0, Allocator0 > &M, Vector< T1, Storage1, Allocator1 > &Y)
Solves a linear system using LU factorization.
Class grouping different direct solvers.
void HideMessages()
hiding all messages
void SparseSolve(Matrix< T0, Prop0, Storage0, Allocator0 > &M, Vector< T1, Storage1, Allocator1 > &Y)
Solves a sparse linear system using LU factorization.
int GetNumberOfThreadPerNode() const
modifies the number of threads per node (for Pastix only)
void SetNonSymmetricIlut()
enforces the use of unsymmetric algorithm for ilut solver
void SetNumberOfThreadPerNode(int m)
modifies the number of threads per node (for Pastix only)
void GetLU(Matrix< T0, Prop0, Storage0, Allocator0 > &A)
Returns the LU factorization of a matrix.
void CheckDim(const Matrix< T0, Prop0, Storage0, Allocator0 > &A, const Matrix< T1, Prop1, Storage1, Allocator1 > &B, const Matrix< T2, Prop2, Storage2, Allocator2 > &C, string function)
Checks the compatibility of the dimensions.
void ShowMessages()
displaying basic messages
double GetThresholdMatrix() const
returns threshold used for ilut (if this solver is selected)
void SetPivotThreshold(const double &)
sets the threshold used for pivoting
int GetDirectSolver()
returns the direct solver to use
void ShowFullHistory()
displaying all the messages
int GetTypeOrdering() const
returns the ordering algorithm to use
int GetN() const
returns the number of rows of the factorised matrix