00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef EPETRAEXT_MULTIMPICOMM_H
00032 #define EPETRAEXT_MULTIMPICOMM_H
00033
00034 #include "EpetraExt_ConfigDefs.h"
00035 #include "Epetra_MpiComm.h"
00036
00041
00051 namespace EpetraExt {
00052
00053 class MultiMpiComm: public Epetra_MpiComm {
00054 public:
00055
00057
00058
00067 MultiMpiComm(MPI_Comm globalComm, int subDomainProcs, int numTimeSteps_=-1);
00068
00070 MultiMpiComm( const MultiMpiComm &MMC );
00071
00073 virtual ~MultiMpiComm();
00075
00077 Epetra_MpiComm& SubDomainComm() const {return *subComm;}
00078
00080 int NumSubDomains() const {return numSubDomains;}
00081
00083 int SubDomainRank() const {return subDomainRank;}
00084
00086 int NumTimeStepsOnDomain() const {return numTimeStepsOnDomain;}
00087 int FirstTimeStepOnDomain() const {return firstTimeStepOnDomain;}
00088
00090 int NumTimeSteps() const {return numTimeSteps;}
00091
00092 protected:
00093
00094 Epetra_MpiComm* subComm;
00095 int numSubDomains;
00096 int subDomainRank;
00097 const int numTimeSteps;
00098 int numTimeStepsOnDomain;
00099 int firstTimeStepOnDomain;
00100
00101 };
00102
00103 }
00104
00105 #endif