42 #ifndef EPETRAEXT_MULTISERIALCOMM_H 
   43 #define EPETRAEXT_MULTISERIALCOMM_H 
   47 #include "Epetra_SerialComm.h"  
   48 #include "Teuchos_RCP.hpp" 
  120   virtual int Broadcast(
double * MyVals, 
int Count, 
int Root)
 const 
  121           { 
return myComm->Broadcast( MyVals, Count, Root); };
 
  122   virtual int Broadcast(
int * MyVals, 
int Count, 
int Root)
 const 
  123           { 
return myComm->Broadcast( MyVals, Count, Root); };
 
  124   virtual int Broadcast(
long * MyVals, 
int Count, 
int Root)
 const 
  125           { 
return myComm->Broadcast( MyVals, Count, Root); };
 
  126   virtual int Broadcast(
long long * MyVals, 
int Count, 
int Root)
 const 
  127           { 
return myComm->Broadcast( MyVals, Count, Root); };
 
  128   virtual int Broadcast(
char * MyVals, 
int Count, 
int Root)
 const 
  129           { 
return myComm->Broadcast( MyVals, Count, Root); };
 
  130   virtual int GatherAll(
double * MyVals, 
double * AllVals, 
int Count)
 const 
  131           { 
return myComm->GatherAll( MyVals,  AllVals, Count); };
 
  132   virtual int GatherAll(
int * MyVals, 
int * AllVals, 
int Count)
 const 
  133           { 
return myComm->GatherAll( MyVals, AllVals, Count); };
 
  134   virtual int GatherAll(
long * MyVals, 
long * AllVals, 
int Count)
 const 
  135           { 
return myComm->GatherAll( MyVals,  AllVals, Count); };
 
  136   virtual int GatherAll(
long long* MyVals, 
long long* AllVals, 
int Count)
 const 
  137           { 
return myComm->GatherAll( MyVals,  AllVals, Count); };
 
  138   virtual int SumAll(
double * PartialSums, 
double * GlobalSums, 
int Count)
 const 
  139           { 
return myComm->SumAll( PartialSums,  GlobalSums, Count); };
 
  140   virtual int SumAll(
int * PartialSums, 
int * GlobalSums, 
int Count)
 const 
  141           { 
return myComm->SumAll( PartialSums,  GlobalSums, Count); };
 
  142   virtual int SumAll(
long * PartialSums, 
long * GlobalSums, 
int Count)
 const 
  143           { 
return myComm->SumAll( PartialSums,  GlobalSums, Count); };
 
  144   virtual int SumAll(
long long* PartialSums, 
long long* GlobalSums, 
int Count)
 const 
  145           { 
return myComm->SumAll( PartialSums,  GlobalSums, Count); };
 
  146   virtual int MaxAll(
double * PartialMaxs, 
double * GlobalMaxs, 
int Count)
 const 
  147           { 
return myComm->MaxAll( PartialMaxs,  GlobalMaxs, Count); };
 
  148   virtual int MaxAll(
int * PartialMaxs, 
int * GlobalMaxs, 
int Count)
 const 
  149           { 
return myComm->MaxAll( PartialMaxs,  GlobalMaxs, Count); };
 
  150   virtual int MaxAll(
long * PartialMaxs, 
long * GlobalMaxs, 
int Count)
 const 
  151           { 
return myComm->MaxAll( PartialMaxs, GlobalMaxs, Count); };
 
  152   virtual int MaxAll(
long long* PartialMaxs, 
long long* GlobalMaxs, 
int Count)
 const 
  153           { 
return myComm->MaxAll( PartialMaxs,  GlobalMaxs, Count); };
 
  154   virtual int MinAll(
double * PartialMins, 
double * GlobalMins, 
int Count)
 const 
  155           { 
return myComm->MinAll( PartialMins, GlobalMins, Count); };
 
  156   virtual int MinAll(
int * PartialMins, 
int * GlobalMins, 
int Count)
 const 
  157           { 
return myComm->MinAll( PartialMins, GlobalMins, Count); };
 
  158   virtual int MinAll(
long * PartialMins, 
long * GlobalMins, 
int Count)
const 
  159           { 
return myComm->MinAll( PartialMins, GlobalMins, Count); };
 
  160   virtual int MinAll(
long long* PartialMins, 
long long* GlobalMins, 
int Count)
 const 
  161           { 
return myComm->MinAll( PartialMins, GlobalMins, Count); };
 
  162   virtual int ScanSum(
double * MyVals, 
double * ScanSums, 
int Count)
const 
  163           { 
return myComm->ScanSum( MyVals,  ScanSums, Count); };
 
  164   virtual int ScanSum(
int * MyVals, 
int * ScanSums, 
int Count)
 const 
  165           { 
return myComm->ScanSum(MyVals, ScanSums, Count); };
 
  166   virtual int ScanSum(
long * MyVals, 
long * ScanSums, 
int Count)
 const 
  167           { 
return myComm->ScanSum(MyVals, ScanSums, Count); };
 
  168   virtual int ScanSum(
long long* MyVals, 
long long* ScanSums, 
int Count)
 const 
  169           { 
return myComm->ScanSum(MyVals, ScanSums, Count); };
 
  174           { 
return myComm->CreateDirectory(Map); };
 
  179   Teuchos::RCP<Epetra_Comm> 
myComm;
 
virtual int ScanSum(int *MyVals, int *ScanSums, int Count) const 
 
virtual int MinAll(long *PartialMins, long *GlobalMins, int Count) const 
 
virtual int SumAll(long long *PartialSums, long long *GlobalSums, int Count) const 
 
virtual int Broadcast(long *MyVals, int Count, int Root) const 
 
virtual Epetra_Comm & SubDomainComm() const 
Get reference to split Communicator for sub-domain. 
 
virtual int MinAll(double *PartialMins, double *GlobalMins, int Count) const 
 
virtual int NumProc() const 
 
virtual int GatherAll(long *MyVals, long *AllVals, int Count) const 
 
virtual int Broadcast(double *MyVals, int Count, int Root) const 
 
virtual int NumTimeStepsOnDomain() const 
Return number of time steps, first step number, on time domain. 
 
virtual Epetra_Distributor * CreateDistributor() const 
 
virtual int GatherAll(int *MyVals, int *AllVals, int Count) const 
 
virtual int FirstTimeStepOnDomain() const 
 
virtual int ScanSum(double *MyVals, double *ScanSums, int Count) const 
 
virtual Epetra_Directory * CreateDirectory(const Epetra_BlockMap &Map) const 
 
virtual int GatherAll(long long *MyVals, long long *AllVals, int Count) const 
 
virtual int MaxAll(long *PartialMaxs, long *GlobalMaxs, int Count) const 
 
virtual int MyPID() const 
 
virtual int NumTimeSteps() const 
Return total number of time steps. 
 
MultiSerialComm(int numTimeSteps_=-1)
MultiSerialComm constuctor. 
 
virtual int SubDomainRank() const 
Return integer [0:numSubDomains-1} corresponding to this sub-domain's rank. 
 
virtual int SumAll(int *PartialSums, int *GlobalSums, int Count) const 
 
Teuchos::RCP< Epetra_Comm > myComm
 
virtual int MaxAll(int *PartialMaxs, int *GlobalMaxs, int Count) const 
 
void ResetNumTimeSteps(int numTimeSteps)
Reset total number of time steps, allowing time steps per domain to. 
 
virtual int Broadcast(long long *MyVals, int Count, int Root) const 
 
virtual ~MultiSerialComm()
Destructor. 
 
virtual int Broadcast(char *MyVals, int Count, int Root) const 
 
virtual int ScanSum(long *MyVals, long *ScanSums, int Count) const 
 
virtual Epetra_Comm & TimeDomainComm() const 
Get reference to split Communicator for time domain. 
 
virtual int MinAll(long long *PartialMins, long long *GlobalMins, int Count) const 
 
virtual int MinAll(int *PartialMins, int *GlobalMins, int Count) const 
 
virtual void Barrier() const 
 
virtual int SumAll(double *PartialSums, double *GlobalSums, int Count) const 
 
virtual int TimeDomainRank() const 
Return integer [0:numTimeDomains-1} corresponding to this time-domain's rank. 
 
Epetra_SerialComm * subComm
 
virtual void PrintInfo(std::ostream &os) const 
 
virtual Epetra_Comm * Clone() const 
 
virtual int NumSubDomains() const 
Return number of sub-domains that the global problem is split into. 
 
virtual int Broadcast(int *MyVals, int Count, int Root) const 
 
virtual int MaxAll(double *PartialMaxs, double *GlobalMaxs, int Count) const 
 
virtual int SumAll(long *PartialSums, long *GlobalSums, int Count) const 
 
virtual int GatherAll(double *MyVals, double *AllVals, int Count) const 
 
virtual int ScanSum(long long *MyVals, long long *ScanSums, int Count) const 
 
virtual int MaxAll(long long *PartialMaxs, long long *GlobalMaxs, int Count) const 
 
virtual int NumTimeDomains() const 
Return number of time domains that the global problem is split into.