Description
Base class for solvers aimed at solving complementarity problems arising from QP optimization problems.
This is an abstract class and specific solution methods are implemented in derived classes (e.g., SOR, APGD, etc.)
See ChSystemDescriptor for more information about the problem formulation and the data structures passed to the solver.
#include <ChSolver.h>

Public Types | |
enum | Type { SOR = 0, SYMMSOR, JACOBI, SOR_MULTITHREAD, PMINRES, BARZILAIBORWEIN, PCG, APGD, MINRES, SOLVER_SMC, CUSTOM } |
Available types of solvers. | |
Public Member Functions | |
virtual Type | GetType () const |
Return type of the solver. More... | |
virtual bool | SolveRequiresMatrix () const =0 |
Indicate whether or not the Solve() phase requires an up-to-date problem matrix. More... | |
virtual double | Solve (ChSystemDescriptor &sysd)=0 |
Performs the solution of the problem. More... | |
virtual bool | Setup (ChSystemDescriptor &sysd) |
This function does the setup operations for the solver. More... | |
void | SetVerbose (bool mv) |
Set verbose output from solver. | |
bool | GetVerbose () const |
virtual void | ArchiveOUT (ChArchiveOut &marchive) |
Method to allow serialization of transient data to archives. | |
virtual void | ArchiveIN (ChArchiveIn &marchive) |
Method to allow de-serialization of transient data from archives. | |
Protected Attributes | |
bool | verbose |
Member Function Documentation
|
virtual |
Return type of the solver.
Default is CUSTOM. Derived classes should override this function.
Reimplemented in chrono::ChSolverSORmultithread, chrono::ChSolverBB, chrono::ChSolverMINRES, chrono::ChSolverPMINRES, chrono::ChSolverAPGD, chrono::ChSolverJacobi, chrono::ChSolverSOR, chrono::ChSolverSymmSOR, chrono::ChSolverSMC, and chrono::ChSolverPCG.
|
virtual |
This function does the setup operations for the solver.
The purpose of this function is to prepare the solver for subsequent calls to the solve function. This function is called only as frequently it is determined that it is appropriate to perform the setup phase.
- Parameters
-
sysd system description with constraints and variables
Reimplemented in chrono::ChSolverMKL< Matrix >, and chrono::ChSolverMumps.
|
pure virtual |
Performs the solution of the problem.
This function MUST be implemented in children classes, with specialized methods such as iterative or direct solvers. Returns true if it successfully solves the problem and false otherwise.
- Parameters
-
sysd system description with constraints and variables
Implemented in chrono::ChSolverMKL< Matrix >, chrono::ChSolverMumps, chrono::ChSolverSORmultithread, chrono::ChSolverBB, chrono::ChSolverMINRES, chrono::ChSolverPMINRES, chrono::ChSolverAPGD, chrono::ChSolverJacobi, chrono::ChIterativeSolverParallel, chrono::ChSolverSOR, chrono::ChSolverSymmSOR, chrono::ChSolverSMC, and chrono::ChSolverPCG.
|
pure virtual |
Indicate whether or not the Solve() phase requires an up-to-date problem matrix.
Typically, direct solvers only need the matrix for the Setup() phase. However, iterative solvers likely require the matrix to perform the necessary matrix-vector operations.
Implemented in chrono::ChSolverMKL< Matrix >, chrono::ChSolverMumps, and chrono::ChIterativeSolver.