Go to the documentation of this file.
7 #ifndef __IPWSMPSOLVERINTERFACE_HPP__
8 #define __IPWSMPSOLVERINTERFACE_HPP__
34 const std::string& prefix
55 Index numberOfNegEVals
87 std::list<Index>& c_deps
121 #ifdef PARDISO_MATCHING_PREPROCESS
216 Index numberOfNegEVals
224 Index numberOfNegEVals
Number wsmp_singularity_threshold_
WSMP's singularity threshold.
ESymSolverStatus
Enum to report outcome of a linear solve.
ESymSolverStatus InternalSymFact(const Index *ia, const Index *ja, Index numberOfNegEVals)
Call Wsmp to really do the analysis phase.
bool skip_inertia_check_
Flag indicating if the inertia is always assumed to be correct.
bool have_symbolic_factorization_
Flag indicating whether symbolic factorization and order has already been performed.
ipfint * PERM_
WSSMP's permutation vector.
virtual double * GetValuesArrayPtr()
Method returning an internal array into which the nonzero elements (in the same order as ja) will be ...
EMatrixFormat
Enum to specify sparse matrix format.
ESymSolverStatus SymbolicFactorization(const Index *ia, const Index *ja)
Call Wsmp to do the analysis phase.
virtual bool ProvidesInertia() const
Query whether inertia is computed by linear solver.
bool InitializeImpl(const OptionsList &options, const std::string &prefix)
Implementation of the initialization method that has to be overloaded by for each derived class.
ESymSolverStatus Solve(const Index *ia, const Index *ja, Index nrhs, double *rhs_vals)
Call Wsmp to do the Solve.
Index matrix_file_number_
Counter for matrix file numbers.
EMatrixFormat MatrixFormat() const
Query of requested matrix type that the linear solver understands.
This file contains a base class for all exceptions and a set of macros to help with exceptions.
double Number
Type of all numbers.
virtual ESymSolverStatus DetermineDependentRows(const Index *ia, const Index *ja, std::list< Index > &c_deps)
This method determines the list of row indices of the linearly dependent rows.
Index negevals_
Number of negative eigenvalues.
ipfint * INVP_
WSSMP's inverse permutation vector.
virtual Index NumberOfNegEVals() const
Number of negative eigenvalues detected during last factorization.
bool printed_num_threads_
Flag indicating if we already printed how many threads are used by WSMP.
Number wsmp_pivtolmax_
Maximal pivot tolerance.
WsmpSolverInterface()
Constructor.
double * a_
Array for storing the values of the matrix.
@ CSR_Format_1_Offset
Compressed sparse row format for lower triangular part, with 1 offset.
Index factorizations_since_recomputed_ordering_
Counter indicating how many factorizations have been done sine the last recomputation of the ordering...
Base class for interfaces to symmetric indefinite linear solvers for sparse matrices.
bool wsmp_no_pivoting_
Flag indicating whether the positive definite version of WSMP should be used.
virtual ESymSolverStatus MultiSolve(bool new_matrix, const Index *ia, const Index *ja, Index nrhs, double *rhs_vals, bool check_NegEVals, Index numberOfNegEVals)
Solve operation for multiple right hand sides.
int Index
Type of all indices of vectors, matrices etc.
ESymSolverStatus Factorization(const Index *ia, const Index *ja, bool check_NegEVals, Index numberOfNegEVals)
Call Wsmp to factorize the Matrix.
Template class for Smart Pointers.
FORTRAN_INTEGER_TYPE ipfint
static void RegisterOptions(SmartPtr< RegisteredOptions > roptions)
double * DPARM_
Double precision parameter array for WSSMP.
Index nonzeros_
Number of nonzeros of the matrix in triplet representation.
bool initialized_
Flag indicating if internal data is initialized.
Index wsmp_num_threads_
Option that controls the matching strategy.
virtual ESymSolverStatus InitializeStructure(Index dim, Index nonzeros, const Index *ia, const Index *ja)
Method for initializing internal structures.
Number wsmp_pivtol_
Pivot tolerance.
bool pivtol_changed_
Flag indicating if the matrix has to be refactorized because the pivot tolerance has been changed,...
virtual bool IncreaseQuality()
Request to increase quality of solution for next solve.
virtual bool ProvidesDegeneracyDetection() const
Query whether the indices of linearly dependent rows/columns can be determined by this linear solver.
WsmpSolverInterface(const WsmpSolverInterface &)
Copy Constructor.
virtual ~WsmpSolverInterface()
Destructor.
void operator=(const WsmpSolverInterface &)
Default Assignment Operator.
ipfint * MRP_
WSSMP's internal MRP array.
Index dim_
Number of rows and columns of the matrix.
This class stores a list of user set options.
Index wsmp_scaling_
Indicating which of WSMP's scaling methods should be used.
Index wsmp_write_matrix_iteration_
iteration number in which matrices are to be written out
Interface to the linear solver Wsmp, derived from SparseSymLinearSolverInterface.
ipfint * IPARM_
Integer parameter array for WSSMP.