[Trilinos-Users] Two compilation problems with
MultiLevelPreconditioner
Ernesto Prudencio
prudenci at slac.stanford.edu
Wed Nov 28 22:58:37 MST 2007
Hi. In a include file of mine, called trilinos.hpp, I have:
// BEGIN FILE trilinos.hpp
#include <Epetra_MpiComm.h>
#include <Epetra_Map.h>
#include <Epetra_Vector.h>
#include <Epetra_CrsMatrix.h>
#include <AztecOO.h> // line 14
#include <ml_include.h>
#include <ml_MultiLevelOperator.h>
#include <Teuchos_ParameterList.hpp> // line 17
#include <ml_MultiLevelPreconditioner.h>
#include <ml_epetra_utils.h>
...
class trilinos {
...
private:
Epetra_MpiComm* m_commForTrilinos;
Epetra_Map* m_mapForTrilinos;
Epetra_CrsMatrix* m_matrixForTrilinos;
Epetra_LinearProblem* m_problemForTrilinos;
AztecOO* m_solverForTrilinos;
Epetra_Vector* m_rhsForTrilinos;
Epetra_Vector* m_dofsForTrilinos;
ML* m_mlHandle;
ML_Aggregate* m_mlAggObject;
ML_Epetra::MultiLevelOperator* m_mlOperator;
Teuchos::ParameterList* m_mlList;
ML_Epetra::MultiLevelPreconditioner* m_mlPreconditioner; // line 66
int m_nLevels;
...
}
// END FILE trilinos.hpp
--> Compilation problem 1: duplicated defines
In file included from <installation>/include/Teuchos_ConfigDefs.hpp:77,
from <installation>/include/Teuchos_ParameterListExceptions.hpp:33,
from <installation>/include/Teuchos_ParameterList.hpp:37,
from trilinos.hpp:17,
from NML_ITLLinearSolver.C:13:
<installation>/include/Teuchos_config.h:14:1: warning: "F77_FUNC" redefined
In file included from <installation>/include/az_aztec.h:61,
from <installation>/include/AztecOO.h:44,
from trilinos.hpp:14,
from NML_ITLLinearSolver.C:13:
<installation>/include/az_f77func.h:99:1: warning: this is the location of
the previous definition
In file included from <installation>/include/Teuchos_ConfigDefs.hpp:77,
from <installation>/include/Teuchos_ParameterListExceptions.hpp:33,
from <installation>/include/Teuchos_ParameterList.hpp:37,
from trilinos.hpp:17,
from NML_ITLLinearSolver.C:13:
<installation>/include/Teuchos_config.h:19:1: warning: "F77_FUNC_" redefined
In file included from <installation>/include/az_aztec.h:61,
from <installation>/include/AztecOO.h:44,
from trilinos.hpp:14,
from NML_ITLLinearSolver.C:13:
<installation>/include/az_f77func.h:103:1: warning: this is the location
of the previous definition
--> How I "solved" compilation problem 1: put ifndef-endif pair around
both defines in Teuchos_config.h
--> Compilation problem 2:
trilinos.hpp:66: error: ISO C++ forbids declaration of
'MultiLevelPreconditioner' with no type
trilinos.hpp:66: error: invalid use of '::'
trilinos.hpp:66: error: expected ';' before '*' token
--> How I "solved" compilation problem 2: included ml_config.h in
<installation>/include/ml_MultiLevelPreconditioner.h, so that "#if
defined(HAVE_ML_EPETRA) && defined(HAVE_ML_TEUCHOS)" would work properly.
However, such correction caused extra redefinition problems like in
problem 1, "solved" again with ifndef-endif pairs.
--> Once the compilation problems were solved, linking phase worked with
libraries "-laztecoo -lml -lifpack -lepetra -lteuchos -lepetraext". And
the executable worked properly as well.
///////////////// Question ////////////////////
--> Any ideas if this is a problem of the library or a problem of my
specific installation?
My script for configuration reads like this:
export CC=/usr/bin/mpicc
export CXX=/usr/bin/mpiCC
./configure --prefix=$HOME/Desktop/trilinos-8.0.3/installation
--enable-mpi --enable-epetra -enable-teuchos --enable-aztecoo --enable-ml
--enable-didasko
Thanks in advance,
Ernesto.
More information about the Trilinos-Users
mailing list