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;
vector< Matrix< double, 6, 6 >, aligned_allocator< Matrix< double, 6, 6 > > > diag
void addDiagBlock(Matrix< double, 3, 3 > &m, int n)
vector< Matrix< double, 3, 3 >, aligned_allocator< Matrix< double, 3, 3 > > > diag
vector< map< int, Matrix< double, 3, 3 >, less< int >, aligned_allocator< Matrix< double, 3, 3 > > > > cols
vector< map< int, Matrix< double, 6, 6 >, less< int >, aligned_allocator< Matrix< double, 6, 6 > > > > cols
void addDiagBlock(Matrix< double, 6, 6 > &m, int n)