1 // Source code for QDLDL, AMD and permutations
2 #include "qdldl/include/qdldl.h"
3 #include "amd/include/amd.h"
4 #include "amd/include/perm.h"
5 #include <stdexcept>
6 #include <string>
7 
8 
9 namespace qdldl {
10 
11 class Solver {
12 
13 	private:
14 		// Matrix L
15 		QDLDL_int * Lp;
16 		QDLDL_int * Li;
17 		QDLDL_float * Lx;
18 
19 		// Matrix D
20 		QDLDL_float * D;
21 		QDLDL_float * Dinv;
22 
23 		// Matrix P (permutation)
24 		QDLDL_int * P;
25 		QDLDL_int * Pinv;
26 
27 		// Workspace
28 		QDLDL_int * etree;
29 		QDLDL_int * Lnz;
30 		QDLDL_int * iwork;
31 		QDLDL_bool * bwork;
32 		QDLDL_float * fwork;
33 
34 		// Permuted A
35 		QDLDL_int * Aperm_p;
36 		QDLDL_int * Aperm_i;
37 		QDLDL_float * Aperm_x;
38 		QDLDL_int * A2Aperm;
39 
40 	public:
41 		QDLDL_int nx; // Size
42 		QDLDL_int nnz; // Number of nonzero elements in the matrix
43 
44 		Solver(QDLDL_int n, QDLDL_int * Ap, QDLDL_int *Ai, QDLDL_float * Ax);
45 		QDLDL_float * solve(QDLDL_float * b);
46 		void update(QDLDL_float * Anew_x);
47 		~Solver();
48 
49 };
50 
51 } // end namespace
52 
53 
54 
55 
56 
57 
58 
59 
60 
61 
62