#include "Didasko_ConfigDefs.h"
#if defined(HAVE_DIDASKO_EPETRA)
#include "Epetra_ConfigDefs.h"
#ifdef HAVE_MPI
#include "mpi.h"
#include "Epetra_MpiComm.h"
#else
#include "Epetra_SerialComm.h"
#endif
int main(int argc, char *argv[])
{
#ifdef HAVE_MPI
  MPI_Init(&argc, &argv);
  
#else
#endif
  
  int MyPID = Comm.
MyPID();
 
  
  
  cout << Comm << endl;
  
  
  
  int    ivalue;
  double dvalue, dvalue2;
  double* dvalues;  dvalues  = new double[NumProc];
  double* dvalues2; dvalues2 = new double[NumProc];
  int root = 0;
  
  if (MyPID == root) dvalue = 12.0;
  
  
  
  
  
  
  
  
  
  dvalue = 1.0*MyPID;
  Comm.
SumAll( &dvalue, dvalues, 1);
 
  
  Comm.
MaxAll( &dvalue, dvalues, 1);
 
  
  dvalue = 1.0 * MyPID;
  Comm.
ScanSum(&dvalue, &dvalue2, 1);
 
  cout << "On proc " << MyPID << " dvalue2  = " << dvalue2 << endl;
  delete[] dvalues;
  delete[] dvalues2;
  
  
  
#ifdef HAVE_MPI
  MPI_Finalize();
#endif
  return( EXIT_SUCCESS );
} 
#else
#include <stdlib.h>
#include <stdio.h>
#ifdef HAVE_MPI
#include "mpi.h"
#endif
int main(int argc, char *argv[])
{
#ifdef HAVE_MPI
  MPI_Init(&argc,&argv);
#endif
  puts("Please configure Didasko with:\n"
      "--enable-epetra");
#ifdef HAVE_MPI
  MPI_Finalize();
#endif
  return 0;
}
#endif