seldon-help Mailing List for Seldon
Brought to you by:
vivien_mallet
You can subscribe to this list here.
| 2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(2) |
Oct
|
Nov
|
Dec
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2010 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(2) |
Jun
|
Jul
(6) |
Aug
(1) |
Sep
(1) |
Oct
|
Nov
|
Dec
|
| 2011 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2013 |
Jan
(1) |
Feb
(3) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2014 |
Jan
(7) |
Feb
(2) |
Mar
(5) |
Apr
|
May
(1) |
Jun
(1) |
Jul
|
Aug
(5) |
Sep
|
Oct
|
Nov
|
Dec
|
| 2015 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(2) |
Oct
|
Nov
|
Dec
|
|
From: Marc D. <mar...@in...> - 2015-09-26 07:54:27
|
Hello, Seldon is no longer updated in Sourceforge, its repository has been moved to GitLab. I propose you to download the following file : https://gitlab.com/marc.durufle/montjoie/repository/archive.zip It includes Montjoie and Seldon, the main interest of this archive is that it includes Makefile and instructions about using the code. Once you have unzipped this file, you go to the folder MONTJOIE (and not SELDON). In this folder, you have a file Makefile.Test that you can copy to Makefile : cp Makefile.Test Makefile In the file Makefile, you have to change the folders where the used libraries are installed. For computation of eigenvalues, a good configuration is to have USE_BLAS := YES (Blas, Cblas, and Lapack libraries are specified in the section ifeq($(USE_BLAS), YES) of the Makefile) USE_MUMPS := YES (you modify CHEMUMPS_SEQ if Mumps has been compiled in sequential, CHEMUMPS_PAR for a parallel execution) USE_ARPACK := YES ( Arpack is assumed to be compiled in the folder $(EXTERNAL)/Arpack, so if EXTERNAL should be modified) USE_FEAST := YES (Feast is assumed to be compiled in the folder $(EXTERNAL)/Feast USE_CHOLMOD := YES (Cholmod is a part of SuiteSparse, you have to modify CHE_SUITE_SPARSE) USE_METIS := YES (You have to modify CHEMETIS) If you want to compile by your-self all these libraries, you can have a look at INSTALL.txt, I have placed some instructions. I forgot to place instructions for Feast, but it can be downloaded. Moreover this library is not mandatory, as a first step you can put USE_FEAST := NO and only use Arpack eigensolver. Once, you have compiled these libraries, and updated your Makefile, you can try to compile by typing : make It will try to compile the file src/Program/Unit/Seldon/eigenvalue_feast.cc. It is an unitary test for the interface with feast eigenvalue solver. Of course it will not work if Feast has not been installed. You can change the file to compile by modifying the LSTBIN variable in the Makefile. If you specify: LSTBIN = src/Program/Unit/Seldon/eigenvalue_solver_test.cc It will test the interface with Arpack. However, this program is using some matrices that are stored in files. These files are not present in the repository because they are too large. But, I test frequently this unitary test, so it works with these files. Finally, I would like to say that Seldon is a template library, so you can not compile separately each .cxx file as you tried to do it. It does not work this way. Usually all the files are included when you put #include "Algebra/MontjoieAlgebra.hxx" using namespace Montjoie; If you look at Algebra/MontjoieAlgebra.hxx, you will see that it includes all the needed Seldon files. If you want to compile Seldon as a library, and then only include header files (and not all the .cxx files), you have to put: OPTIMIZATION := FASTER in the Makefile. It will compile all the .cpp files contained in lib/Compil. And when you will do #include "Algebra/MontjoieAlgebra.hxx" using namespace Montjoie; Only header files should be included. As you can see, for the two modes of compilation, you include the same file (MontjoieAlgebra.hxx). Is you want to recompile the library, you have to type make cleanlib The object files .o will be removed. I hope you will succeed in using eigenvalue solvers, I know that it is using a lot of external libraries, but it is the case for all eigenvalue solvers. Eigenvalue solvers rely on direct solvers, which rely on Blas/Lapack and a renumbering library. That is the reason why there are many libraries to install and link with. Let me know if you encounter issues during the installation. Best regards. |
|
From: Jay B. <pih...@gm...> - 2015-09-23 14:54:54
|
Wed Sep 23 16:52:08 CEST 2015
In file included from EigenvalueSolver.cxx:3:0:
EigenvalueSolver.hxx:16:38: error: expected type-specifier before 'Matrix'
template<class T, class MatStiff = Matrix<T>,
^
EigenvalueSolver.hxx:16:38: error: expected '>' before 'Matrix'
EigenvalueSolver.hxx:64:22: error: 'MatMass' has not been declared
typedef typename MatMass::value_type MassValue;
^
EigenvalueSolver.hxx:124:5: error: 'Vector' does not name a type
Vector<MassValue> sqrt_diagonal_mass;
^
EigenvalueSolver.hxx:131:5: error: 'MatMass' does not name a type
MatMass* Mh;
^
EigenvalueSolver.hxx:172:32: error: 'MatMass' has not been declared
void InitMatrix(MatStiff&, MatMass& );
^
EigenvalueSolver.hxx:208:42: error: 'complex' does not name a type
void SetTypeSpectrum(int type, const complex<T>& val,
^
EigenvalueSolver.hxx:208:42: error: ISO C++ forbids declaration of 'parameter' with no type [-fpermissive]
EigenvalueSolver.hxx:208:49: error: expected ',' or '...' before '<' token
void SetTypeSpectrum(int type, const complex<T>& val,
^
EigenvalueSolver.hxx:245:32: error: 'Vector' has not been declared
void FactorizeDiagonalMass(Vector<MassValue>& D);
^
EigenvalueSolver.hxx:245:38: error: expected ',' or '...' before '<' token
void FactorizeDiagonalMass(Vector<MassValue>& D);
^
EigenvalueSolver.hxx:246:52: error: 'Vector' has not been declared
template<class T0> void MltInvSqrtDiagonalMass(Vector<T0>& X);
^
EigenvalueSolver.hxx:246:58: error: expected ',' or '...' before '<' token
template<class T0> void MltInvSqrtDiagonalMass(Vector<T0>& X);
^
EigenvalueSolver.hxx:247:49: error: 'Vector' has not been declared
template<class T0> void MltSqrtDiagonalMass(Vector<T0>& X);
^
EigenvalueSolver.hxx:247:55: error: expected ',' or '...' before '<' token
template<class T0> void MltSqrtDiagonalMass(Vector<T0>& X);
^
EigenvalueSolver.hxx:249:30: error: 'Vector' has not been declared
void ComputeDiagonalMass(Vector<MassValue>& D);
^
EigenvalueSolver.hxx:249:36: error: expected ',' or '...' before '<' token
void ComputeDiagonalMass(Vector<MassValue>& D);
^
EigenvalueSolver.hxx:253:24: error: 'Vector' does not name a type
void MltMass(const Vector<T>& X, Vector<T>& Y);
^
EigenvalueSolver.hxx:253:24: error: ISO C++ forbids declaration of 'parameter' with no type [-fpermissive]
EigenvalueSolver.hxx:253:30: error: expected ',' or '...' before '<' token
void MltMass(const Vector<T>& X, Vector<T>& Y);
^
EigenvalueSolver.hxx:259:29: error: 'Vector' does not name a type
void MltStiffness(const Vector<T>& X, Vector<T>& Y);
^
EigenvalueSolver.hxx:259:29: error: ISO C++ forbids declaration of 'parameter' with no type [-fpermissive]
EigenvalueSolver.hxx:259:35: error: expected ',' or '...' before '<' token
void MltStiffness(const Vector<T>& X, Vector<T>& Y);
^
EigenvalueSolver.hxx:260:53: error: 'Vector' does not name a type
void MltStiffness(const T& a, const T& b, const Vector<T>& X, Vector<T>& Y);
^
EigenvalueSolver.hxx:260:53: error: ISO C++ forbids declaration of 'parameter' with no type [-fpermissive]
EigenvalueSolver.hxx:260:59: error: expected ',' or '...' before '<' token
void MltStiffness(const T& a, const T& b, const Vector<T>& X, Vector<T>& Y);
^
EigenvalueSolver.hxx:264:51: error: 'complex' does not name a type
void ComputeAndFactorizeStiffnessMatrix(const complex<T>& a,
^
EigenvalueSolver.hxx:264:51: error: ISO C++ forbids declaration of 'parameter' with no type [-fpermissive]
EigenvalueSolver.hxx:264:58: error: expected ',' or '...' before '<' token
void ComputeAndFactorizeStiffnessMatrix(const complex<T>& a,
^
EigenvalueSolver.hxx:269:32: error: 'Vector' does not name a type
void ComputeSolution(const Vector<T0>& X, Vector<T0>& Y);
^
EigenvalueSolver.hxx:269:32: error: ISO C++ forbids declaration of 'parameter' with no type [-fpermissive]
EigenvalueSolver.hxx:269:38: error: expected ',' or '...' before '<' token
void ComputeSolution(const Vector<T0>& X, Vector<T0>& Y);
^
EigenvalueSolver.hxx:273:32: error: 'Vector' does not name a type
const Vector<T0>& X, Vector<T0>& Y);
^
EigenvalueSolver.hxx:273:32: error: ISO C++ forbids declaration of 'parameter' with no type [-fpermissive]
EigenvalueSolver.hxx:273:38: error: expected ',' or '...' before '<' token
const Vector<T0>& X, Vector<T0>& Y);
^
EigenvalueSolver.hxx:278:53: error: 'Vector' has not been declared
void MltCholeskyMass(const TransStatus& transA, Vector<T>& X);
^
EigenvalueSolver.hxx:278:59: error: expected ',' or '...' before '<' token
void MltCholeskyMass(const TransStatus& transA, Vector<T>& X);
^
EigenvalueSolver.hxx:281:55: error: 'Vector' has not been declared
void SolveCholeskyMass(const TransStatus& transA, Vector<T>& X);
^
EigenvalueSolver.hxx:281:61: error: expected ',' or '...' before '<' token
void SolveCholeskyMass(const TransStatus& transA, Vector<T>& X);
^
EigenvalueSolver.hxx:300:44: error: 'complex' does not name a type
const complex<T0>& shiftr,
^
EigenvalueSolver.hxx:300:44: error: ISO C++ forbids declaration of 'parameter' with no type [-fpermissive]
EigenvalueSolver.hxx:300:51: error: expected ',' or '...' before '<' token
const complex<T0>& shiftr,
^
EigenvalueSolver.hxx:309:24: error: variable or field 'SortEigenvalues' declared void
void SortEigenvalues(Vector<T>& lambda_r, Vector<T>& lambda_i,
^
EigenvalueSolver.hxx:309:24: error: 'Vector' was not declared in this scope
EigenvalueSolver.hxx:309:32: error: expected primary-expression before '>' token
void SortEigenvalues(Vector<T>& lambda_r, Vector<T>& lambda_i,
^
EigenvalueSolver.hxx:309:35: error: 'lambda_r' was not declared in this scope
void SortEigenvalues(Vector<T>& lambda_r, Vector<T>& lambda_i,
^
EigenvalueSolver.hxx:309:45: error: 'Vector' was not declared in this scope
void SortEigenvalues(Vector<T>& lambda_r, Vector<T>& lambda_i,
^
EigenvalueSolver.hxx:309:53: error: expected primary-expression before '>' token
void SortEigenvalues(Vector<T>& lambda_r, Vector<T>& lambda_i,
^
EigenvalueSolver.hxx:309:56: error: 'lambda_i' was not declared in this scope
void SortEigenvalues(Vector<T>& lambda_r, Vector<T>& lambda_i,
^
EigenvalueSolver.hxx:310:24: error: 'Matrix' was not declared in this scope
Matrix<T, General, Storage1, Alloc1>& eigen_old,
^
EigenvalueSolver.hxx:310:32: error: expected primary-expression before ',' token
Matrix<T, General, Storage1, Alloc1>& eigen_old,
^
EigenvalueSolver.hxx:310:34: error: 'General' was not declared in this scope
Matrix<T, General, Storage1, Alloc1>& eigen_old,
^
EigenvalueSolver.hxx:310:51: error: expected primary-expression before ',' token
Matrix<T, General, Storage1, Alloc1>& eigen_old,
^
EigenvalueSolver.hxx:310:59: error: expected primary-expression before '>' token
Matrix<T, General, Storage1, Alloc1>& eigen_old,
^
EigenvalueSolver.hxx:310:62: error: 'eigen_old' was not declared in this scope
Matrix<T, General, Storage1, Alloc1>& eigen_old,
^
EigenvalueSolver.hxx:311:24: error: 'Matrix' was not declared in this scope
Matrix<T, General, Storage2, Alloc2>& eigen_new,
^
EigenvalueSolver.hxx:311:32: error: expected primary-expression before ',' token
Matrix<T, General, Storage2, Alloc2>& eigen_new,
^
EigenvalueSolver.hxx:311:34: error: 'General' was not declared in this scope
Matrix<T, General, Storage2, Alloc2>& eigen_new,
^
EigenvalueSolver.hxx:311:51: error: expected primary-expression before ',' token
Matrix<T, General, Storage2, Alloc2>& eigen_new,
^
EigenvalueSolver.hxx:311:59: error: expected primary-expression before '>' token
Matrix<T, General, Storage2, Alloc2>& eigen_new,
^
EigenvalueSolver.hxx:311:62: error: 'eigen_new' was not declared in this scope
Matrix<T, General, Storage2, Alloc2>& eigen_new,
^
EigenvalueSolver.hxx:312:24: error: expected primary-expression before 'int'
int type_spectrum, int type_sort,
^
EigenvalueSolver.hxx:312:43: error: expected primary-expression before 'int'
int type_spectrum, int type_sort,
^
EigenvalueSolver.hxx:313:24: error: expected primary-expression before 'const'
const T& shift_r, const T& shift_i);
^
EigenvalueSolver.hxx:313:42: error: expected primary-expression before 'const'
const T& shift_r, const T& shift_i);
^
EigenvalueSolver.hxx:318:24: error: variable or field 'SortEigenvalues' declared void
void SortEigenvalues(Vector<complex<T> >& lambda_r,
^
EigenvalueSolver.hxx:318:24: error: 'Vector' was not declared in this scope
EigenvalueSolver.hxx:318:31: error: 'complex' was not declared in this scope
void SortEigenvalues(Vector<complex<T> >& lambda_r,
^
EigenvalueSolver.hxx:318:40: error: expected primary-expression before '>' token
void SortEigenvalues(Vector<complex<T> >& lambda_r,
^
EigenvalueSolver.hxx:318:42: error: expected primary-expression before '>' token
void SortEigenvalues(Vector<complex<T> >& lambda_r,
^
EigenvalueSolver.hxx:318:45: error: 'lambda_r' was not declared in this scope
void SortEigenvalues(Vector<complex<T> >& lambda_r,
^
EigenvalueSolver.hxx:319:24: error: 'Vector' was not declared in this scope
Vector<complex<T> >& lambda_i,
^
EigenvalueSolver.hxx:319:31: error: 'complex' was not declared in this scope
Vector<complex<T> >& lambda_i,
^
EigenvalueSolver.hxx:319:40: error: expected primary-expression before '>' token
Vector<complex<T> >& lambda_i,
^
EigenvalueSolver.hxx:319:42: error: expected primary-expression before '>' token
Vector<complex<T> >& lambda_i,
^
EigenvalueSolver.hxx:319:45: error: 'lambda_i' was not declared in this scope
Vector<complex<T> >& lambda_i,
^
EigenvalueSolver.hxx:320:24: error: 'Matrix' was not declared in this scope
Matrix<complex<T>, General, Storage1, Alloc1>& eigen_old,
^
EigenvalueSolver.hxx:320:31: error: 'complex' was not declared in this scope
Matrix<complex<T>, General, Storage1, Alloc1>& eigen_old,
^
EigenvalueSolver.hxx:320:40: error: expected primary-expression before '>' token
Matrix<complex<T>, General, Storage1, Alloc1>& eigen_old,
^
EigenvalueSolver.hxx:320:41: error: expected primary-expression before ',' token
Matrix<complex<T>, General, Storage1, Alloc1>& eigen_old,
^
EigenvalueSolver.hxx:320:43: error: 'General' was not declared in this scope
Matrix<complex<T>, General, Storage1, Alloc1>& eigen_old,
^
EigenvalueSolver.hxx:320:60: error: expected primary-expression before ',' token
Matrix<complex<T>, General, Storage1, Alloc1>& eigen_old,
^
EigenvalueSolver.hxx:320:68: error: expected primary-expression before '>' token
Matrix<complex<T>, General, Storage1, Alloc1>& eigen_old,
^
EigenvalueSolver.hxx:320:71: error: 'eigen_old' was not declared in this scope
Matrix<complex<T>, General, Storage1, Alloc1>& eigen_old,
^
EigenvalueSolver.hxx:321:24: error: 'Matrix' was not declared in this scope
Matrix<complex<T>, General, Storage2, Alloc2>& eigen_new,
^
EigenvalueSolver.hxx:321:31: error: 'complex' was not declared in this scope
Matrix<complex<T>, General, Storage2, Alloc2>& eigen_new,
^
EigenvalueSolver.hxx:321:40: error: expected primary-expression before '>' token
Matrix<complex<T>, General, Storage2, Alloc2>& eigen_new,
^
EigenvalueSolver.hxx:321:41: error: expected primary-expression before ',' token
Matrix<complex<T>, General, Storage2, Alloc2>& eigen_new,
^
EigenvalueSolver.hxx:321:43: error: 'General' was not declared in this scope
Matrix<complex<T>, General, Storage2, Alloc2>& eigen_new,
^
EigenvalueSolver.hxx:321:60: error: expected primary-expression before ',' token
Matrix<complex<T>, General, Storage2, Alloc2>& eigen_new,
^
EigenvalueSolver.hxx:321:68: error: expected primary-expression before '>' token
Matrix<complex<T>, General, Storage2, Alloc2>& eigen_new,
^
EigenvalueSolver.hxx:321:71: error: 'eigen_new' was not declared in this scope
Matrix<complex<T>, General, Storage2, Alloc2>& eigen_new,
^
EigenvalueSolver.hxx:322:24: error: expected primary-expression before 'int'
int type_spectrum, int type_sort,
^
EigenvalueSolver.hxx:322:43: error: expected primary-expression before 'int'
int type_spectrum, int type_sort,
^
EigenvalueSolver.hxx:323:24: error: expected primary-expression before 'const'
const complex<T>& shift_r, const complex<T>& shift_i);
^
EigenvalueSolver.hxx:323:51: error: expected primary-expression before 'const'
const complex<T>& shift_r, const complex<T>& shift_i);
^
EigenvalueSolver.hxx:328:48: error: expected type-specifier before 'Symmetric'
class Tmass = double, class PropM = Symmetric,
^
EigenvalueSolver.hxx:328:48: error: expected '>' before 'Symmetric'
EigenvalueSolver.hxx:331:35: error: 'Matrix' was not declared in this scope
: public EigenProblem_Base<T, Matrix<T, Prop, Storage>,
^
EigenvalueSolver.hxx:331:58: error: wrong number of template arguments (4, should be 2)
: public EigenProblem_Base<T, Matrix<T, Prop, Storage>,
^
EigenvalueSolver.hxx:18:9: error: provided for 'template<class T, class MatStiff> class Seldon::EigenProblem_Base'
class EigenProblem_Base
^
EigenvalueSolver.hxx:332:38: error: expected template-name before '<' token
Matrix<Tmass, PropM, StorageM> >
^
EigenvalueSolver.hxx:332:38: error: expected '{' before '<' token
EigenvalueSolver.hxx:332:38: error: expected unqualified-id before '<' token
EigenvalueSolver.hxx:394:54: error: expected type-specifier before 'Matrix'
template <class T, class MatStiff, class MatMass = Matrix <double, Symmetric, ArrayRowSymSparse> > class SparseEigenProblem
^
EigenvalueSolver.hxx:394:54: error: expected '>' before 'Matrix'
EigenvalueSolver.hxx:395:53: error: wrong number of template arguments (3, should be 2)
: public EigenProblem_Base <T, MatStiff, MatMass>
^
EigenvalueSolver.hxx:18:9: error: provided for 'template<class T, class MatStiff> class Seldon::EigenProblem_Base'
class EigenProblem_Base
^
EigenvalueSolver.hxx:401:22: error: expected nested-name-specifier before 'ClassComplexType'
typedef typename ClassComplexType<T>::Tcplx Complexe;
^
EigenvalueSolver.hxx:401:22: error: expected ';' at end of member declaration
EigenvalueSolver.hxx:401:38: error: expected unqualified-id before '<' token
typedef typename ClassComplexType<T>::Tcplx Complexe;
^
EigenvalueSolver.hxx:411:5: error: 'SparseDirectSolver' does not name a type
SparseDirectSolver<T> mat_lu;
^
EigenvalueSolver.hxx:414:5: error: 'SparseDirectSolver' does not name a type
SparseDirectSolver <Complexe> mat_lu_cplx;
^
EigenvalueSolver.hxx:417:5: error: 'SparseCholeskySolver' does not name a type
SparseCholeskySolver <MassValue> chol_facto_mass_matrix;
^
EigenvalueSolver.hxx:420:5: error: 'Vector' does not name a type
Vector<MassValue> Xchol_real, Xchol_imag;
^
EigenvalueSolver.hxx:432:32: error: 'complex' has not been declared
void FactorizeCholeskyMass(complex<double>&);
^
EigenvalueSolver.hxx:432:39: error: expected ',' or '...' before '<' token
void FactorizeCholeskyMass(complex<double>&);
^
EigenvalueSolver.hxx:435:53: error: 'Vector' has not been declared
void MltCholeskyMass(const TransStatus& transA, Vector<T0>& X);
^
EigenvalueSolver.hxx:435:59: error: expected ',' or '...' before '<' token
void MltCholeskyMass(const TransStatus& transA, Vector<T0>& X);
^
EigenvalueSolver.hxx:438:55: error: 'Vector' has not been declared
void SolveCholeskyMass(const TransStatus& transA, Vector<T0>& X);
^
EigenvalueSolver.hxx:438:61: error: expected ',' or '...' before '<' token
void SolveCholeskyMass(const TransStatus& transA, Vector<T0>& X);
^
EigenvalueSolver.hxx:442:26: error: 'Vector' has not been declared
Vector<complex<double> >& X);
^
EigenvalueSolver.hxx:442:32: error: expected ',' or '...' before '<' token
Vector<complex<double> >& X);
^
EigenvalueSolver.hxx:446:26: error: 'Vector' has not been declared
Vector<complex<double> >& X, double&);
^
EigenvalueSolver.hxx:446:32: error: expected ',' or '...' before '<' token
Vector<complex<double> >& X, double&);
^
EigenvalueSolver.hxx:445:10: error: 'template<class T, class MatStiff, class MatMass> template<class TransStatus> void Seldon::SparseEigenProblem<T, MatStiff, MatMass>::MltCholeskyMass(const TransStatus&, int)' cannot be overloaded
void MltCholeskyMass(const TransStatus& transA,
^
EigenvalueSolver.hxx:441:10: error: with 'template<class T, class MatStiff, class MatMass> template<class TransStatus> void Seldon::SparseEigenProblem<T, MatStiff, MatMass>::MltCholeskyMass(const TransStatus&, int)'
void MltCholeskyMass(const TransStatus& transA,
^
EigenvalueSolver.hxx:450:26: error: 'Vector' has not been declared
Vector<complex<double> >& X, complex<double>&);
^
EigenvalueSolver.hxx:450:32: error: expected ',' or '...' before '<' token
Vector<complex<double> >& X, complex<double>&);
^
EigenvalueSolver.hxx:449:10: error: 'template<class T, class MatStiff, class MatMass> template<class TransStatus> void Seldon::SparseEigenProblem<T, MatStiff, MatMass>::MltCholeskyMass(const TransStatus&, int)' cannot be overloaded
void MltCholeskyMass(const TransStatus& transA,
^
EigenvalueSolver.hxx:441:10: error: with 'template<class T, class MatStiff, class MatMass> template<class TransStatus> void Seldon::SparseEigenProblem<T, MatStiff, MatMass>::MltCholeskyMass(const TransStatus&, int)'
void MltCholeskyMass(const TransStatus& transA,
^
EigenvalueSolver.hxx:454:7: error: 'Vector' has not been declared
Vector<complex<double> >& X);
^
EigenvalueSolver.hxx:454:13: error: expected ',' or '...' before '<' token
Vector<complex<double> >& X);
^
EigenvalueSolver.hxx:458:28: error: 'Vector' has not been declared
Vector<complex<double> >& X, double&);
^
EigenvalueSolver.hxx:458:34: error: expected ',' or '...' before '<' token
Vector<complex<double> >& X, double&);
^
EigenvalueSolver.hxx:457:10: error: 'template<class T, class MatStiff, class MatMass> template<class TransStatus> void Seldon::SparseEigenProblem<T, MatStiff, MatMass>::SolveCholeskyMass(const TransStatus&, int)' cannot be overloaded
void SolveCholeskyMass(const TransStatus& transA,
^
EigenvalueSolver.hxx:453:10: error: with 'template<class T, class MatStiff, class MatMass> template<class TransStatus> void Seldon::SparseEigenProblem<T, MatStiff, MatMass>::SolveCholeskyMass(const TransStatus&, int)'
void SolveCholeskyMass(const TransStatus& transA,
^
EigenvalueSolver.hxx:462:28: error: 'Vector' has not been declared
Vector<complex<double> >& X, complex<double>&);
^
EigenvalueSolver.hxx:462:34: error: expected ',' or '...' before '<' token
Vector<complex<double> >& X, complex<double>&);
^
EigenvalueSolver.hxx:461:10: error: 'template<class T, class MatStiff, class MatMass> template<class TransStatus> void Seldon::SparseEigenProblem<T, MatStiff, MatMass>::SolveCholeskyMass(const TransStatus&, int)' cannot be overloaded
void SolveCholeskyMass(const TransStatus& transA,
^
EigenvalueSolver.hxx:453:10: error: with 'template<class T, class MatStiff, class MatMass> template<class TransStatus> void Seldon::SparseEigenProblem<T, MatStiff, MatMass>::SolveCholeskyMass(const TransStatus&, int)'
void SolveCholeskyMass(const TransStatus& transA,
^
EigenvalueSolver.hxx:465:51: error: 'complex' does not name a type
void ComputeAndFactorizeStiffnessMatrix(const complex<T>& a,
^
EigenvalueSolver.hxx:465:51: error: ISO C++ forbids declaration of 'parameter' with no type [-fpermissive]
EigenvalueSolver.hxx:465:58: error: expected ',' or '...' before '<' token
void ComputeAndFactorizeStiffnessMatrix(const complex<T>& a,
^
EigenvalueSolver.hxx:470:49: error: 'complex' does not name a type
void ComputeAndFactorizeComplexMatrix(const complex<T0>& a,
^
EigenvalueSolver.hxx:470:49: error: ISO C++ forbids declaration of 'parameter' with no type [-fpermissive]
EigenvalueSolver.hxx:470:56: error: expected ',' or '...' before '<' token
void ComputeAndFactorizeComplexMatrix(const complex<T0>& a,
^
EigenvalueSolver.hxx:474:49: error: 'complex' does not name a type
void ComputeAndFactorizeComplexMatrix(const complex<double>& a,
^
EigenvalueSolver.hxx:474:49: error: ISO C++ forbids declaration of 'parameter' with no type [-fpermissive]
EigenvalueSolver.hxx:474:56: error: expected ',' or '...' before '<' token
void ComputeAndFactorizeComplexMatrix(const complex<double>& a,
^
EigenvalueSolver.hxx:479:32: error: 'Vector' does not name a type
void ComputeSolution(const Vector<T0>& X, Vector<T0>& Y);
^
EigenvalueSolver.hxx:479:32: error: ISO C++ forbids declaration of 'parameter' with no type [-fpermissive]
EigenvalueSolver.hxx:479:38: error: expected ',' or '...' before '<' token
void ComputeSolution(const Vector<T0>& X, Vector<T0>& Y);
^
EigenvalueSolver.hxx:483:32: error: 'Vector' does not name a type
const Vector<T0>& X, Vector<T0>& Y);
^
EigenvalueSolver.hxx:483:32: error: ISO C++ forbids declaration of 'parameter' with no type [-fpermissive]
EigenvalueSolver.hxx:483:38: error: expected ',' or '...' before '<' token
const Vector<T0>& X, Vector<T0>& Y);
^
EigenvalueSolver.hxx:487:39: error: 'Vector' does not name a type
const Vector<double>& X, Vector<double>& Y);
^
EigenvalueSolver.hxx:487:39: error: ISO C++ forbids declaration of 'parameter' with no type [-fpermissive]
EigenvalueSolver.hxx:487:45: error: expected ',' or '...' before '<' token
const Vector<double>& X, Vector<double>& Y);
^
EigenvalueSolver.hxx:491:39: error: 'Vector' does not name a type
const Vector<complex<double> >& X,
^
EigenvalueSolver.hxx:491:39: error: ISO C++ forbids declaration of 'parameter' with no type [-fpermissive]
EigenvalueSolver.hxx:491:45: error: expected ',' or '...' before '<' token
const Vector<complex<double> >& X,
^
EigenvalueSolver.hxx:490:10: error: 'template<class T, class MatStiff, class MatMass> template<class TransA> void Seldon::SparseEigenProblem<T, MatStiff, MatMass>::ComputeComplexSolution(const TransA&, int)' cannot be overloaded
void ComputeComplexSolution(const TransA&,
^
EigenvalueSolver.hxx:486:10: error: with 'template<class T, class MatStiff, class MatMass> template<class TransA> void Seldon::SparseEigenProblem<T, MatStiff, MatMass>::ComputeComplexSolution(const TransA&, int)'
void ComputeComplexSolution(const TransA&,
^
EigenvalueSolver.hxx:503:32: error: 'Matrix' was not declared in this scope
Matrix<double, Symmetric, ArrayRowSymSparse> >
^
EigenvalueSolver.hxx:503:75: error: wrong number of template arguments (3, should be 2)
Matrix<double, Symmetric, ArrayRowSymSparse> >
^
EigenvalueSolver.hxx:18:9: error: provided for 'template<class T, class MatStiff> class Seldon::EigenProblem_Base'
class EigenProblem_Base
^
EigenvalueSolver.hxx:503:77: error: expected '{' before '>' token
Matrix<double, Symmetric, ArrayRowSymSparse> >
^
EigenvalueSolver.hxx:503:77: error: expected unqualified-id before '>' token
EigenvalueSolver.hxx:543:42: error: 'Matrix' has not been declared
Matrix<T, Prop, Storage, Alloc3>& eigen_vec)
^
EigenvalueSolver.hxx:543:48: error: expected ',' or '...' before '<' token
Matrix<T, Prop, Storage, Alloc3>& eigen_vec)
^
EigenvalueSolver.hxx: In function 'void Seldon::GetEigenvaluesEigenvectors(EigenPb&, Vector1&, Vector2&, int)':
EigenvalueSolver.hxx:561:9: error: 'cout' was not declared in this scope
cout << "Recompile with Arpack" << endl;
^
EigenvalueSolver.hxx:561:44: error: 'endl' was not declared in this scope
cout << "Recompile with Arpack" << endl;
^
EigenvalueSolver.hxx:562:15: error: there are no arguments to 'abort' that depend on a template parameter, so a declaration of 'abort' must be available [-fpermissive]
abort();
^
EigenvalueSolver.hxx:562:15: note: (if you use '-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated)
EigenvalueSolver.hxx:577:9: error: 'cout' was not declared in this scope
cout << "Recompile with Anasazi" << endl;
^
EigenvalueSolver.hxx:577:45: error: 'endl' was not declared in this scope
cout << "Recompile with Anasazi" << endl;
^
EigenvalueSolver.hxx:578:15: error: there are no arguments to 'abort' that depend on a template parameter, so a declaration of 'abort' must be available [-fpermissive]
abort();
^
EigenvalueSolver.hxx:593:9: error: 'cout' was not declared in this scope
cout << "Recompile with MKL" << endl;
^
EigenvalueSolver.hxx:593:41: error: 'endl' was not declared in this scope
cout << "Recompile with MKL" << endl;
^
EigenvalueSolver.hxx:594:15: error: there are no arguments to 'abort' that depend on a template parameter, so a declaration of 'abort' must be available [-fpermissive]
abort();
^
EigenvalueSolver.hxx:599:9: error: 'cout' was not declared in this scope
cout << "Recompile with eigenvalue solver" << endl;
^
EigenvalueSolver.hxx:599:55: error: 'endl' was not declared in this scope
cout << "Recompile with eigenvalue solver" << endl;
^
EigenvalueSolver.hxx:600:15: error: there are no arguments to 'abort' that depend on a template parameter, so a declaration of 'abort' must be available [-fpermissive]
abort();
^
EigenvalueSolver.cxx: At global scope:
EigenvalueSolver.cxx:15:41: error: wrong number of template arguments (3, should be 2)
EigenProblem_Base<T, MatStiff, MatMass>::EigenProblem_Base()
^
In file included from EigenvalueSolver.cxx:3:0:
EigenvalueSolver.hxx:18:9: error: provided for 'template<class T, class MatStiff> class Seldon::EigenProblem_Base'
class EigenProblem_Base
^
EigenvalueSolver.cxx:15:62: error: declaration of template 'template<class T, class MatStiff, class MatMass> int Seldon::EigenProblem_Base()'
EigenProblem_Base<T, MatStiff, MatMass>::EigenProblem_Base()
^
In file included from EigenvalueSolver.cxx:3:0:
EigenvalueSolver.hxx:18:9: error: conflicts with previous declaration 'template<class T, class MatStiff> class Seldon::EigenProblem_Base'
class EigenProblem_Base
^
EigenvalueSolver.cxx: In function 'int Seldon::EigenProblem_Base()':
EigenvalueSolver.cxx:17:5: error: 'eigenvalue_computation_mode' was not declared in this scope
eigenvalue_computation_mode = 1;
^
EigenvalueSolver.cxx:18:5: error: 'nb_eigenvalues_wanted' was not declared in this scope
nb_eigenvalues_wanted = 0;
^
EigenvalueSolver.cxx:19:5: error: 'nb_add_eigenvalues' was not declared in this scope
nb_add_eigenvalues = 0;
^
EigenvalueSolver.cxx:21:5: error: 'type_spectrum_wanted' was not declared in this scope
type_spectrum_wanted = LARGE_EIGENVALUES;
^
EigenvalueSolver.cxx:21:28: error: 'LARGE_EIGENVALUES' was not declared in this scope
type_spectrum_wanted = LARGE_EIGENVALUES;
^
EigenvalueSolver.cxx:22:5: error: 'type_sort_eigenvalues' was not declared in this scope
type_sort_eigenvalues = SORTED_MODULUS;
^
EigenvalueSolver.cxx:22:29: error: 'SORTED_MODULUS' was not declared in this scope
type_sort_eigenvalues = SORTED_MODULUS;
^
EigenvalueSolver.cxx:24:5: error: 'use_cholesky' was not declared in this scope
use_cholesky = false;
^
EigenvalueSolver.cxx:25:5: error: 'diagonal_mass' was not declared in this scope
diagonal_mass = false;
^
EigenvalueSolver.cxx:26:5: error: 'stopping_criterion' was not declared in this scope
stopping_criterion = 1e-6;
^
EigenvalueSolver.cxx:27:5: error: 'nb_maximum_iterations' was not declared in this scope
nb_maximum_iterations = 1000;
^
EigenvalueSolver.cxx:28:5: error: 'nb_prod' was not declared in this scope
nb_prod = 0;
^
EigenvalueSolver.cxx:29:5: error: 'n_' was not declared in this scope
n_ = 0;
^
EigenvalueSolver.cxx:31:5: error: 'shift' was not declared in this scope
shift = T(0);
^
EigenvalueSolver.cxx:32:5: error: 'shift_imag' was not declared in this scope
shift_imag = T(0);
^
EigenvalueSolver.cxx:34:5: error: 'nb_arnoldi_vectors' was not declared in this scope
nb_arnoldi_vectors = 0;
^
EigenvalueSolver.cxx:35:5: error: 'automatic_selection_arnoldi_vectors' was not declared in this scope
automatic_selection_arnoldi_vectors = true;
^
EigenvalueSolver.cxx:37:5: error: 'print_level' was not declared in this scope
print_level = 0;
^
EigenvalueSolver.cxx:39:5: error: 'complex_system' was not declared in this scope
complex_system = false;
^
EigenvalueSolver.cxx:40:5: error: 'Mh' was not declared in this scope
Mh = NULL;
^
EigenvalueSolver.cxx:40:10: error: 'NULL' was not declared in this scope
Mh = NULL;
^
EigenvalueSolver.cxx:41:5: error: 'Kh' was not declared in this scope
Kh = NULL;
^
EigenvalueSolver.cxx:48:5: error: 'type_solver' was not declared in this scope
type_solver = SOLVER_LOBPCG;
^
EigenvalueSolver.cxx:48:19: error: 'SOLVER_LOBPCG' was not declared in this scope
type_solver = SOLVER_LOBPCG;
^
EigenvalueSolver.cxx:49:5: error: 'ortho_manager' was not declared in this scope
ortho_manager = ORTHO_DGKS;
^
EigenvalueSolver.cxx:49:21: error: 'ORTHO_DGKS' was not declared in this scope
ortho_manager = ORTHO_DGKS;
^
EigenvalueSolver.cxx:50:5: error: 'nb_blocks' was not declared in this scope
nb_blocks = 2;
^
EigenvalueSolver.cxx:51:5: error: 'restart_number' was not declared in this scope
restart_number = 20;
^
EigenvalueSolver.cxx: At global scope:
EigenvalueSolver.cxx:57:46: error: wrong number of template arguments (3, should be 2)
void EigenProblem_Base<T, MatStiff, MatMass>::Init(int n)
^
In file included from EigenvalueSolver.cxx:3:0:
EigenvalueSolver.hxx:18:9: error: provided for 'template<class T, class MatStiff> class Seldon::EigenProblem_Base'
class EigenProblem_Base
^
EigenvalueSolver.cxx: In function 'void Seldon::Init(int)':
EigenvalueSolver.cxx:59:5: error: 'n_' was not declared in this scope
n_ = n;
^
EigenvalueSolver.cxx:60:5: error: 'nb_prod' was not declared in this scope
nb_prod = 0;
^
EigenvalueSolver.cxx:68:9: error: 'nb_eigenvalues_wanted' was not declared in this scope
if (nb_eigenvalues_wanted >= (nglob - 2))
^
EigenvalueSolver.cxx:70:9: error: 'cout' was not declared in this scope
cout << "Too many wanted eigenvalues " << endl;
^
EigenvalueSolver.cxx:70:51: error: 'endl' was not declared in this scope
cout << "Too many wanted eigenvalues " << endl;
^
EigenvalueSolver.cxx:75:15: error: there are no arguments to 'abort' that depend on a template parameter, so a declaration of 'abort' must be available [-fpermissive]
abort();
^
EigenvalueSolver.cxx:78:9: error: 'automatic_selection_arnoldi_vectors' was not declared in this scope
if (automatic_selection_arnoldi_vectors)
^
EigenvalueSolver.cxx:79:7: error: 'nb_arnoldi_vectors' was not declared in this scope
nb_arnoldi_vectors = min(nglob, 2*nb_eigenvalues_wanted+2);
^
EigenvalueSolver.cxx:79:41: error: 'nb_eigenvalues_wanted' was not declared in this scope
nb_arnoldi_vectors = min(nglob, 2*nb_eigenvalues_wanted+2);
^
EigenvalueSolver.cxx:79:64: error: there are no arguments to 'min' that depend on a template parameter, so a declaration of 'min' must be available [-fpermissive]
nb_arnoldi_vectors = min(nglob, 2*nb_eigenvalues_wanted+2);
^
EigenvalueSolver.cxx: At global scope:
EigenvalueSolver.cxx:92:46: error: wrong number of template arguments (3, should be 2)
void EigenProblem_Base<T, MatStiff, MatMass>::
^
In file included from EigenvalueSolver.cxx:3:0:
EigenvalueSolver.hxx:18:9: error: provided for 'template<class T, class MatStiff> class Seldon::EigenProblem_Base'
class EigenProblem_Base
^
EigenvalueSolver.cxx: In function 'void Seldon::InitMatrix(MatStiff&)':
EigenvalueSolver.cxx:95:5: error: 'Kh' was not declared in this scope
Kh = &K;
^
EigenvalueSolver.cxx:96:5: error: 'Mh' was not declared in this scope
Mh = NULL;
^
EigenvalueSolver.cxx:96:10: error: 'NULL' was not declared in this scope
Mh = NULL;
^
EigenvalueSolver.cxx:97:5: error: invalid use of 'this' in non-member function
this->diagonal_mass = true;
^
EigenvalueSolver.cxx:99:39: error: 'shift_imag' was not declared in this scope
&& (!IsComplexMatrix(K)) && (shift_imag != T(0)) )
^
EigenvalueSolver.cxx:103:9: error: invalid use of 'this' in non-member function
this->diagonal_mass = false;
^
EigenvalueSolver.cxx:106:5: error: invalid use of 'this' in non-member function
this->Init(K.GetM());
^
EigenvalueSolver.cxx: At global scope:
EigenvalueSolver.cxx:116:46: error: wrong number of template arguments (3, should be 2)
void EigenProblem_Base<T, MatStiff, MatMass>::
^
In file included from EigenvalueSolver.cxx:3:0:
EigenvalueSolver.hxx:18:9: error: provided for 'template<class T, class MatStiff> class Seldon::EigenProblem_Base'
class EigenProblem_Base
^
EigenvalueSolver.cxx: In function 'void Seldon::InitMatrix(MatStiff&, MatMass&)':
EigenvalueSolver.cxx:119:5: error: 'Kh' was not declared in this scope
Kh = &K;
^
EigenvalueSolver.cxx:120:5: error: 'Mh' was not declared in this scope
Mh = &M;
^
EigenvalueSolver.cxx:121:5: error: invalid use of 'this' in non-member function
this->diagonal_mass = false;
^
EigenvalueSolver.cxx:122:5: error: invalid use of 'this' in non-member function
this->Init(K.GetM());
^
EigenvalueSolver.cxx: At global scope:
EigenvalueSolver.cxx:133:45: error: wrong number of template arguments (3, should be 2)
int EigenProblem_Base<T, MatStiff, MatMass>::GetComputationalMode() const
^
In file included from EigenvalueSolver.cxx:3:0:
EigenvalueSolver.hxx:18:9: error: provided for 'template<class T, class MatStiff> class Seldon::EigenProblem_Base'
class EigenProblem_Base
^
EigenvalueSolver.cxx:133:71: error: non-member function 'int Seldon::GetComputationalMode()' cannot have cv-qualifier
int EigenProblem_Base<T, MatStiff, MatMass>::GetComputationalMode() const
^
EigenvalueSolver.cxx: In function 'int Seldon::GetComputationalMode()':
EigenvalueSolver.cxx:135:12: error: 'eigenvalue_computation_mode' was not declared in this scope
return eigenvalue_computation_mode;
^
EigenvalueSolver.cxx: At global scope:
EigenvalueSolver.cxx:141:46: error: wrong number of template arguments (3, should be 2)
void EigenProblem_Base<T, MatStiff, MatMass>::SetComputationalMode(int mode)
^
In file included from EigenvalueSolver.cxx:3:0:
EigenvalueSolver.hxx:18:9: error: provided for 'template<class T, class MatStiff> class Seldon::EigenProblem_Base'
class EigenProblem_Base
^
EigenvalueSolver.cxx: In function 'void Seldon::SetComputationalMode(int)':
EigenvalueSolver.cxx:143:5: error: 'eigenvalue_computation_mode' was not declared in this scope
eigenvalue_computation_mode = mode;
^
EigenvalueSolver.cxx: At global scope:
EigenvalueSolver.cxx:149:45: error: wrong number of template arguments (3, should be 2)
int EigenProblem_Base<T, MatStiff, MatMass>::GetNbAskedEigenvalues() const
^
In file included from EigenvalueSolver.cxx:3:0:
EigenvalueSolver.hxx:18:9: error: provided for 'template<class T, class MatStiff> class Seldon::EigenProblem_Base'
class EigenProblem_Base
^
EigenvalueSolver.cxx:149:72: error: non-member function 'int Seldon::GetNbAskedEigenvalues()' cannot have cv-qualifier
int EigenProblem_Base<T, MatStiff, MatMass>::GetNbAskedEigenvalues() const
^
EigenvalueSolver.cxx: In function 'int Seldon::GetNbAskedEigenvalues()':
EigenvalueSolver.cxx:151:12: error: 'nb_eigenvalues_wanted' was not declared in this scope
return nb_eigenvalues_wanted;
^
EigenvalueSolver.cxx: At global scope:
EigenvalueSolver.cxx:157:45: error: wrong number of template arguments (3, should be 2)
int EigenProblem_Base<T, MatStiff, MatMass>::GetNbAdditionalEigenvalues() const
^
In file included from EigenvalueSolver.cxx:3:0:
EigenvalueSolver.hxx:18:9: error: provided for 'template<class T, class MatStiff> class Seldon::EigenProblem_Base'
class EigenProblem_Base
^
EigenvalueSolver.cxx:157:77: error: non-member function 'int Seldon::GetNbAdditionalEigenvalues()' cannot have cv-qualifier
int EigenProblem_Base<T, MatStiff, MatMass>::GetNbAdditionalEigenvalues() const
^
EigenvalueSolver.cxx: In function 'int Seldon::GetNbAdditionalEigenvalues()':
EigenvalueSolver.cxx:159:12: error: 'nb_add_eigenvalues' was not declared in this scope
return nb_add_eigenvalues;
^
EigenvalueSolver.cxx: At global scope:
EigenvalueSolver.cxx:165:45: error: wrong number of template arguments (3, should be 2)
int EigenProblem_Base<T, MatStiff, MatMass>::GetNbBlocks() const
^
In file included from EigenvalueSolver.cxx:3:0:
EigenvalueSolver.hxx:18:9: error: provided for 'template<class T, class MatStiff> class Seldon::EigenProblem_Base'
class EigenProblem_Base
^
EigenvalueSolver.cxx:165:62: error: non-member function 'int Seldon::GetNbBlocks()' cannot have cv-qualifier
int EigenProblem_Base<T, MatStiff, MatMass>::GetNbBlocks() const
^
EigenvalueSolver.cxx: In function 'int Seldon::GetNbBlocks()':
EigenvalueSolver.cxx:167:12: error: 'nb_blocks' was not declared in this scope
return nb_blocks;
^
EigenvalueSolver.cxx: At global scope:
EigenvalueSolver.cxx:173:46: error: wrong number of template arguments (3, should be 2)
void EigenProblem_Base<T, MatStiff, MatMass>::SetNbBlocks(int n)
^
In file included from EigenvalueSolver.cxx:3:0:
EigenvalueSolver.hxx:18:9: error: provided for 'template<class T, class MatStiff> class Seldon::EigenProblem_Base'
class EigenProblem_Base
^
EigenvalueSolver.cxx: In function 'void Seldon::SetNbBlocks(int)':
EigenvalueSolver.cxx:175:5: error: 'nb_blocks' was not declared in this scope
nb_blocks = n;
^
EigenvalueSolver.cxx: At global scope:
EigenvalueSolver.cxx:181:45: error: wrong number of template arguments (3, should be 2)
int EigenProblem_Base<T, MatStiff, MatMass>::GetNbMaximumRestarts() const
^
In file included from EigenvalueSolver.cxx:3:0:
EigenvalueSolver.hxx:18:9: error: provided for 'template<class T, class MatStiff> class Seldon::EigenProblem_Base'
class EigenProblem_Base
^
EigenvalueSolver.cxx:181:71: error: non-member function 'int Seldon::GetNbMaximumRestarts()' cannot have cv-qualifier
int EigenProblem_Base<T, MatStiff, MatMass>::GetNbMaximumRestarts() const
^
EigenvalueSolver.cxx: In function 'int Seldon::GetNbMaximumRestarts()':
EigenvalueSolver.cxx:183:12: error: 'restart_number' was not declared in this scope
return restart_number;
^
EigenvalueSolver.cxx: At global scope:
EigenvalueSolver.cxx:189:46: error: wrong number of template arguments (3, should be 2)
void EigenProblem_Base<T, MatStiff, MatMass>::SetNbMaximumRestarts(int m)
^
In file included from EigenvalueSolver.cxx:3:0:
EigenvalueSolver.hxx:18:9: error: provided for 'template<class T, class MatStiff> class Seldon::EigenProblem_Base'
class EigenProblem_Base
^
EigenvalueSolver.cxx: In function 'void Seldon::SetNbMaximumRestarts(int)':
EigenvalueSolver.cxx:191:5: error: 'restart_number' was not declared in this scope
restart_number = m;
^
EigenvalueSolver.cxx: At global scope:
EigenvalueSolver.cxx:197:45: error: wrong number of template arguments (3, should be 2)
int EigenProblem_Base<T, MatStiff, MatMass>::GetOrthoManager() const
^
In file included from EigenvalueSolver.cxx:3:0:
EigenvalueSolver.hxx:18:9: error: provided for 'template<class T, class MatStiff> class Seldon::EigenProblem_Base'
class EigenProblem_Base
^
EigenvalueSolver.cxx:197:66: error: non-member function 'int Seldon::GetOrthoManager()' cannot have cv-qualifier
int EigenProblem_Base<T, MatStiff, MatMass>::GetOrthoManager() const
^
EigenvalueSolver.cxx: In function 'int Seldon::GetOrthoManager()':
EigenvalueSolver.cxx:199:12: error: 'ortho_manager' was not declared in this scope
return ortho_manager;
^
EigenvalueSolver.cxx: At global scope:
EigenvalueSolver.cxx:205:45: error: wrong number of template arguments (3, should be 2)
int EigenProblem_Base<T, MatStiff, MatMass>::GetEigensolverType() const
^
In file included from EigenvalueSolver.cxx:3:0:
EigenvalueSolver.hxx:18:9: error: provided for 'template<class T, class MatStiff> class Seldon::EigenProblem_Base'
class EigenProblem_Base
^
EigenvalueSolver.cxx:205:69: error: non-member function 'int Seldon::GetEigensolverType()' cannot have cv-qualifier
int EigenProblem_Base<T, MatStiff, MatMass>::GetEigensolverType() const
^
EigenvalueSolver.cxx: In function 'int Seldon::GetEigensolverType()':
EigenvalueSolver.cxx:207:12: error: 'type_solver' was not declared in this scope
return type_solver;
^
EigenvalueSolver.cxx: At global scope:
EigenvalueSolver.cxx:213:46: error: wrong number of template arguments (3, should be 2)
void EigenProblem_Base<T, MatStiff, MatMass>::SetEigensolverType(int type)
^
In file included from EigenvalueSolver.cxx:3:0:
EigenvalueSolver.hxx:18:9: error: provided for 'template<class T, class MatStiff> class Seldon::EigenProblem_Base'
class EigenProblem_Base
^
EigenvalueSolver.cxx: In function 'void Seldon::SetEigensolverType(int)':
EigenvalueSolver.cxx:215:5: error: 'type_solver' was not declared in this scope
type_solver = type;
^
EigenvalueSolver.cxx: At global scope:
EigenvalueSolver.cxx:237:46: error: wrong number of template arguments (3, should be 2)
void EigenProblem_Base<T, MatStiff, MatMass>::SetNbAskedEigenvalues(int n)
^
In file included from EigenvalueSolver.cxx:3:0:
EigenvalueSolver.hxx:18:9: error: provided for 'template<class T, class MatStiff> class Seldon::EigenProblem_Base'
class EigenProblem_Base
^
EigenvalueSolver.cxx: In function 'void Seldon::SetNbAskedEigenvalues(int)':
EigenvalueSolver.cxx:239:5: error: 'nb_eigenvalues_wanted' was not declared in this scope
nb_eigenvalues_wanted = n;
^
EigenvalueSolver.cxx: At global scope:
EigenvalueSolver.cxx:245:46: error: wrong number of template arguments (3, should be 2)
void EigenProblem_Base<T, MatStiff, MatMass>::SetNbAdditionalEigenvalues(int n)
^
In file included from EigenvalueSolver.cxx:3:0:
EigenvalueSolver.hxx:18:9: error: provided for 'template<class T, class MatStiff> class Seldon::EigenProblem_Base'
class EigenProblem_Base
^
EigenvalueSolver.cxx: In function 'void Seldon::SetNbAdditionalEigenvalues(int)':
EigenvalueSolver.cxx:247:5: error: 'nb_add_eigenvalues' was not declared in this scope
nb_add_eigenvalues = n;
^
EigenvalueSolver.cxx: At global scope:
EigenvalueSolver.cxx:253:45: error: wrong number of template arguments (3, should be 2)
int EigenProblem_Base<T, MatStiff, MatMass>::GetTypeSpectrum() const
^
In file included from EigenvalueSolver.cxx:3:0:
EigenvalueSolver.hxx:18:9: error: provided for 'template<class T, class MatStiff> class Seldon::EigenProblem_Base'
class EigenProblem_Base
^
EigenvalueSolver.cxx:253:66: error: non-member function 'int Seldon::GetTypeSpectrum()' cannot have cv-qualifier
int EigenProblem_Base<T, MatStiff, MatMass>::GetTypeSpectrum() const
^
EigenvalueSolver.cxx: In function 'int Seldon::GetTypeSpectrum()':
EigenvalueSolver.cxx:255:12: error: 'type_spectrum_wanted' was not declared in this scope
return type_spectrum_wanted;
^
EigenvalueSolver.cxx: At global scope:
EigenvalueSolver.cxx:261:45: error: wrong number of template arguments (3, should be 2)
int EigenProblem_Base<T, MatStiff, MatMass>::GetTypeSorting() const
^
In file included from EigenvalueSolver.cxx:3:0:
EigenvalueSolver.hxx:18:9: error: provided for 'template<class T, class MatStiff> class Seldon::EigenProblem_Base'
class EigenProblem_Base
^
EigenvalueSolver.cxx:261:65: error: non-member function 'int Seldon::GetTypeSorting()' cannot have cv-qualifier
int EigenProblem_Base<T, MatStiff, MatMass>::GetTypeSorting() const
^
EigenvalueSolver.cxx: In function 'int Seldon::GetTypeSorting()':
EigenvalueSolver.cxx:263:12: error: 'type_sort_eigenvalues' was not declared in this scope
return type_sort_eigenvalues;
^
EigenvalueSolver.cxx: At global scope:
EigenvalueSolver.cxx:274:43: error: wrong number of template arguments (3, should be 2)
T EigenProblem_Base<T, MatStiff, MatMass>::GetShiftValue() const
^
In file included from EigenvalueSolver.cxx:3:0:
EigenvalueSolver.hxx:18:9: error: provided for 'template<class T, class MatStiff> class Seldon::EigenProblem_Base'
class EigenProblem_Base
^
EigenvalueSolver.cxx:274:62: error: non-member function 'T Seldon::GetShiftValue()' cannot have cv-qualifier
T EigenProblem_Base<T, MatStiff, MatMass>::GetShiftValue() const
^
EigenvalueSolver.cxx: In function 'T Seldon::GetShiftValue()':
EigenvalueSolver.cxx:276:12: error: 'shift' was not declared in this scope
return shift;
^
EigenvalueSolver.cxx: At global scope:
EigenvalueSolver.cxx:288:43: error: wrong number of template arguments (3, should be 2)
T EigenProblem_Base<T, MatStiff, MatMass>::GetImagShiftValue() const
^
In file included from EigenvalueSolver.cxx:3:0:
EigenvalueSolver.hxx:18:9: error: provided for 'template<class T, class MatStiff> class Seldon::EigenProblem_Base'
class EigenProblem_Base
^
EigenvalueSolver.cxx:288:66: error: non-member function 'T Seldon::GetImagShiftValue()' cannot have cv-qualifier
T EigenProblem_Base<T, MatStiff, MatMass>::GetImagShiftValue() const
^
EigenvalueSolver.cxx: In function 'T Seldon::GetImagShiftValue()':
EigenvalueSolver.cxx:290:12: error: 'shift_imag' was not declared in this scope
return shift_imag;
^
EigenvalueSolver.cxx: At global scope:
EigenvalueSolver.cxx:296:46: error: wrong number of template arguments (3, should be 2)
void EigenProblem_Base<T, MatStiff, MatMass>::SetShiftValue(const T& val)
^
In file included from EigenvalueSolver.cxx:3:0:
EigenvalueSolver.hxx:18:9: error: provided for 'template<class T, class MatStiff> class Seldon::EigenProblem_Base'
class EigenProblem_Base
^
EigenvalueSolver.cxx: In function 'void Seldon::SetShiftValue(const T&)':
EigenvalueSolver.cxx:298:5: error: 'shift' was not declared in this scope
shift = val;
^
EigenvalueSolver.cxx: At global scope:
EigenvalueSolver.cxx:304:46: error: wrong number of template arguments (3, should be 2)
void EigenProblem_Base<T, MatStiff, MatMass>::SetImagShiftValue(const T& val)
^
In file included from EigenvalueSolver.cxx:3:0:
EigenvalueSolver.hxx:18:9: error: provided for 'template<class T, class MatStiff> class Seldon::EigenProblem_Base'
class EigenProblem_Base
^
EigenvalueSolver.cxx: In function 'void Seldon::SetImagShiftValue(const T&)':
EigenvalueSolver.cxx:306:5: error: 'shift_imag' was not declared in this scope
shift_imag = val;
^
EigenvalueSolver.cxx: At global scope:
EigenvalueSolver.cxx:316:46: error: wrong number of template arguments (3, should be 2)
void EigenProblem_Base<T, MatStiff, MatMass>::
^
In file included from EigenvalueSolver.cxx:3:0:
EigenvalueSolver.hxx:18:9: error: provided for 'template<class T, class MatStiff> class Seldon::EigenProblem_Base'
class EigenProblem_Base
^
EigenvalueSolver.cxx: In function 'void Seldon::SetTypeSpectrum(int, const T&, int)':
EigenvalueSolver.cxx:319:5: error: 'type_spectrum_wanted' was not declared in this scope
type_spectrum_wanted = type;
^
EigenvalueSolver.cxx:320:5: error: 'shift' was not declared in this scope
shift = val;
^
EigenvalueSolver.cxx:321:5: error: 'type_sort_eigenvalues' was not declared in this scope
type_sort_eigenvalues = type_sort;
^
EigenvalueSolver.cxx: At global scope:
EigenvalueSolver.cxx:331:46: error: wrong number of template arguments (3, should be 2)
void EigenProblem_Base<T, MatStiff, MatMass>::
^
In file included from EigenvalueSolver.cxx:3:0:
EigenvalueSolver.hxx:18:9: error: provided for 'template<class T, class MatStiff> class Seldon::EigenProblem_Base'
class EigenProblem_Base
^
EigenvalueSolver.cxx:332:35: error: 'complex' does not name a type
SetTypeSpectrum(int type, const complex<T>& val, int type_sort)
^
EigenvalueSolver.cxx:332:35: error: ISO C++ forbids declaration of 'parameter' with no type [-fpermissive]
EigenvalueSolver.cxx:332:42: error: expected ',' or '...' before '<' token
SetTypeSpectrum(int type, const complex<T>& val, int type_sort)
^
EigenvalueSolver.cxx: In function 'void Seldon::SetTypeSpectrum(int, int)':
EigenvalueSolver.cxx:336:5: error: 'type_spectrum_wanted' was not declared in this scope
type_spectrum_wanted = type;
^
EigenvalueSolver.cxx:337:5: error: 'shift' was not declared in this scope
shift = real(val);
^
EigenvalueSolver.cxx:337:18: error: 'val' was not declared in this scope
shift = real(val);
^
EigenvalueSolver.cxx:337:21: error: there are no arguments to 'real' that depend on a template parameter, so a declaration of 'real' must be available [-fpermissive]
shift = real(val);
^
EigenvalueSolver.cxx:338:5: error: 'shift_imag' was not declared in this scope
shift_imag = imag(val);
^
EigenvalueSolver.cxx:338:26: error: there are no arguments to 'imag' that depend on a template parameter, so a declaration of 'imag' must be available [-fpermissive]
shift_imag = imag(val);
^
EigenvalueSolver.cxx:340:9: error: 'Kh' was not declared in this scope
if (Kh != NULL)
^
EigenvalueSolver.cxx:340:15: error: 'NULL' was not declared in this scope
if (Kh != NULL)
^
EigenvalueSolver.cxx:342:37: error: there are no arguments to 'IsSymmetricMatrix' that depend on a template parameter, so a declaration of 'IsSymmetricMatrix' must be available [-fpermissive]
if ( (!IsSymmetricMatrix(*Kh))
^
EigenvalueSolver.cxx:343:38: error: there are no arguments to 'IsComplexMatrix' that depend on a template parameter, so a declaration of 'IsComplexMatrix' must be available [-fpermissive]
&& (!IsComplexMatrix(*Kh)) && (shift_imag != T(0)) )
^
EigenvalueSolver.cxx:347:13: error: invalid use of 'this' in non-member function
this->diagonal_mass = false;
^
EigenvalueSolver.cxx:351:5: error: 'type_sort_eigenvalues' was not declared in this scope
type_sort_eigenvalues = type_sort;
^
EigenvalueSolver.cxx:351:29: error: 'type_sort' was not declared in this scope
type_sort_eigenvalues = type_sort;
^
EigenvalueSolver.cxx: At global scope:
EigenvalueSolver.cxx:357:48: error: wrong number of template arguments (3, should be 2)
double EigenProblem_Base<T, MatStiff, MatMass>
^
In file included from EigenvalueSolv...
[truncated message content] |
|
From: Marc D. <mar...@in...> - 2014-08-16 21:08:47
|
Hi, I have updated the documentation about eigenvalue solvers : http://www.math.u-bordeaux1.fr/~durufle/seldon/eigenvalue.php I explain in this page how the example eigenvalue_test.cpp can be compiled with arpack, anasazi or feast (the solvers interfaced in Seldon). I have updated the interface with anasazi and added the file eigenvalue_test.cpp. They are available in my git repository and in the archive (which is just a mirror of the files in the git repository): http://www.math.u-bordeaux1.fr/~durufle/seldon.tar.gz On my computer, the three different eigensolvers are working fine for the example file. Best regards. |
|
From: Sumit K. N. <sk...@gm...> - 2014-08-13 10:23:01
|
Marc I was wondering if you had an example to interfacing Seldon with ARPACK and ANASAZI. I think that was what Google detected when I gave it a search term. On Wed, Aug 13, 2014 at 1:37 PM, Marc Durufle <mar...@in...> wrote: > Hi, > I send you the files eigenvalue_test.cc (which is a unitary test file for > the computation of eigenvalue of dense matrices) and > eigenvalue_solver_test.cc (which is dedicated to sparse matrices). Only the > second file is currently using the functions implemented in > EigenvalueSolver.hxx, the first file is using the Lapack interface > (Lapack_Eigenvalue.cxx). > Best regards. > > |
|
From: Marc D. <mar...@in...> - 2014-08-13 08:07:32
|
Hi, I send you the files eigenvalue_test.cc (which is a unitary test file for the computation of eigenvalue of dense matrices) and eigenvalue_solver_test.cc (which is dedicated to sparse matrices). Only the second file is currently using the functions implemented in EigenvalueSolver.hxx, the first file is using the Lapack interface (Lapack_Eigenvalue.cxx). Best regards. |
|
From: Vivien M. <de...@vi...> - 2014-08-13 00:18:30
|
Hello, "Sumit K. Nath" <sk...@gm...> writes: > I was unable to find this file listed in the following page > http://seldon.sourceforge.net/doc-5.2/eigenvalue.php The example file "test/program/eigenvalue_test.cpp" is missing. So are "EigenvalueSolver.hxx" and "EigenvalueSolver.cxx". I am not sure what happened in this version (5.2) of Seldon. The documentation is ahead of the source code. > Is there some other place I should be looking at? I cannot find the example file "test/program/eigenvalue_test.cpp", but all functions may be found in the following Git repository: git://gitorious.org/seldon/marcdurufles-src.git In "computation/interfaces/eigenvalue/", you will find "EigenvalueSolver.hxx" and "EigenvalueSolver.cxx". This repository is being merged into the reference repository, so that next stable version should include them. Marc Duruflé implemented these and probably has the example file "test/program/eigenvalue_test.cpp". Marc, could you send it and also commit it in your repository? Thanks. Best regards, Vivien Mallet. |
|
From: Sumit K. N. <sk...@gm...> - 2014-08-12 15:32:36
|
Hello I was unable to find this file listed in the following page http://seldon.sourceforge.net/doc-5.2/eigenvalue.php Is there some other place I should be looking at? Thanks and regards |
|
From: Marc D. <mar...@in...> - 2014-06-05 09:35:18
|
Hi, Currently Seldon is mainly interface with Arpack eigenvalue solver. I plan to interface it with other eigenvalue solvers by using the same approach, such that you could declare an object SparseEigenProblem and select the eigenvalue solver. Usually I am dealing with real symmetric mass matrices, and I didn't not test extensively the interface for other types of mass matrices, and it turned out that the interface wasn't working for any type of mass matrix. I have corrected this misbehaviour, and I have tested with all the combinations of matrices (the mass matrix and stiffness matrix can be either real, complex, symmetric or unsymmetric), it works fine now. If you want to test the corrections, you can download my repository https://www.gitorious.org/seldon/marcdurufles-src/ As you have noticed it, the SparseEigenProblem is defined with the following set of parameters : template<class T, class MatStiff, class MatMass = Matrix<double, Symmetric, ArrayRowSymSparse>> In this declaration, I have set a default value for the parameter MatMass such that if you instantiate an object by : SparseEigenProblem<double, Matrix<double, General, ArrayRowSparse> > var_eig; It will consider that the mass matrix is real symmetric (which is an usual feature). Moreover, if the mass matrix is equal to the identity, you can type : var_eig.InitMatrix(K); where K is the stiffness matrix, and a call to GetEigenvaluesEigenvectors will compute the eigenvalues of the stiffness matrix K (since M = identity). So it seems logical to keep the fact that the type of the mass matrix is an "optional" parameter. For example, you can make it explicit by declaring : SparseEigenProblem<double, Matrix<complex<double>, General, ArrayRowSparse>, Matrix<complex<double>, General, ArrayRowSparse> > var_eig; In that case, both stiffness and mass matrices are complex unsymmetric matrices. the matrices have to been provided with InitMatrix : var_eig.InitMatrix(K, M); and GetEigenvaluesEigenvectors will compute eigenvalues of M^{-1} K. I would like to recall the computational modes (which can be read in the documentation of Arpack) : REGULAR_MODE : in that mode, you can only compute large eigenvalues of M^-1 K where M is a real positive symmetric matrix (it is a requirement of Arpack subroutines) SHIFTED_MODE : in that mode, you can only compute eigenvalues close to a given value sigma (called the shift), M is again a real positive symmetric matrix BUCKLING_MODE : in that mode you can only compute eigenvalues close to the shift, K and M must be real symmetric positive CAYLEY_MODE : in that mode you can only compute eigenvalues close to the shift, K is real symmetric and M must be real symmetric positive When M is diagonal, you can solve a standard eigenvalue problem by considering matrix M^-1/2 K M^-1/2. In order to achieve that, you just have to mention : var_eig.SetDiagonalMass(); In that case, the diagonal is extracted from the sparse matrix, the square root computed, and the arpack subroutine solving standard eigenvalue problem is called. The same kind of functionalities is available if you want to exploit the Cholesky factorisation of M (the Cholesky factorisation will be computed by calling Cholmod), in that case we consider the matrix L^-1 K L^-T where M = L L^T. In order to solve a standard eigenvalue problem by using the cholesky factorisation of a real positive symmetric matrix, you have to mention : var_eig.SetCholeskyFactoForMass() As you see, in all the Arpack subroutines, M is always considered as a positive symmetric matrix (real or hermitian, but in the interface I have dropped the hermitian case, because hermitian sparse matrices are not implemented in Seldon). In order to consider other types of mass matrices, I had implemented an additional mode : INVERT_MODE : in that mode, you can compute small, large or clustered eigenvalues of M^-1 K for any matrix M and K In that mode, I am always calling an Arpack subroutine for standard unsymmetric eigenvalue problem (since M^-1 K is unsymmetric even though M and K are symmetric). So in the case where M and K are symmetric, this mode is usually less efficient than other modes. I just hadn't tested the invert mode when M is not a real symmetric matrix. Now, the code is corrected, so you can use this mode to solve your generalized eigenvalue problem : var_eig.SetComputationalMode(var_eig.INVERT_MODE); Best regards. |
|
From: James C. <j.w...@wa...> - 2014-05-22 15:50:37
|
Hello Seldon, I was wondering if there's any way of calculating the eigenvalues+vectors of the generalized complex non symmetric eigenvalues problem where the both the stiff and mass matrices are complex? I see that class Seldon::SparseEigenProblem< T, MatStiff, MatMass > is defined as: template<class T, class MatStiff, class MatMass = Matrix<double, Symmetric, ArrayRowSymSparse>> rathar than template<class T, class MatStiff, class MatMass> where class MatMass = Matrix<complex<double>, General, ArrayRowSymSparse>>. I suppose that there are reasons why this is the case. Are there plans to make the Mass matrix type more general? Thanks, James -- James W S Cook, +44 (0) 24 7657 3874 PS 120, Physical Science Building CFSA, Dept. of Physics, University of Warwick, UK. |
|
From: Marc D. <mar...@in...> - 2014-03-29 16:15:38
|
Hi, actually SuperLU is using Blas functions, which is attractive because some Blas libraries (for example MKL) are optimized especially for Blas Level 3 routines. As a result, the solution of the linear system is more efficient. In order to compile with blas, you need to link with blas for instance : g++ -I../.. -DSELDON_WITH_SUPERLU direct_test.cpp -I/Users/jonas/Dropbox/cpp/libraries/SuperLU_4.3/SRC -L/usr/local/lib -lsuperlu -Lblas_directory -lblas -Lcblas_directory -lcblas When I compiled with this command line, it works for my configuration. Blas and Cblas can be downloaded in netlib.org, they can be compiled with gfortran. If you want to use Blas/Cblas functions contained in the MKL, you have to type : g++ -I../.. -DSELDON_WITH_SUPERLU direct_test.cpp -I/Users/jonas/Dropbox/cpp/libraries/SuperLU_4.3/SRC -L/usr/local/lib -lsuperlu -L/opt/intel/mkl/lib/ia32 -lmkl_gf -lmkl_gnu_thread -lmkl_core -fopenmp In that case, you use the multi-threaded MKL library, so it should run faster if your machine has many cores. If you have still problems, you can report them. Best regards. |
|
From: Durufle m. <mar...@ya...> - 2014-03-29 16:04:38
|
Hi, actually SuperLU is using Blas functions, which is attractive because some Blas libraries (for example MKL) are optimized especially for Blas Level 3 routines. As a result, the solution of the linear system is more efficient. In order to compile with blas, you need to link with blas for instance : g++ -I../.. -DSELDON_WITH_SUPERLU direct_test.cpp -I/Users/jonas/Dropbox/cpp/libraries/SuperLU_4.3/SRC -L/usr/local/lib -lsuperlu -Lblas_directory -lblas -Lcblas_directory -lcblas When I compiled with this command line, it works for my configuration. Blas and Cblas can be downloaded in netlib.org, they can be compiled with gfortran. If you want to use Blas/Cblas functions contained in the MKL, you have to type : g++ -I../.. -DSELDON_WITH_SUPERLU direct_test.cpp -I/Users/jonas/Dropbox/cpp/libraries/SuperLU_4.3/SRC -L/usr/local/lib -lsuperlu -L/opt/intel/mkl/lib/ia32 -lmkl_gf -lmkl_gnu_thread -lmkl_core -fopenmp In that case, you use the multi-threaded MKL library, so it should run faster if your machine has many cores. If you have still problems, you can report them. Best regards. |
|
From: Jonás A. <jon...@gm...> - 2014-03-28 16:02:41
|
Hello,
I am trying to use Seldon to solve a linear system with sparse
matrices using SUPERLU.
I installed SUPERLU successfully (following
http://www.math.u-bordeaux1.fr/~durufle/seldon/direct.php), but when I
tried to compile the example direct_test.cpp from the command line using:
*g++ -I../.. -DSELDON_WITH_SUPERLU direct_test.cpp
-I/Users/jonas/Dropbox/cpp/libraries/SuperLU_4.3/SRC -L/usr/local/lib
-lsuperlu*
I obtain the error described below. I was wondering if there is a
solution to this problem.
Best wishes,
Jonas
ERROR:
Undefined symbols for architecture x86_64:
"_cblas_dnrm2", referenced from:
double Seldon::Norm2<Seldon::MallocAlloc<double>
>(Seldon::Vector<double, Seldon::VectFull, Seldon::MallocAlloc<double> >
const&) in ccUKfsup.o
"_cblas_drotg", referenced from:
Seldon::GenRot(double&, double&, double&, double&) in ccUKfsup.o
"_cblas_drotmg", referenced from:
Seldon::GenModifRot(double&, double&, double&, double const&,
double*) in ccUKfsup.o
"_cblas_dscal", referenced from:
void Seldon::Mlt<Seldon::MallocAlloc<double> >(double,
Seldon::Vector<double, Seldon::VectFull, Seldon::MallocAlloc<double> >&) in
ccUKfsup.o
"_cblas_dznrm2", referenced from:
double Seldon::Norm2<Seldon::MallocAlloc<std::complex<double> >
>(Seldon::Vector<std::complex<double>, Seldon::VectFull,
Seldon::MallocAlloc<std::complex<double> > > const&) in ccUKfsup.o
"_cblas_srotg", referenced from:
Seldon::GenRot(float&, float&, float&, float&) in ccUKfsup.o
"_cblas_srotmg", referenced from:
Seldon::GenModifRot(float&, float&, float&, float const&, float*) in
ccUKfsup.o
"_cblas_zscal", referenced from:
void Seldon::Mlt<Seldon::MallocAlloc<std::complex<double> >
>(std::complex<double>, Seldon::Vector<std::complex<double>,
Seldon::VectFull, Seldon::MallocAlloc<std::complex<double> > >&) in
ccUKfsup.o
"_dgemm_", referenced from:
_dgstrs in libsuperlu.a(dgstrs.o)
"_dgemv_", referenced from:
_dcolumn_bmod in libsuperlu.a(dcolumn_bmod.o)
_dpanel_bmod in libsuperlu.a(dpanel_bmod.o)
_dsnode_bmod in libsuperlu.a(dsnode_bmod.o)
_sp_dtrsv in libsuperlu.a(dsp_blas2.o)
"_dtrsm_", referenced from:
_dgstrs in libsuperlu.a(dgstrs.o)
"_dtrsv_", referenced from:
_dcolumn_bmod in libsuperlu.a(dcolumn_bmod.o)
_dpanel_bmod in libsuperlu.a(dpanel_bmod.o)
_dsnode_bmod in libsuperlu.a(dsnode_bmod.o)
_sp_dtrsv in libsuperlu.a(dsp_blas2.o)
"_zgemm_", referenced from:
_zgstrs in libsuperlu.a(zgstrs.o)
"_zgemv_", referenced from:
_sp_ztrsv in libsuperlu.a(zsp_blas2.o)
_zcolumn_bmod in libsuperlu.a(zcolumn_bmod.o)
_zpanel_bmod in libsuperlu.a(zpanel_bmod.o)
_zsnode_bmod in libsuperlu.a(zsnode_bmod.o)
"_ztrsm_", referenced from:
_zgstrs in libsuperlu.a(zgstrs.o)
"_ztrsv_", referenced from:
_sp_ztrsv in libsuperlu.a(zsp_blas2.o)
_zcolumn_bmod in libsuperlu.a(zcolumn_bmod.o)
_zpanel_bmod in libsuperlu.a(zpanel_bmod.o)
_zsnode_bmod in libsuperlu.a(zsnode_bmod.o)
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
|
|
From: Marc D. <mar...@in...> - 2014-03-17 21:21:47
|
Hi, you can set the stopping criterion in the iteration object. The classical way is to use the constructor : Iteration<double> iter(nb_max_iteration, 1e-19); BiCgStab(A, x, b, precond, iter); You can also set this field later if you prefer : Iteration<double> iter; iter.SetTolerance(1e-19); BiCgStab(A, x, b, precond, iter); The default value is 1e-6 as you noticed it. If you are using a double precision accuracy, the algorithm should not converge below 1e-14/1e-15, so 1e-19 is rather a stopping criterion appropriate for higher precision, such as quadruple precision. Concerning, the parallelization issue, the BiCgStab algorithm implemented is implemented in sequential, no optimization has been applied on the algorithm, the code is easily readable in file computation/solver/iterative/BiCgStab.cxx. However, I already used this sequential solver in parallel by using MPI interface. This kind of procedure can be achieved by providing distributed vectors (for A, x and b) and distributed matrices instead of sequential vectors/matrices. When I provide distributed vectors and matrices, the functions Mlt (for the matrix vector product), DotProd, DotProdConj and Norm2 (for scalar products) are overloaded for these structures such that the BiCgStab runs successfully in parallel. I don't know why you obtain a good performance with the implementation of BiCgStab provided in Seldon. It might be explained by the use of MKL functions to compute matrix-vector products, sums of vectors and scalar products. As you can notice, the algorithm is written by using functions Add, DotProd, Mlt, etc. For dense matrices and vectors these functions are calling BLAS subroutines, and when these routines are provided by the MKL library (mutli-threaded library), the BiCgStab will benefit from the muli-threaded implementation of MKL. In my opinion, you should check the state of threads when launching your own solver and Seldon solver, to see how they exploit the cores of the machine. It is also possible that your own solver does launch threads on the same core, thus decreases drastically the efficiency instead of increasing it. Good luck, best regards. |
|
From: Samar V. <sam...@st...> - 2014-03-10 11:57:56
|
Dear Sir/Madam, I use the Seldon BiCgStab iterative solver in my code and I got very good performance compare to the same iterative solver coded by myself. I implement OpenMP API and SSE registers to speed up the solver, but your solver is still much more faster than mine. I would like to ask you how you perform these computations to get high performance? Have you done any parallelization or vectorization? In addition, in your case, the solver converges for the tolerance of 1e-6, but in my case to have the convergence I need to set the tolerance equal to 1e-19 and I don't know where the difference comes from when both solvers do the same computations? I couldn't find any information related to this issue in your site. It would be very grateful for me if you can help me in this ay. Thank you in advance and look forward to hearing from you. Samar |
|
From: Marc D. <mar...@in...> - 2014-02-24 08:53:47
|
Hi,
the syntax for user defined precondioning is present in the file computation/solver/iterative/Iterative.hxx :
//! Base class for preconditioners
class Preconditioner_Base
{
public :
Preconditioner_Base();
// solving M z = r
template<class Matrix1, class Vector1>
void Solve(const Matrix1& A, const Vector1 & r, Vector1 & z);
// solving M^t z = r
template<class Matrix1, class Vector1>
void TransSolve(const Matrix1& A, const Vector1& r, Vector1 & z);
};
Here the class Preconditioner_Base is the identity preconditioning, it merely does z = r for both functions. For your own preconditioning,
you can write for example :
class MyPreconditioning
{
public :
// solving M z = r
template<class Matrix1, class Vector1>
void Solve(const Matrix1& A, const Vector1 & r, Vector1 & z)
{
// you apply the preconditiong to vector r, the result vector is z
// the matrix A is given in the case where you need this matrix in order to apply the preconditioning
}
// solving M^t z = r
template<class Matrix1, class Vector1>
void TransSolve(const Matrix1& A, const Vector1& r, Vector1 & z)
{
// you apply the transpose of the preconditioning to vector r, the result vector is z
}
};
For the transpose preconditioning, it is needed for algorithms involving the transpose matrix (e.g. BiCg, Qmr). There are other algorithms that
don't need the transpose matrix, they don't need the transpose preconditioning as a result (e.g. Gmres, TfQmr). Once your preconditioning is implemented, it is used as follows:
Iterator<double> iter; // class storing the stopping criteria
Matrix<double> A; // linear system to solve
Vector<double> x, b; // solution and right hand side
MyPreconditioning prec;
// to see the residual at each iteration :
iter.ShowFullHistory();
// then you launch an iterative algorithm, for example the conjugate gradient
Cg(A, x, b, prec, iter);
// x should contain the solution
|
|
From: Yaniel <ya...@ie...> - 2014-02-21 08:15:12
|
Dear Seldon group, I am a PhD student from the University of Hong Kong. I appreciate the Seldon C++ library for linear algebra, which I'm using in my research. Here I want to ask you about the preconditioner for the iterative solver. SOR preconditioner is now available in this package. However, a user defined preconditioner is of great demand somehow. I tried to add my preconditioner in the same way as SOR preconditioner, but it is not so clear right now. Could you tell me how to achieve this? BRs, Yanlin Li |
|
From: Marc D. <mar...@in...> - 2014-01-29 10:13:34
|
Hi, 1- By default, the iterative solvers set x to zero before starting the iterative algorithm. If you want to provide an initial guess, you can do that : int nb_max_iteration = 100; double epsilon = 1e-6; Iteration<double> iter(nb_max_iteration, epsilon); // this is the most important line here // with this line iterative solves won't set the initial guess to 0, they will keep it as provided by the user iter.SetInitGuess(false); // then you can call your iterative solver, e.g. BiCgStab BiCgStab(A, x, b, prec, iter); 2- For the segmentation fault appearing in ILUT, I suggest you to recompile in the debug mode (with -DSELDON_DEBUG_LEVEL_4 in the compilation line), and run the code with gdb such that you will see when the problem occurs and how to fix it. Best regards. |
|
From: Vivien M. <de...@vi...> - 2014-01-29 01:53:19
|
Hello, Wolfram Ruehaak <w.r...@gm...> writes: > just a quick question: is seldon supporting parallel computations? I.e. > using open mp, mpi or simple multi-threading? Indirectly as Seldon relies on third-party libraries for parallel computing (Pastix, MUMPS, PETSc). Best regards, Vivien Mallet. |
|
From: Vivien M. <Viv...@in...> - 2014-01-29 01:48:30
|
Hello, Dragos Anastasiu <dra...@ya...> writes: > I am looking to build a Data Mining/Machine Learning library and, for now, use > a pre-existing C++ Linear Algebra library. I've been scouring the Net for a > while and have come across Seldon, and a few of its competitors, notably > Flens, Armadillo, and Eigen. I was wondering if you are aware of any recent > Benchmarks using data of diverse sizes between Seldon and any of these other > libraries. Yes, there is this study that was conducted for the data assimilation library Verdandi [1]: http://verdandi.gforge.inria.fr/doc/linear_algebra_libraries.pdf Best regards, Vivien Mallet. [1] http://verdandi.gforge.inria.fr/ |
|
From: Dragos A. <dra...@ya...> - 2014-01-28 15:35:18
|
Hi, I am looking to build a Data Mining/Machine Learning library and, for now, use a pre-existing C++ Linear Algebra library. I've been scouring the Net for a while and have come across Seldon, and a few of its competitors, notably Flens, Armadillo, and Eigen. I was wondering if you are aware of any recent Benchmarks using data of diverse sizes between Seldon and any of these other libraries. Thanks, David |
|
From: Wolfram R. <w.r...@gm...> - 2014-01-17 22:32:59
|
Dear all just a quick question: is seldon supporting parallel computations? I.e. using open mp, mpi or simple multi-threading? Kind regards Wolfram |
|
From: Mohammad E. <elm...@gm...> - 2014-01-12 13:14:26
|
Hello, I am using Seldon with BiCgStab. I had some questions: 1. How can I set an initial guess? Whatever I set x vector, Seldon solves the system in a constant number of iterations. 2. When I set an ILUT preconditioner for the solver, I get a Segmentation Fault error. Thank you, Elmi |
|
From: Mohammad E. <elm...@gm...> - 2014-01-12 12:49:37
|
Hello, I am using Seldon with BiCgStab. I had some questions: 1. How can I set an initial guess? Whatever I set x vector, Seldon solves the system in a constant number of iterations. 2. When I set an ILUT preconditioner for the solver, I get a Segmentation Fault error. Thank you, Elmi |
|
From: Vivien M. <Viv...@in...> - 2013-02-18 21:37:49
|
Hello,
Diego Gallardo <gal...@gm...> writes:
> I came across Seldon only very recently and decided to give it a go. I'm
> trying to compile one of your examples, "iterative_test.cpp", in MSVC Express
> 2010.
>
> Unfortunately the compiler spits out a lot of error messages, all of them
> related to templates. I will focus on one of them, for the sake of argument.
> The error message happens in "gmres.cxx", and says:
>
> 1>d:\seldon\seldon-5.1.2\computation\solver\iterative\gmres.cxx(174): error
> C2784: 'void Seldon::Solve(Seldon::Matrix<T,Prop,Seldon::RowSparse,Allocator>
> &,Seldon::Vector<T,Seldon::VectFull,Allocator1> &)' : could not deduce
> template argument for 'Seldon::Matrix<T,Prop,Seldon::RowSparse,Allocator> &'
> from 'Seldon::Matrix<T,Prop,Storage>'
> 1> with
> 1> [
> 1> T=Complexe,
> 1> Prop=Seldon::General,
> 1> Storage=Seldon::ColUpTriang
> 1> ]
> 1>
> d:\seldon\seldon-5.1.2\computation\interfaces\direct\sparsesolver.hxx(39) :
> see declaration of 'Seldon::Solve'
> 1> c:\users\dg1\documents\visual studio
> 2010\projects\bemgen\bemgen\main.cpp(202) : see reference to function template
> instantiation 'int
> Seldon::Gmres<double,BlackBoxMatrix<T>,Seldon::DVect,Seldon::Preconditioner_Base>
> (MatrixSparse &,Vector1 &,const Vector1 &,Preconditioner
> &,Seldon::Iteration<Titer> &)' being compiled
> 1> with
> 1> [
> 1> T=double,
> 1> MatrixSparse=BlackBoxMatrix<double>,
> 1> Vector1=Seldon::DVect,
> 1> Preconditioner=Seldon::Preconditioner_Base,
> 1> Titer=double
> 1> ]
>
> The line in question is:
>
> Solve(H, s);
>
> Now, H is defined as:
>
> Matrix<Complexe, General, ColUpTriang> H(m+1,m+1);
>
> But for some reason the compiler seems to be trying to use
>
> Seldon::Matrix<T,Prop,Seldon::RowSparse,Allocator>
>
> instead of
> Seldon::Matrix<T,Prop,Seldon::ColUpTriang,Allocator>
>
> I cannot make it work. The rest of the error messages are similar, involving a
> confussion between RowSparse/ColSparse and ColUpTriang. Any suggestions?
I cannot reproduce the problem. You refer to "iterative_test.cpp", but
the errors seem to refer to another file ("bemgen\main.cpp") and to a
line that is not in "iterative_test.cpp" ("Solve(H, s)"). Could you send
a minimal program that does not compile?
Thank you,
Vivien Mallet.
|
|
From: Diego G. <gal...@gm...> - 2013-02-12 10:12:54
|
Dear Seldon development team,
I'm not sure if there's anybony supporting this library anymore, but have
decided to drop you an email just in case.
I came across Seldon only very recently and decided to give it a go. I'm
trying to compile one of your examples, "iterative_test.cpp", in MSVC
Express 2010.
Unfortunately the compiler spits out a lot of error messages, all of them
related to templates. I will focus on one of them, for the sake of
argument. The error message happens in "gmres.cxx", and says:
1>d:\seldon\seldon-5.1.2\computation\solver\iterative\gmres.cxx(174): error
C2784: 'void
Seldon::Solve(Seldon::Matrix<T,Prop,Seldon::RowSparse,Allocator>
&,Seldon::Vector<T,Seldon::VectFull,Allocator1> &)' : could not deduce
template argument for 'Seldon::Matrix<T,Prop,Seldon::RowSparse,Allocator>
&' from 'Seldon::Matrix<T,Prop,Storage>'
1> with
1> [
1> T=Complexe,
1> Prop=Seldon::General,
1> Storage=Seldon::ColUpTriang
1> ]
1>
d:\seldon\seldon-5.1.2\computation\interfaces\direct\sparsesolver.hxx(39) :
see declaration of 'Seldon::Solve'
1> c:\users\dg1\documents\visual studio
2010\projects\bemgen\bemgen\main.cpp(202) : see reference to function
template instantiation 'int
Seldon::Gmres<double,BlackBoxMatrix<T>,Seldon::DVect,Seldon::Preconditioner_Base>(MatrixSparse
&,Vector1 &,const Vector1 &,Preconditioner &,Seldon::Iteration<Titer> &)'
being compiled
1> with
1> [
1> T=double,
1> MatrixSparse=BlackBoxMatrix<double>,
1> Vector1=Seldon::DVect,
1> Preconditioner=Seldon::Preconditioner_Base,
1> Titer=double
1> ]
The line in question is:
Solve(H, s);
Now, H is defined as:
Matrix<Complexe, General, ColUpTriang> H(m+1,m+1);
But for some reason the compiler seems to be trying to use
Seldon::Matrix<T,Prop,Seldon::RowSparse,Allocator>
instead of
Seldon::Matrix<T,Prop,Seldon::ColUpTriang,Allocator>
I cannot make it work. The rest of the error messages are similar,
involving a confussion between RowSparse/ColSparse and ColUpTriang. Any
suggestions?
Regards
Diego
|