[Trilinos-Users] Two compilation problems with MultiLevelPreconditioner

Ernesto Prudencio prudenci at slac.stanford.edu
Thu Nov 29 09:50:36 MST 2007


Thanks, Jim.

In which Makefile should I use it: in some package Makefile or in the 
Makefile compiling my application?

Ernesto.

On Thu, 29 Nov 2007, James Willenbring wrote:

> Ernesto,
>
> Did you use -DHAVE_CONFIG_H?  It looks like you might not have.  We are
> currently looking at lifting the requirement of defining HAVE_CONFIG_H,
> but for now, that may help you avoid these problems.
>
> Jim
>
> On Wed, 2007-11-28 at 21:58 -0800, Ernesto Prudencio wrote:
>> 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.
>>
>>
>>
>> _______________________________________________
>> Trilinos-Users mailing list
>> Trilinos-Users at software.sandia.gov
>> http://software.sandia.gov/mailman/listinfo/trilinos-users
>
>



More information about the Trilinos-Users mailing list