creates solver class using pardiso for factorising, solving and selectively inverting linear system.
More...
#include <EigenCholSolver.h>
|
| EigenCholSolver (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.
|
|
| ~EigenCholSolver () |
| class destructor. Frees memory allocated by pardiso.
|
|
|
int | MPI_rank |
|
int | init |
|
int | n |
|
SpMat | Q |
|
SimplicialLDLT< SpMat > | solverEigenQ |
|
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)
◆ compute_full_inverse()
void EigenCholSolver::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.
- Parameters
-
[in] | H | dense matrix. |
[in,out] | C | inverse of H. |
◆ factorize()
void EigenCholSolver::factorize |
( |
SpMat & |
Q, |
|
|
double & |
log_det, |
|
|
double & |
t_priorLatChol |
|
) |
| |
|
virtual |
numerical factorisation.
- Parameters
-
[in] | Q | precision matrix to be factorised. |
[in,out] | log_det | computes log determinant of Q. |
Implements Solver.
◆ factorize_solve()
void EigenCholSolver::factorize_solve |
( |
SpMat & |
Q, |
|
|
Vect & |
rhs, |
|
|
Vect & |
sol, |
|
|
double & |
log_det, |
|
|
double & |
t_condLatChol, |
|
|
double & |
t_condLatSolve |
|
) |
| |
|
virtual |
factorises and solves matrix in one call (to reuse pardiso objects)
- Parameters
-
[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.
◆ factorize_solve_w_constr()
void EigenCholSolver::factorize_solve_w_constr |
( |
SpMat & |
Q, |
|
|
Vect & |
rhs, |
|
|
const MatrixXd & |
Dxy, |
|
|
double & |
log_det, |
|
|
Vect & |
sol, |
|
|
MatrixXd & |
V |
|
) |
| |
|
virtual |
◆ factorize_w_constr()
void EigenCholSolver::factorize_w_constr |
( |
SpMat & |
Q, |
|
|
const MatrixXd & |
D, |
|
|
double & |
log_det, |
|
|
MatrixXd & |
V |
|
) |
| |
|
virtual |
◆ selected_inversion()
void EigenCholSolver::selected_inversion |
( |
SpMat & |
Q, |
|
|
Vect & |
inv_diag |
|
) |
| |
|
virtual |
selected inversion of the diagonal elements of Q.
- Parameters
-
[in] | Q | precision matrix. |
[in,out] | inv_diag | inverse diagonal to hold the solution vector. |
Implements Solver.
◆ selected_inversion_w_constr()
void EigenCholSolver::selected_inversion_w_constr |
( |
SpMat & |
Q, |
|
|
const MatrixXd & |
D, |
|
|
Vect & |
inv_diag, |
|
|
MatrixXd & |
V |
|
) |
| |
|
virtual |
◆ symbolic_factorization()
void EigenCholSolver::symbolic_factorization |
( |
SpMat & |
Q, |
|
|
int & |
init |
|
) |
| |
|
virtual |
performs the symbolic factorisation.
- Parameters
-
[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.
◆ MPI_rank
int EigenCholSolver::MPI_rank |
|
private |
sparse precision matrix Q. Eigen format.
The documentation for this class was generated from the following files: