42 #ifndef EIGEN_USE_NEW_STDVECTOR
43 #define EIGEN_USE_NEW_STDVECTOR
44 #endif // EIGEN_USE_NEW_STDVECTOR
49 #include <Eigen/Geometry>
51 #include <Eigen/StdVector>
55 #include "suitesparse/cs.h"
62 #include "suitesparse/cholmod.h"
67 #include "SparseLib/compcol_double.h"
68 #include "SparseLib/mvblasd.h"
69 #include "SparseLib/icpre_double.h"
70 #include "SparseLib/cg.h"
76 using namespace Eigen;
84 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
93 vector< Matrix<double,6,6>, aligned_allocator<Matrix<double,6,6> > >
diag;
95 vector< map<int,Matrix<double,6,6>, less<int>,
96 aligned_allocator<Matrix<double,6,6> > > >
cols;
98 void setupBlockStructure(
int n);
103 void incDiagBlocks(
double lam);
104 void addOffdiagBlock(Matrix<double,6,6> &m,
int ii,
int jj);
108 void setupCSstructure(
double diaginc,
bool init=
false);
111 void uncompress(MatrixXd &m);
131 int doBPCG(
int iters,
double tol,
int sba_iter);
140 cholmod_common Common;
149 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
158 vector< Matrix<double,3,3>, aligned_allocator<Matrix<double,3,3> > >
diag;
160 vector< map<int,Matrix<double,3,3>, less<int>,
161 aligned_allocator<Matrix<double,3,3> > > >
cols;
163 void setupBlockStructure(
int n,
bool eraseit =
true);
168 void addOffdiagBlock(Matrix<double,3,3> &m,
int ii,
int jj);
169 void incDiagBlocks(
double lam);
173 void setupCSstructure(
double diaginc,
bool init=
false);
176 void uncompress(MatrixXd &m);
196 int doPCG(
int iters);
200 int doBPCG(
int iters,
double tol,
int sba_iter);
209 cholmod_common Common;