#include "Galeri_ConfigDefs.h"
#include "Galeri_Exception.h"
#include "Galeri_FiniteElements.h"
#ifdef HAVE_MPI
#include "mpi.h"
#include "Epetra_MpiComm.h"
#else
#include "Epetra_SerialComm.h"
#endif
using namespace Galeri;
using namespace Galeri::FiniteElements;
int main(int argc, char *argv[])
{
#ifdef HAVE_MPI
MPI_Init(&argc,&argv);
Epetra_MpiComm Comm(MPI_COMM_WORLD);
#else
Epetra_SerialComm Comm;
#endif
try {
int nx = 2 * Comm.NumProc();
int ny = 2;
int mx = Comm.NumProc();
int my = 1;
double lx = 1.0 * Comm.NumProc();
double ly = 1.0;
if (!Comm.MyPID())
{
cout << "Number of dimensions = " << Grid.NumDimensions() << endl;
cout << "Number of vertices per element = " << Grid.NumVerticesPerElement() << endl;
cout << "Number of faces per element = " << Grid.NumFacesPerElement() << endl;
cout << "Number of vertices per face = " << Grid.NumVerticesPerFace() << endl;
cout << "Element type = " << Grid.ElementType() << endl;
cout << "Number of elements: global = " << Grid.NumGlobalElements();
cout << ", on proc 0 = " << Grid.NumMyElements() << endl;
cout << "Number of vertices: global = " << Grid.NumGlobalVertices();
cout << ", on proc 0 = " << Grid.NumMyVertices() << endl;
cout << "Number of boundary faces: "
"on proc 0 = " << Grid.NumMyBoundaryFaces() << endl;
std::vector<double> coord(3);
std::vector<int> vertices(Grid.NumVerticesPerElement());
for (int i = 0 ; i < Grid.NumMyElements() ; ++i)
{
cout << "Element " << i << ": ";
Grid.ElementVertices(i, &vertices[0]);
for (int j = 0 ; j < Grid.NumVerticesPerElement() ; ++j)
cout << vertices[j] << " ";
cout << endl;
}
for (int i = 0 ; i < Grid.NumMyVertices() ; ++i)
{
Grid.VertexCoord(i, &coord[0]);
cout << "Vertex " << i << ": (" << coord[0];
cout << ", " << coord[1] << ", " << coord[2] << ")" << endl;
}
for (int i = 0 ; i < Grid.NumMyBoundaryFaces() ; ++i)
{
cout << "Boundary face " << i << ": ";
int tag;
Grid.FaceVertices(i, tag, &vertices[0]);
for (int j = 0 ; j < Grid.NumVerticesPerFace() ; ++j)
cout << vertices[j] << " ";
cout << endl;
}
}
#if 0
Epetra_Vector Vector(Grid.RowMap());
MEDIT.Write(Grid, "grid", Vector);
#endif
}
catch (Exception& rhs)
{
if (Comm.MyPID() == 0)
{
cerr << "Caught exception: ";
rhs.Print();
}
}
#ifdef HAVE_MPI
MPI_Finalize();
#endif
}