Registered Member
|
#include <iostream>
#include <Eigen/Eigen> #include <Eigen/Sparselu> #include <Eigen/OrderingMethods> using namespace std; using namespace Eigen; typedef SparseMatrix<double, ColMajor, int> SpMat; void main() { ... SparseLU<SpMat, SpMat::Index> solver; //solver.compute(Sp); The compiler complained if i uncomment this line } Eigen_Tests.cpp 1>h:\eigen\eigennew\eigen\src\sparselu\sparselu.h(377): error C2064: term does not evaluate to a function taking 2 arguments 1> h:\eigen\eigennew\eigen\src\sparselu\sparselu.h(372) : while compiling class template member function 'void Eigen::SparseLU<SpMat,int>::analyzePattern(const Eigen::SparseMatrix<double,0,int> &)' 1> h:\eigen\eigennew\eigen\src\sparselu\sparselu.h(115) : see reference to function template instantiation 'void Eigen::SparseLU<SpMat,int>::analyzePattern(const Eigen::SparseMatrix<double,0,int> &)' being compiled 1> g:\vs_project2013\eigen_tests\eigen_tests\eigen_tests.cpp(49) : see reference to class template instantiation 'Eigen::SparseLU<SpMat,int>' being compiled 1>h:\eigen\eigennew\eigen\src\core\ref.h(199): error C2993: 'bool (traits<Derived>::match<Derived>::MatchAtCompileTime)' : illegal type for non-type template parameter 'Condition' 1> with 1> [ 1> Derived=Eigen::Ref<Eigen::Matrix<int,-1,1,0,-1,1>,0,Eigen::InnerStride<1>> 1> ] 1> h:\eigen\eigennew\eigen\src\sparselu\sparselu.h(582) : see reference to class template instantiation 'Eigen::Ref<Eigen::Matrix<int,-1,1,0,-1,1>,0,Eigen::InnerStride<1>>' being compiled 1> h:\eigen\eigennew\eigen\src\sparselu\sparselu.h(455) : while compiling class template member function 'void Eigen::SparseLU<SpMat,int>::factorize(const Eigen::SparseMatrix<double,0,int> &)' 1> h:\eigen\eigennew\eigen\src\sparselu\sparselu.h(117) : see reference to function template instantiation 'void Eigen::SparseLU<SpMat,int>::factorize(const Eigen::SparseMatrix<double,0,int> &)' being compiled 1>h:\eigen\eigennew\eigen\src\core\ref.h(199): error C2039: 'type' : is not a member of 'Eigen::internal::enable_if' 1> h:\eigen\eigennew\eigen\src\core\util\meta.h(86) : see declaration of 'Eigen::internal::enable_if' 1> h:\eigen\eigennew\eigen\src\core\util\meta.h(86) : see declaration of 'Eigen::internal::enable_if' 1>h:\eigen\eigennew\eigen\src\core\ref.h(199): error C2143: syntax error : missing ',' before '*' 1>h:\eigen\eigennew\eigen\src\core\ref.h(199): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1>h:\eigen\eigennew\eigen\src\core\ref.h(205): error C2275: 'Eigen::internal::traits<Derived>::match<Derived>::MatchAtCompileTime' : illegal use of this type as an expression 1> with 1> [ 1> Derived=Eigen::Ref<Eigen::Matrix<int,-1,1,0,-1,1>,0,Eigen::InnerStride<1>> 1> ] 1>h:\eigen\eigennew\eigen\src\sparselu\sparselu.h(582): error C2664: 'int Eigen::internal::SparseLUImpl<double,int>::column_dfs(const Index,const Index,Eigen::Matrix<int,-1,1,0,-1,1> &,Index,Index &,Eigen::Ref<Eigen::Matrix<int,-1,1,0,-1,1>,0,Eigen::InnerStride<1>>,Eigen::Matrix<int,-1,1,0,-1,1> &,Eigen::Ref<Eigen::Matrix<int,-1,1,0,-1,1>,0,Eigen::InnerStride<1>>,Eigen::Matrix<int,-1,1,0,-1,1> &,Eigen::Matrix<int,-1,1,0,-1,1> &,Eigen::Matrix<int,-1,1,0,-1,1> &,Eigen::Matrix<int,-1,1,0,-1,1> &,Eigen::internal::LU_GlobalLU_t<Eigen::Matrix<int,-1,1,0,-1,1>,Eigen::Matrix<double,-1,1,0,-1,1>> &)' : cannot convert argument 6 from 'Eigen::VectorBlock<Derived,-1>' to 'Eigen::Ref<Eigen::Matrix<int,-1,1,0,-1,1>,0,Eigen::InnerStride<1>>' 1> with 1> [ 1> Index=int 1> ] 1> and 1> [ 1> Derived=Eigen::Matrix<int,-1,1,0,-1,1> 1> ] 1> No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called 1>h:\eigen\eigennew\eigen\src\core\ref.h(199): error C2993: 'bool (traits<Derived>::match<Derived>::MatchAtCompileTime)' : illegal type for non-type template parameter 'Condition' 1> with 1> [ 1> Derived=Eigen::Ref<Eigen::Matrix<double,-1,1,0,-1,1>,0,Eigen::InnerStride<1>> 1> ] 1> h:\eigen\eigennew\eigen\src\sparselu\sparselu.h(593) : see reference to class template instantiation 'Eigen::Ref<Eigen::Matrix<double,-1,1,0,-1,1>,0,Eigen::InnerStride<1>>' being compiled 1> h:\eigen\eigennew\eigen\src\core\util\meta.h(86) : see declaration of 'Eigen::internal::enable_if' 1> h:\eigen\eigennew\eigen\src\core\util\meta.h(86) : see declaration of 'Eigen::internal::enable_if' 1>h:\eigen\eigennew\eigen\src\core\ref.h(205): error C2275: 'Eigen::internal::traits<Derived>::match<Derived>::MatchAtCompileTime' : illegal use of this type as an expression 1> with 1> [ 1> Derived=Eigen::Ref<Eigen::Matrix<double,-1,1,0,-1,1>,0,Eigen::InnerStride<1>> 1> ] 1>h:\eigen\eigennew\eigen\src\sparselu\sparselu.h(593): error C2664: 'int Eigen::internal::SparseLUImpl<double,int>::column_bmod(const Index,const Index,Eigen::Ref<Eigen::Matrix<double,-1,1,0,-1,1>,0,Eigen::InnerStride<1>>,Eigen::Matrix<double,-1,1,0,-1,1> &,Eigen::Ref<Eigen::Matrix<int,-1,1,0,-1,1>,0,Eigen::InnerStride<1>>,Eigen::Ref<Eigen::Matrix<int,-1,1,0,-1,1>,0,Eigen::InnerStride<1>>,Index,Eigen::internal::LU_GlobalLU_t<Eigen::Matrix<int,-1,1,0,-1,1>,Eigen::Matrix<double,-1,1,0,-1,1>> &)' : cannot convert argument 3 from 'Eigen::VectorBlock<Derived,-1>' to 'Eigen::Ref<Eigen::Matrix<double,-1,1,0,-1,1>,0,Eigen::InnerStride<1>>' 1> with 1> [ 1> Index=int 1> ] 1> and 1> [ 1> Derived=Eigen::Matrix<double,-1,1,0,-1,1> 1> ] 1> No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called 1>h:\eigen\eigennew\eigen\src\sparselu\sparselu.h(603): error C2664: 'int Eigen::internal::SparseLUImpl<double,int>::copy_to_ucol(const Index,const Index,Eigen::Matrix<int,-1,1,0,-1,1> &,Eigen::Ref<Eigen::Matrix<int,-1,1,0,-1,1>,0,Eigen::InnerStride<1>>,Eigen::Matrix<int,-1,1,0,-1,1> &,Eigen::Ref<Eigen::Matrix<double,-1,1,0,-1,1>,0,Eigen::InnerStride<1>>,Eigen::internal::LU_GlobalLU_t<Eigen::Matrix<int,-1,1,0,-1,1>,Eigen::Matrix<double,-1,1,0,-1,1>> &)' : cannot convert argument 4 from 'Eigen::VectorBlock<Derived,-1>' to 'Eigen::Ref<Eigen::Matrix<int,-1,1,0,-1,1>,0,Eigen::InnerStride<1>>' 1> with 1> [ 1> Index=int 1> ] 1> and 1> [ 1> Derived=Eigen::Matrix<int,-1,1,0,-1,1> 1> ] 1> No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called 1>h:\eigen\eigennew\eigen\src\sparselu\sparselu.h(629): error C2664: 'void Eigen::internal::SparseLUImpl<double,int>::pruneL(const Index,const Eigen::Matrix<int,-1,1,0,-1,1> &,const Index,const Index,const Eigen::Matrix<int,-1,1,0,-1,1> &,Eigen::Ref<Eigen::Matrix<int,-1,1,0,-1,1>,0,Eigen::InnerStride<1>>,Eigen::Matrix<int,-1,1,0,-1,1> &,Eigen::internal::LU_GlobalLU_t<Eigen::Matrix<int,-1,1,0,-1,1>,Eigen::Matrix<double,-1,1,0,-1,1>> &)' : cannot convert argument 6 from 'Eigen::VectorBlock<Derived,-1>' to 'Eigen::Ref<Eigen::Matrix<int,-1,1,0,-1,1>,0,Eigen::InnerStride<1>>' 1> with 1> [ 1> Index=int 1> ] 1> and 1> [ 1> Derived=Eigen::Matrix<int,-1,1,0,-1,1> 1> ] 1> No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== |
Moderator
|
Please look at the documentation of SparseLU: http://eigen.tuxfamily.org/dox-devel/cl ... rseLU.html
The second template argument is the ordering type with COLAMDOrdering<SpMat::Index> being the default. |
Registered users: Bing [Bot], Evergrowing, Google [Bot]