#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
#include "Epetra_Map.h"
#include "Epetra_Vector.h"
#include "Epetra_Export.h"
int main(int argc, char *argv[]) {
#ifdef HAVE_MPI
MPI_Init(&argc, &argv);
Epetra_MpiComm Comm(MPI_COMM_WORLD);
#else
Epetra_SerialComm Comm;
#endif
int NumGlobalElements = 4;
int NumMyElements;
Epetra_IntSerialDenseVector MyGlobalElements;
if( Comm.MyPID() == 0 ) {
NumMyElements = 3;
MyGlobalElements.Size(NumMyElements);
MyGlobalElements[0] = 0;
MyGlobalElements[1] = 1;
MyGlobalElements[2] = 2;
} else {
NumMyElements = 3;
MyGlobalElements.Size(NumMyElements);
MyGlobalElements[0] = 1;
MyGlobalElements[1] = 2;
MyGlobalElements[2] = 3;
}
Epetra_Map Map(-1,MyGlobalElements.Length(),
MyGlobalElements.Values(),0, Comm);
Epetra_Vector x(Map);
for( int i=0 ; i<NumMyElements ; ++i )
x[i] = 10*( Comm.MyPID()+1 );
cout << x;
int NumMyElements_target;
if( Comm.MyPID() == 0 )
NumMyElements_target = NumGlobalElements;
else
NumMyElements_target = 0;
Epetra_Map TargetMap(-1,NumMyElements_target,0,Comm);
Epetra_Export Exporter(Map,TargetMap);
Epetra_Vector y(TargetMap);
y.Export(x,Exporter,Add);
cout << y;
#ifdef HAVE_MPI
MPI_Finalize();
#endif
return(EXIT_SUCCESS);
}
#else
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char *argv[])
{
puts("Please configure Didasko with:\n"
"--enable-epetra");
return 0;
}
#endif