12 #ifdef HAVE_TPETRACORE_MPI
13 #include "Teuchos_DefaultMpiComm.hpp"
14 #include "Teuchos_DefaultSerialComm.hpp"
16 #endif // HAVE_TPETRACORE_MPI
21 #ifdef HAVE_TPETRACORE_MPI
23 extractMpiCommFromTeuchos(
const Teuchos::Comm<int>& comm) {
24 using ::Teuchos::MpiComm;
25 using ::Teuchos::SerialComm;
27 const MpiComm<int>* mpiComm =
dynamic_cast<const MpiComm<int>*
>(&comm);
28 if (mpiComm != NULL) {
29 MPI_Comm rawComm = *(mpiComm->getRawMpiComm());
32 const SerialComm<int>* serialComm =
33 dynamic_cast<const SerialComm<int>*
>(&comm);
34 if (serialComm != NULL) {
37 throw std::invalid_argument(
38 "Tpetra::Details::extractMpiCommFromTeuchos: "
39 "Input Teuchos::Comm is "
40 "neither a Teuchos::MpiComm, "
41 "nor a Teuchos::SerialComm. "
42 "As a result, I don't know "
43 "how to get the MPI_Comm out of it.");
47 #endif // HAVE_TPETRACORE_MPI
49 #ifdef HAVE_TPETRACORE_MPI
51 const Teuchos::MpiComm<int>* mpiComm =
52 dynamic_cast<const Teuchos::MpiComm<int>*
>(&comm);
53 return mpiComm !=
nullptr;
59 #endif // HAVE_TPETRACORE_MPI
bool teuchosCommIsAnMpiComm(const Teuchos::Comm< int > &)
Is the given Comm a Teuchos::MpiComm<int> instance?