[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