#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 xxx(Map);
for( int i=0 ; i<NumMyElements ; ++i )
xxx[i] = 10*( Comm.MyPID()+1 );
if( Comm.MyPID() == 0 ){
double val = 12;
int pos = 3;
xxx.SumIntoGlobalValues(1,0,&val,&pos);
}
cout << xxx;
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 yyy(TargetMap);
yyy.Export(xxx,Exporter,Add);
cout << yyy;
#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