A Quick Introduction to Galeri

Marzio Sala

Use left and right arrows to move through the presentation, and when you are finished click "Page Back" to go back to the previous page. The Galeri web page is here.

Who Should Use Galeri

Galeri gives tools to quickly define Epetra objects, so that you can use them for testing and examples. You can define:
  1. Epetra_Map's
  2. Epetra_CrsMatrix's
  3. Epetra_VbrMatrix's
Let's see a few examples now.


Let us suppose that your have a 2D Cartesian grid, composed by nx x ny vertices, and you want to divide them among the available mx x my processors. Each processor will have a rectangle (or square). You simply type:
#include "Galeri_Maps.h"
Epetra_Map* Map = 0; // the map to be created
Teuchos::ParameterList List;
List.set("nx", 10); // 10 nodes along the X-axis
List.set("ny", 10); // 10 nodes along the Y-axis
List.set("mx", 2);  // 2 subdomains along the X-axis
List.set("my", 2);  // 2 subdomains along the Y-axis
string MapType = "Cartesian2D";

Map = Galeri.CreateMap(MapType, Comm, List);
Equivalently, one can create a 3D Cartesian grid by using Cartesian3D.


Once you have an Epetra_Map, you can easily create a variety of matrices. For example, a 5-pt stencil discretization of a Laplacian is:
#include "Galeri_CrsMatrices.h"
Epetra_CrsMatrix* Matrix; // the matrix to be created
// the grid has nx * ny nodes (matrix size = nx * ny);
int nx = 5 * Comm.NumProc();
int ny = 5 * Comm.NumProc();
GaleriList.set("nx", nx);
GaleriList.set("ny", ny);

Matrix = CreateCrsMatrix("Laplace2D", Map, GaleriList);
where GaleriList and Map are those created in the previous slide.


Starting from an Epetra_CrsMatrix, you can create an equivalent Epetra_VbrMatrix matrix by replicating each row of the CRS matrix the specified number of times:
int NumEquations = 2;
Epetra_VbrMatrix* VbrMatrix;
VbrMatrix = CreateVbrMatrix(CrsMatrix, NumEquations);

End of the Show!

This concludes our quick overview of Galeri. There is extensive documentation on the Galeri web site; you can also contact the developers if more help is needed.