Description
Wrapper class for the PardisoProject direct linear solver.
This solver is not appropriate for VI and complementarity problems.
- Warning
- {[WARNING for DEVELOPERS]: please consider that the solver does not handle C-like arrays so the matrices have to be set to one-indexed format manually. Appropriate instructions have been put to avoid passing back the matrix in one-indexed state when not possible}
#include <ChPardisoProjectEngine.h>
Public Types | |
enum | parproj_SYM { STRUCTURAL_SYMMETRIC = 1, SYMMETRIC_POSDEF = 2, SYMMETRIC_GENERAL = -2, UNSYMMETRIC = 11 } |
enum | parproj_PHASE { END = -1, ANALYZE = 11, ANALYZE_FACTORIZE = 12, FACTORIZE = 22, SOLVE = 33, FACTORIZE_SOLVE = 23, COMPLETE = 13, SELECTED_INVERSION = -22 } |
Public Member Functions | |
ChPardisoProjectEngine (parproj_SYM symmetry) | |
void | SetProblem (const ChSparseMatrix &Z, ChVectorRef rhs, ChVectorRef sol) |
Set the problem matrix and the right-hand side. | |
void | SetMatrix (const ChSparseMatrix &Z, bool isZeroIndexed=true) |
Set the problem matrix. | |
void | SetMatrix (int n, int *ia, int *ja, double *a, bool isZeroIndexed=true) |
void | SetMatrixSymmetry (parproj_SYM symmetry) |
Set a new value for symmetry. More... | |
void | SetRhsVector (ChVectorRef b) |
Set the right-hand side vector. More... | |
void | SetRhsVector (double *b) |
void | SetSolutionVector (ChVectorRef x) |
Set the solution vector. More... | |
void | SetSolutionVector (double *x) |
int | PardisoProjectCall (parproj_PHASE job_call) |
Submit job to PardisoProject. | |
int | CheckMatrix (bool print=true) |
Check if the input matrix is in the appropriate form. | |
int | CheckRhsVectors (bool print=true) |
Check if the rhs vector is in the appropriate form. | |
int | CheckMatrixStats (bool print=true) |
Check if the input matrix has appropriate properties. | |
int | GetIPARM (int id) const |
Return the value of the i-th IPARM coefficient; consider that is in zero-indexed format. | |
void | SetIPARM (int id, int val) |
Set the value of the i-th IPARM coefficient; consider that is in zero-indexed format. | |
double | GetDPARM (int id) const |
Return the value of the i-th DPARM coefficient; consider that is in zero-indexed format. | |
void | SetDPARM (int id, int val) |
Set the value of the i-th DPARM coefficient; consider that is in zero-indexed format. | |
int | GetLastError () |
Return the value of the error flag. | |
void | SetZeroIndexedFormat () |
Set the index of the underlying arrays to zero-indexed. | |
void | SetOneIndexedFormat () |
Set the index of the underlying arrays to one-indexed. | |
void | SetSolverType (bool directsparse=true) |
Set the solver type. directsparse = true for direct sparse solver, false for multi-recursive iterative solver. More... | |
void | Reinit () |
Reinitialize the solver (e.g. when a new symmetry option is set) | |
void | SetMessageLevel (int msglvl) |
Set the message level verbosity (0: no messages, 1:print stats). (Default: 0) | |
void | SetMaxNumericalFactorization (int maxfct) |
Set the maximum number of numerical factorizations. | |
void | GetSchurComplement (ChSparseMatrix &Z, int nrows) |
Set the maximum number of numerical factorizations. | |
Protected Member Functions | |
void | shiftMatrixIndices (int *ext_ia, int *ext_ja, double *ext_a, int ext_n, int val, bool isOneIndexed) |
Shift the matrix indeces of the internal matrix arrays of a value of val . | |
void | shiftInternalMatrixIndices (int val) |
Shift the matrix indeces of a value of val . | |
bool | getMatrixInternalArrays (ChSparseMatrix &sparseMat, int **ext_ia, int **ext_ja, double **ext_a) |
Get internal arrays of sparse matrix. | |
Member Enumeration Documentation
◆ parproj_SYM
Member Function Documentation
◆ SetMatrixSymmetry()
void chrono::ChPardisoProjectEngine::SetMatrixSymmetry | ( | parproj_SYM | symmetry | ) |
Set a new value for symmetry.
- Warning
- {This function triggers a Reinit()}
◆ SetRhsVector()
void chrono::ChPardisoProjectEngine::SetRhsVector | ( | ChVectorRef | b | ) |
Set the right-hand side vector.
Note that it is the caller's responsibility to ensure that the size is appropriate.
◆ SetSolutionVector()
void chrono::ChPardisoProjectEngine::SetSolutionVector | ( | ChVectorRef | x | ) |
Set the solution vector.
Note that it is the caller's responsibility to ensure that the size is appropriate.
◆ SetSolverType()
|
inline |
Set the solver type. directsparse
= true for direct sparse solver, false for multi-recursive iterative solver.
Set the solver type.
- Warning
- {This function triggers a Reinit()}
directsparse
= true for direct sparse solver, false for multi-recursive iterative solver.
- Warning
- {This function triggers a Reinit()}
The documentation for this class was generated from the following files:
- /builds/uwsbel/chrono/src/chrono_pardisoproject/ChPardisoProjectEngine.h
- /builds/uwsbel/chrono/src/chrono_pardisoproject/ChPardisoProjectEngine.cpp