1#ifndef PARDIDSO_SOLVER_H
2#define PARDIDSO_SOLVER_H
14#include <Eigen/SparseCore>
24typedef Eigen::VectorXd Vect;
25typedef Eigen::SparseMatrix<double> SpMat;
31extern "C" void pardisoinit (
void *,
int *,
int *,
int *,
double *,
int *);
32extern "C" void pardiso (
void *,
int *,
int *,
int *,
int *,
int *,
33 double *,
int *,
int *,
int *,
int *,
int *,
34 int *,
double *,
double *,
int *,
double *);
35extern "C" void pardiso_chkmatrix (
int *,
int *,
double *,
int *,
int *,
int *);
36extern "C" void pardiso_chkvec (
int *,
int *,
double *,
int *);
37extern "C" void pardiso_printstats (
int *,
int *,
double *,
int *,
int *,
int *,
55 long unsigned int nnz;
71 int maxfct, mnum, phase, error, msglvl, solver;
113 void factorize_w_constr(SpMat&
Q,
const MatrixXd& D,
double&
log_det, MatrixXd& V);
124 void factorize_solve_w_constr(SpMat&
Q, Vect&
rhs,
const MatrixXd& Dxy,
double &
log_det, Vect&
sol, MatrixXd& V);
133 void selected_inversion_w_constr(SpMat&
Q,
const MatrixXd& D, Vect& inv_diag, MatrixXd& V);
creates solver class using pardiso for factorising, solving and selectively inverting linear system.
Definition PardisoSolver.h:46
void compute_inverse_pardiso(MatrixXd &H, MatrixXd &C)
inversion of the entire matrix (only meant for small matrices) by means of using identity right-hand ...
Definition PardisoSolver.cpp:1088
int init
Definition PardisoSolver.h:84
long unsigned int nnz
Definition PardisoSolver.h:55
void * pt[64]
Definition PardisoSolver.h:66
~PardisoSolver()
class destructor. Frees memory allocated by pardiso.
Definition PardisoSolver.cpp:1246
int * ia
Definition PardisoSolver.h:59
int * ja
Definition PardisoSolver.h:60
double * x
Definition PardisoSolver.h:64
double * b
Definition PardisoSolver.h:63
void selected_inversion(SpMat &Q, Vect &inv_diag)
selected inversion of the diagonal elements of Q.
Definition PardisoSolver.cpp:799
int idum
Definition PardisoSolver.h:81
PardisoSolver(int &MPI_rank)
constructor. initialises parameters, check pardiso license.
Definition PardisoSolver.cpp:3
SpMat Q
Definition PardisoSolver.h:57
int MPI_rank
Definition PardisoSolver.h:51
void factorize(SpMat &Q, double &log_det, double &t_priorLatChol)
numerical factorisation.
Definition PardisoSolver.cpp:163
int mtype
Definition PardisoSolver.h:83
int num_procs
Definition PardisoSolver.h:73
double ddum
Definition PardisoSolver.h:80
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)
Definition PardisoSolver.cpp:434
int n
Definition PardisoSolver.h:54
double * a
Definition PardisoSolver.h:61
void symbolic_factorization(SpMat &Q, int &init)
performs the symbolic factorisation.
Definition PardisoSolver.cpp:64
abstract base solver class to enable to be able two switch between solvers (current options: PARDISO ...
Definition Solver.h:27
double log_det
Definition Solver.h:47
Vect rhs
Definition Solver.h:50
Vect sol
Definition Solver.h:51