Amesos_Mumps.cpp does not build when MPI is disabled
Created by: bavier
Configuring with cmake 3.3.2 at master@e9a607a with
$ mkdir build && cd build
$ cmake \
-DTrilinos_ENABLE_Amesos:BOOL=ON \
-DTPL_ENABLE_MUMPS:BOOL=ON \
..
then running make
produces the following error:
/ptmp/trilinos-12.6.1-rc/packages/amesos/src/Amesos_Mumps.cpp: In member function 'virtual int Amesos_Mumps::SymbolicFactorization()':
/ptmp/trilinos-12.6.1-rc/packages/amesos/src/Amesos_Mumps.cpp:478:9: error: 'Epetra_MpiComm' does not name a type
const Epetra_MpiComm* MpiComm = dynamic_cast<const Epetra_MpiComm*>(&Comm());
^
In file included from /gnu/store/gma0ig9v61y7c1rhvaj7qx1ga86wnjs7-gfortran-4.9.3/include/c++/cassert:43:0,
from /ptmp/trilinos-12.6.1-rc/packages/teuchos/core/src/Teuchos_ConfigDefs.hpp:93,
from /ptmp/trilinos-12.6.1-rc/packages/teuchos/core/src/Teuchos_RCPNode.hpp:52,
from /ptmp/trilinos-12.6.1-rc/packages/teuchos/core/src/Teuchos_RCPDecl.hpp:51,
from /ptmp/trilinos-12.6.1-rc/packages/teuchos/core/src/Teuchos_RCP.hpp:58,
from /ptmp/trilinos-12.6.1-rc/packages/amesos/src/Amesos_BaseSolver.h:48,
from /ptmp/trilinos-12.6.1-rc/packages/amesos/src/Amesos_Mumps.h:44,
from /ptmp/trilinos-12.6.1-rc/packages/amesos/src/Amesos_Mumps.cpp:29:
/ptmp/trilinos-12.6.1-rc/packages/amesos/src/Amesos_Mumps.cpp:479:11: error: 'MpiComm' was not declared in this scope
assert (MpiComm != 0);
^
/ptmp/trilinos-12.6.1-rc/packages/amesos/src/Amesos_Mumps.cpp:480:68: error: 'MPI_Comm_c2f' was not declared in this scope
MDS.comm_fortran = (MUMPS_INT) MPI_Comm_c2f(MpiComm->GetMpiComm());
^
I would expect configuration to fail, rather than the build to fail, if Amesos_Mumps is not supported when MPI is disabled. On the other hand, MUMPS supports seriail execution, so perhaps it would be best to check for MUMPS's libmpiseq during configuration if TPL_ENABLE_MPI:BOOL=OFF and then adjust Amesos_Mumps accordingly.