43 #ifndef DOMI_MDCOMM_HPP
44 #define DOMI_MDCOMM_HPP
47 #include "Teuchos_Comm.hpp"
48 #include "Teuchos_Array.hpp"
49 #include "Teuchos_ArrayView.hpp"
50 #include "Teuchos_ParameterList.hpp"
53 #include "Domi_ConfigDefs.hpp"
58 #include "Epetra_MpiComm.h"
60 #include "Epetra_SerialComm.h"
115 typedef Teuchos::Array< int >::size_type size_type;
122 static const Layout commLayout;
145 MDComm(
const Teuchos::ArrayView< const int > & commDims,
146 const Teuchos::ArrayView< const int > & periodic =
147 Teuchos::ArrayView< const int >());
165 MDComm(
const Teuchos::RCP<
const Teuchos::Comm< int > > teuchosComm,
166 const Teuchos::ArrayView< const int > & commDims,
167 const Teuchos::ArrayView< const int > & periodic =
168 Teuchos::ArrayView< const int >());
181 MDComm(Teuchos::ParameterList & plist);
194 MDComm(
const Teuchos::RCP<
const Teuchos::Comm< int > > teuchosComm,
195 Teuchos::ParameterList & plist);
217 MDComm(
const Teuchos::RCP<
const Teuchos::Comm< int > > teuchosComm,
242 const Teuchos::ArrayView< const int > & commDims,
243 const Teuchos::ArrayView< const int > & periodic =
244 Teuchos::ArrayView< const int >());
267 MDComm(
const Teuchos::RCP<
const Teuchos::Comm< int > > teuchosComm,
269 const Teuchos::ArrayView< const int > & commDims,
270 const Teuchos::ArrayView< const int > & periodic =
271 Teuchos::ArrayView< const int >());
302 const Slice & slice);
313 const Teuchos::ArrayView< Slice > & slices);
350 Teuchos::RCP< const Teuchos::Comm< int > >
getTeuchosComm()
const;
359 Teuchos::RCP< const Epetra_Comm > getEpetraComm()
const;
460 Teuchos::ArrayView< Teuchos::RCP< const MDComm > >
getAxisComms()
const;
471 Teuchos::RCP< const MDComm >
getAxisComm(
int axis)
const;
483 Teuchos::RCP< const Teuchos::Comm< int > > _teuchosComm;
488 mutable Teuchos::RCP< const Epetra_Comm > _epetraComm;
492 Teuchos::Array< int > _commDims;
495 Teuchos::Array< int > _commStrides;
498 Teuchos::Array< int > _commIndex;
501 Teuchos::Array< int > _periodic;
508 mutable Teuchos::Array< Teuchos::RCP< const MDComm > > _axisComms;