INLA_DIST
|
creates solver class using pardiso for factorising, solving and selectively inverting linear system. More...
#include <EigenSolver.h>
Public Member Functions | |
EigenSolver (int &MPI_rank) | |
constructor. initialises parameters, check pardiso license. | |
void | symbolic_factorization (SpMat &Q, int &init) |
performs the symbolic factorisation. | |
void | factorize (SpMat &Q, double &log_det, double &t_priorLatChol) |
numerical factorisation. | |
void | factorize_w_constr (SpMat &Q, const MatrixXd &D, double &log_det, MatrixXd &V) |
void | factorize_solve (SpMat &Q, Vect &rhs, Vect &sol, double &log_det, double &t_condLatChol, double &t_condLatSolve) |
factorises and solves matrix in one call (to reuse pardiso objects) | |
void | factorize_solve_w_constr (SpMat &Q, Vect &rhs, const MatrixXd &Dxy, double &log_det, Vect &sol, MatrixXd &V) |
void | selected_inversion (SpMat &Q, Vect &inv_diag) |
selected inversion of the diagonal elements of Q. | |
void | selected_inversion_w_constr (SpMat &Q, const MatrixXd &D, Vect &inv_diag, MatrixXd &V) |
void | compute_full_inverse (MatrixXd &H, MatrixXd &C) |
inversion of the entire matrix (only meant for small matrices) by means of using identity right-hand side. | |
~EigenSolver () | |
class destructor. Frees memory allocated by pardiso. | |
Private Attributes | |
int | MPI_rank |
int | init = 0 |
int | n |
long unsigned int | nnz |
SpMat | Q |
int * | ia |
int * | ja |
double * | a |
double * | b |
double * | x |
SimplicialLLT< SpMat > | solverEigenQ |
Additional Inherited Members | |
![]() | |
int | init |
double | log_det |
SpMat | Q |
Vect | rhs |
Vect | sol |
creates solver class using pardiso for factorising, solving and selectively inverting linear system.
divided into set up, symbolic factorisation, numerical factorisation, numerical factorisation & solve and selected inversion (of the diagonal elements)
void EigenSolver::compute_full_inverse | ( | MatrixXd & | H, |
MatrixXd & | C | ||
) |
inversion of the entire matrix (only meant for small matrices) by means of using identity right-hand side.
[in] | H | dense matrix. |
[in,out] | C | inverse of H. |
|
virtual |
numerical factorisation.
[in] | Q | precision matrix to be factorised. |
[in,out] | log_det | computes log determinant of Q. |
Implements Solver.
|
virtual |
factorises and solves matrix in one call (to reuse pardiso objects)
[in] | Q | precision matrix. |
[in] | rhs | right-hand side of the system. |
[in,out] | sol | solution of the system. |
[in,out] | log_det | log determinant of Q. |
Implements Solver.
|
virtual |
Implements Solver.
|
virtual |
Implements Solver.
|
virtual |
selected inversion of the diagonal elements of Q.
[in] | Q | precision matrix. |
[in,out] | inv_diag | inverse diagonal to hold the solution vector. |
Implements Solver.
|
virtual |
Implements Solver.
|
virtual |
performs the symbolic factorisation.
[in] | Q | precision matrix to be factorised. |
[in,out] | init | integer value indicating status of symbolic factorisation. Changed to one at the end of the function. |
For each PardisoSolver object symbolic factorisation only needs to be performed once as sparsity patters if assumed to remain the same.
Implements Solver.
|
private |
CSR format. values.
|
private |
right-hand side.
|
private |
CSR format. row indices.
|
private |
CSR format. col pointers.
|
private |
pass on current MPI rank
|
private |
size of the matrix
|
private |
number of nonzeros
|
private |
sparse precision matrix Q. Eigen format.
|
private |
placeholder for solution.