Trilinos_Util::CrsMatrixGallery Class Reference

#include <Trilinos_Util_CrsMatrixGallery.h>

Inheritance diagram for Trilinos_Util::CrsMatrixGallery:

Inheritance graph
[legend]

List of all members.

Public Member Functions

 CrsMatrixGallery (const string name, const Epetra_Comm &comm)
 Triutils_Gallery Constructor.
 CrsMatrixGallery (const string name, const Epetra_Map &map)
 Creates an Triutils_Gallery object using a given map.
 ~CrsMatrixGallery ()
 Triutils_Gallery destructor.
int Set (const string parameter, const int value)
 Sets a gallery options using an interger value.
int Set (const string parameter, const string value)
 Sets a gallery options using a C++ string .
int Set (const string parameter, const double value)
 Sets a gallery options using an double value.
int Set (const string parameter, const Epetra_Vector &value)
 Sets a gallery options using an Epetra_Vector.
int Set (Trilinos_Util::CommandLineParser &CLP)
 Sets gallery options using values passed from the shell.

Protected Member Functions

void CreateMap ()
 Creates a map.
void CreateMatrix ()
 Creates the CrdMatrix.
void CreateExactSolution ()
 Creates the exact solution.
void CreateStartingSolution ()
 Creates the starting solution.
void CreateRHS ()
 Create the RHS corresponding to the desired exact solution.
void CreateEye ()
void CreateMatrixDiag ()
void CreateMatrixTriDiag ()
void CreateMatrixLaplace1d ()
void CreateMatrixLaplace1dNeumann ()
void CreateMatrixCrossStencil2d ()
void CreateMatrixCrossStencil2dVector ()
void CreateMatrixLaplace2d ()
void CreateMatrixLaplace2d_BC ()
void CreateMatrixLaplace2d_9pt ()
void CreateMatrixStretched2d ()
void CreateMatrixRecirc2d ()
void CreateMatrixRecirc2dDivFree ()
void CreateMatrixLaplace2dNeumann ()
void CreateMatrixUniFlow2d ()
void CreateMatrixLaplace3d ()
void CreateMatrixCrossStencil3d ()
void CreateMatrixCrossStencil3dVector ()
void CreateMatrixLehmer ()
void CreateMatrixMinij ()
void CreateMatrixRis ()
void CreateMatrixHilbert ()
void CreateMatrixJordblock ()
void CreateMatrixCauchy ()
void CreateMatrixFiedler ()
void CreateMatrixHanowa ()
void CreateMatrixKMS ()
void CreateMatrixParter ()
void CreateMatrixPei ()
void CreateMatrixOnes ()
void CreateMatrixVander ()
void ReadMatrix ()
void GetNeighboursCartesian2d (const int i, const int nx, const int ny, int &left, int &right, int &lower, int &upper)
void GetNeighboursCartesian3d (const int i, const int nx, const int ny, const int nz, int &left, int &right, int &lower, int &upper, int &below, int &above)
void ZeroOutData ()
void SetupCartesianGrid2D ()
void SetupCartesianGrid3D ()
void ExactSolQuadXY (double x, double y, double &u)
void ExactSolQuadXY (double x, double y, double &u, double &ux, double &uy, double &uxx, double &uyy)

Protected Attributes

const Epetra_Comm * comm_
Epetra_CrsMatrix * matrix_
Epetra_MultiVector * ExactSolution_
Epetra_MultiVector * StartingSolution_
Epetra_MultiVector * rhs_
Epetra_Map * map_
Epetra_LinearProblem * LinearProblem_
string name_
int NumGlobalElements_
int NumMyElements_
int * MyGlobalElements_
string MapType_
bool ContiguousMap_
std::vector< int > MapMap_
string ExactSolutionType_
string StartingSolutionType_
string ExpandType_
string RhsType_
int nx_
int ny_
int nz_
int mx_
int my_
int mz_
double lx_
double ly_
double lz_
int NumPDEEqns_
int NumVectors_
Epetra_Vector * VectorA_
Epetra_Vector * VectorB_
Epetra_Vector * VectorC_
Epetra_Vector * VectorD_
Epetra_Vector * VectorE_
Epetra_Vector * VectorF_
Epetra_Vector * VectorG_
double a_
double b_
double c_
double d_
double e_
double f_
double g_
double alpha_
double beta_
double gamma_
double delta_
double conv_
double diff_
double source_
double epsilon_
string FileName_
string ErrorMsg
string OutputMsg
bool verbose_
Epetra_CrsMatrix * GetMatrix ()
 Returns a pointer to the CrsMatrix.
Epetra_CrsMatrix & GetMatrixRef ()
Epetra_MultiVector * GetExactSolution ()
 Returns a pointer to the exact solution.
Epetra_MultiVector * GetStartingSolution ()
 Returns a pointer to the starting solution (typically, for HB problems).
Epetra_MultiVector * GetRHS ()
 Returns a pointer to the rhs corresponding to the selected exact solution.
const Epetra_Map * GetMap ()
 Returns a pointer the internally stored Map.
const Epetra_Map & GetMapRef ()
Epetra_LinearProblem * GetLinearProblem ()
 Returns a pointer to Epetra_LinearProblem.
void ComputeResidual (double *residual)
 Computes the 2-norm of the residual.
void ComputeDiffBetweenStartingAndExactSolutions (double *residual)
 Computes the 2-norm of the difference between the starting solution and the exact solution.
void PrintMatrixAndVectors (ostream &os)
 Print out matrix and vectors.
void PrintMatrixAndVectors ()
void GetCartesianCoordinates (double *&x, double *&y, double *&z)
 Get pointers to double vectors containing coordinates of points.
int WriteMatrix (const string &FileName, const bool UseSparse=true)
 Print matrix on file in MATLAB format.
ostream & operator<< (ostream &os, const Trilinos_Util::CrsMatrixGallery &G)
 Print out detailed information about the problem at hand.


Constructor & Destructor Documentation

Trilinos_Util::CrsMatrixGallery::CrsMatrixGallery ( const string  name,
const Epetra_Comm &  comm 
)

Triutils_Gallery Constructor.

Creates a Triutils_Gallery instance.

The first parameter is the name of the matrix. We refer to the Trilinos Tutorial for a detailed description of available matrices.

Note:
The matrix name can be empty (""), and set later using, for example, Set("matrix_name","laplace_2d");
An example of program using this class is reported below.

int main(int argc, char *argv[])
{

#ifdef HAVE_MPI
  MPI_Init(&argc,&argv);
  Epetra_MpiComm Comm (MPI_COMM_WORLD);
#else
  Epetra_SerialComm Comm;
#endif

  // create an Epetra matrix reading an H/B matrix
  Trilinos_Util_CrsMatrixGallery Gallery("hb", Comm);

  // set the name of the matrix
  Gallery.Set("matrix name", "bcsstk14.rsa");
  
  Epetra_CrsMatrix * A;
  Epetra_Vector * ExactSolution;
  Epetra_Vector * RHS;
  Epetra_Vector * StartingSolution;

  // at this point the matrix is read from file
  A = Gallery.GetMatrix();
  ExactSolution = Gallery.GetExactSolution();

  // at this point the RHS is allocated and filled
  RHS = Gallery.GetRHS();
  StartingSolution = Gallery.GetStartingSolution();
  
  // create linear problem
  Epetra_LinearProblem Problem(A,StartingSolution,RHS);
  // create AztecOO instance
  AztecOO Solver(Problem);

  Solver.SetAztecOption( AZ_precond, AZ_dom_decomp );  
  Solver.Iterate(1000,1E-9);

  // compute residual
  double residual;
  
  Gallery.ComputeResidual(&residual);
  if( Comm.MyPID()==0 ) cout << "||b-Ax||_2 = " << residual << endl;
  
  Gallery.ComputeDiffBetweenStartingAndExactSolutions(&residual);
  if( Comm.MyPID()==0 ) cout << "||x_exact - x||_2 = " << residual << endl;

 #ifdef HAVE_MPI
  MPI_Finalize() ;
#endif

return 0 ;
  } 

Class CommandLineParser can be used as well. In this case, one may decide to use the following:

  Trilinos_Util::CommandLineParser CLP(argc,argv);
  // set a problem with no matrix name
  Trilinos_Util::CrsMatrixGallery Gallery("", Comm);
  // read parameters and settings from the shell line
  G.Set(CLP);
  // continue with your code...

Parameters:
In comm - Epetra communicator

References ErrorMsg, OutputMsg, verbose_, and ZeroOutData().

Trilinos_Util::CrsMatrixGallery::CrsMatrixGallery ( const string  name,
const Epetra_Map &  map 
)

Creates an Triutils_Gallery object using a given map.

Create a Triutils_Gallery object using an Epetra_Map. Problem size must match the elements in map.

Parameters:
In name - definition of the problem to be created.
In map - Epetra_Map

References comm_, ErrorMsg, map_, MyGlobalElements_, NumGlobalElements_, NumMyElements_, OutputMsg, verbose_, and ZeroOutData().

Trilinos_Util::CrsMatrixGallery::~CrsMatrixGallery ( void   ) 


Member Function Documentation

void Trilinos_Util::CrsMatrixGallery::ComputeDiffBetweenStartingAndExactSolutions ( double *  residual  ) 

Computes the 2-norm of the difference between the starting solution and the exact solution.

References CreateRHS(), ExactSolution_, map_, NumVectors_, rhs_, and StartingSolution_.

void Trilinos_Util::CrsMatrixGallery::ComputeResidual ( double *  residual  ) 

Computes the 2-norm of the residual.

References CreateRHS(), map_, matrix_, NumVectors_, rhs_, and StartingSolution_.

void Trilinos_Util::CrsMatrixGallery::CreateExactSolution ( void   )  [protected]

void Trilinos_Util::CrsMatrixGallery::CreateEye ( void   )  [protected]

References a_, CreateMatrixDiag(), OutputMsg, and verbose_.

Referenced by CreateMatrix().

void Trilinos_Util::CrsMatrixGallery::CreateMap ( void   )  [protected]

Creates a map.

Creates an Epetra_Map. Before calling this function, the problem size must have been specified.

CreateMap() allows some different maps. The type of map is set using Set("map",value). Value is a string, defined as:

  • linear: Creates a linear map. Elements are divided into continuous chunks among the processors.

  • box: used for problems defined on cartesian grids over a square. The nodes is subdivided into mx x my subdomains. mx and my are specified via Set("mx",IntValue) and Set("my",IntValue).

  • interlaces: elements are subdivided so that element i is assigned to process iNumProcs.

  • random: assign each node to a random process

  • greedy: (only for HB matrices) implements a greedy algorithm to decompose the graph of the HB matrix among the processes

References comm_, ContiguousMap_, ErrorMsg, map_, MapMap_, MapType_, mx_, my_, MyGlobalElements_, mz_, name_, NumGlobalElements_, NumMyElements_, nx_, ny_, nz_, OutputMsg, SetupCartesianGrid2D(), SetupCartesianGrid3D(), and verbose_.

Referenced by Trilinos_Util::VbrMatrixGallery::CreateBlockMap(), CreateExactSolution(), CreateMatrix(), CreateRHS(), CreateStartingSolution(), GetCartesianCoordinates(), GetMap(), GetMapRef(), and ReadMatrix().

void Trilinos_Util::CrsMatrixGallery::CreateMatrix ( void   )  [protected]

void Trilinos_Util::CrsMatrixGallery::CreateMatrixCauchy ( void   )  [protected]

void Trilinos_Util::CrsMatrixGallery::CreateMatrixCrossStencil2d ( void   )  [protected]

void Trilinos_Util::CrsMatrixGallery::CreateMatrixCrossStencil2dVector ( void   )  [protected]

void Trilinos_Util::CrsMatrixGallery::CreateMatrixCrossStencil3d ( void   )  [protected]

void Trilinos_Util::CrsMatrixGallery::CreateMatrixCrossStencil3dVector ( void   )  [protected]

void Trilinos_Util::CrsMatrixGallery::CreateMatrixDiag ( void   )  [protected]

void Trilinos_Util::CrsMatrixGallery::CreateMatrixFiedler ( void   )  [protected]

void Trilinos_Util::CrsMatrixGallery::CreateMatrixHanowa ( void   )  [protected]

void Trilinos_Util::CrsMatrixGallery::CreateMatrixHilbert ( void   )  [protected]

void Trilinos_Util::CrsMatrixGallery::CreateMatrixJordblock ( void   )  [protected]

void Trilinos_Util::CrsMatrixGallery::CreateMatrixKMS ( void   )  [protected]

void Trilinos_Util::CrsMatrixGallery::CreateMatrixLaplace1d ( void   )  [protected]

References a_, b_, c_, CreateMatrixTriDiag(), OutputMsg, and verbose_.

Referenced by CreateMatrix().

void Trilinos_Util::CrsMatrixGallery::CreateMatrixLaplace1dNeumann ( void   )  [protected]

void Trilinos_Util::CrsMatrixGallery::CreateMatrixLaplace2d ( void   )  [protected]

void Trilinos_Util::CrsMatrixGallery::CreateMatrixLaplace2d_9pt ( void   )  [protected]

void Trilinos_Util::CrsMatrixGallery::CreateMatrixLaplace2d_BC ( void   )  [protected]

void Trilinos_Util::CrsMatrixGallery::CreateMatrixLaplace2dNeumann ( void   )  [protected]

void Trilinos_Util::CrsMatrixGallery::CreateMatrixLaplace3d ( void   )  [protected]

References a_, b_, c_, CreateMatrixCrossStencil3d(), d_, e_, f_, g_, OutputMsg, and verbose_.

Referenced by CreateMatrix().

void Trilinos_Util::CrsMatrixGallery::CreateMatrixLehmer ( void   )  [protected]

void Trilinos_Util::CrsMatrixGallery::CreateMatrixMinij ( void   )  [protected]

void Trilinos_Util::CrsMatrixGallery::CreateMatrixOnes ( void   )  [protected]

void Trilinos_Util::CrsMatrixGallery::CreateMatrixParter ( void   )  [protected]

void Trilinos_Util::CrsMatrixGallery::CreateMatrixPei ( void   )  [protected]

void Trilinos_Util::CrsMatrixGallery::CreateMatrixRecirc2d ( void   )  [protected]

void Trilinos_Util::CrsMatrixGallery::CreateMatrixRecirc2dDivFree ( void   )  [protected]

void Trilinos_Util::CrsMatrixGallery::CreateMatrixRis ( void   )  [protected]

void Trilinos_Util::CrsMatrixGallery::CreateMatrixStretched2d ( void   )  [protected]

void Trilinos_Util::CrsMatrixGallery::CreateMatrixTriDiag ( void   )  [protected]

void Trilinos_Util::CrsMatrixGallery::CreateMatrixUniFlow2d ( void   )  [protected]

void Trilinos_Util::CrsMatrixGallery::CreateMatrixVander ( void   )  [protected]

void Trilinos_Util::CrsMatrixGallery::CreateRHS ( void   )  [protected]

void Trilinos_Util::CrsMatrixGallery::CreateStartingSolution ( void   )  [protected]

void Trilinos_Util::CrsMatrixGallery::ExactSolQuadXY ( double  x,
double  y,
double &  u,
double &  ux,
double &  uy,
double &  uxx,
double &  uyy 
) [protected]

void Trilinos_Util::CrsMatrixGallery::ExactSolQuadXY ( double  x,
double  y,
double &  u 
) [protected]

Referenced by CreateExactSolution(), and CreateRHS().

void Trilinos_Util::CrsMatrixGallery::GetCartesianCoordinates ( double *&  x,
double *&  y,
double *&  z 
)

Get pointers to double vectors containing coordinates of points.

References CreateMap(), ErrorMsg, lx_, ly_, lz_, map_, matrix_, MyGlobalElements_, name_, nx_, ny_, and nz_.

Epetra_MultiVector * Trilinos_Util::CrsMatrixGallery::GetExactSolution ( void   ) 

Returns a pointer to the exact solution.

Returns a pointer to the exact solution.

Some choices are available to define the exact solution, using Set("exact solution", value). value can be:

  • constant: the exact solution vector is made up of 1's.
  • random: a random solution vector
  • linear: value at node i is defined as alpha*i. The double value alpha can be set via Set("alpha",DoubleVal).

References CreateExactSolution(), and ExactSolution_.

Epetra_LinearProblem * Trilinos_Util::CrsMatrixGallery::GetLinearProblem ( void   ) 

Returns a pointer to Epetra_LinearProblem.

References GetMatrix(), GetRHS(), GetStartingSolution(), and LinearProblem_.

const Epetra_Map * Trilinos_Util::CrsMatrixGallery::GetMap ( void   ) 

Returns a pointer the internally stored Map.

References CreateMap(), and map_.

const Epetra_Map & Trilinos_Util::CrsMatrixGallery::GetMapRef ( void   ) 

References CreateMap(), and map_.

Epetra_CrsMatrix * Trilinos_Util::CrsMatrixGallery::GetMatrix ( void   ) 

Returns a pointer to the CrsMatrix.

References CreateMatrix(), and matrix_.

Referenced by GetLinearProblem().

Epetra_CrsMatrix & Trilinos_Util::CrsMatrixGallery::GetMatrixRef ( void   ) 

References CreateMatrix(), and matrix_.

void Trilinos_Util::CrsMatrixGallery::GetNeighboursCartesian2d ( const int  i,
const int  nx,
const int  ny,
int &  left,
int &  right,
int &  lower,
int &  upper 
) [protected]

void Trilinos_Util::CrsMatrixGallery::GetNeighboursCartesian3d ( const int  i,
const int  nx,
const int  ny,
const int  nz,
int &  left,
int &  right,
int &  lower,
int &  upper,
int &  below,
int &  above 
) [protected]

Epetra_MultiVector * Trilinos_Util::CrsMatrixGallery::GetRHS ( void   ) 

Returns a pointer to the rhs corresponding to the selected exact solution.

References CreateRHS(), and rhs_.

Referenced by GetLinearProblem().

Epetra_MultiVector * Trilinos_Util::CrsMatrixGallery::GetStartingSolution ( void   ) 

Returns a pointer to the starting solution (typically, for HB problems).

Returns a pointer to the starting solution. This is typically used while reading a HB problem. However, the user can set a starting solution using Set("starting solution", "value"). Value can be

  • zero
  • random

References CreateStartingSolution(), and StartingSolution_.

Referenced by GetLinearProblem().

void Trilinos_Util::CrsMatrixGallery::PrintMatrixAndVectors (  ) 

void Trilinos_Util::CrsMatrixGallery::PrintMatrixAndVectors ( ostream &  os  ) 

Print out matrix and vectors.

References comm_, matrix_, and rhs_.

void Trilinos_Util::CrsMatrixGallery::ReadMatrix ( void   )  [protected]

int Trilinos_Util::CrsMatrixGallery::Set ( Trilinos_Util::CommandLineParser CLP  ) 

Sets gallery options using values passed from the shell.

References Trilinos_Util_Map::Get(), Trilinos_Util_Map::Has(), and Set().

int Trilinos_Util::CrsMatrixGallery::Set ( const string  parameter,
const Epetra_Vector &  value 
)

Sets a gallery options using an Epetra_Vector.

Sets a gallery options using an Epetra_Vector. The Epetra_Vector is copied into internal structures, and freed by the destructor.

References ErrorMsg, map_, VectorA_, VectorB_, VectorC_, VectorD_, VectorE_, VectorF_, and VectorG_.

int Trilinos_Util::CrsMatrixGallery::Set ( const string  parameter,
const double  value 
)

Sets a gallery options using an double value.

References a_, alpha_, b_, c_, conv_, d_, diff_, e_, epsilon_, ErrorMsg, f_, g_, lx_, ly_, lz_, and source_.

int Trilinos_Util::CrsMatrixGallery::Set ( const string  parameter,
const string  value 
)

Sets a gallery options using a C++ string .

References comm_, ContiguousMap_, ErrorMsg, ExactSolutionType_, ExpandType_, FileName_, MapType_, name_, RhsType_, StartingSolutionType_, and verbose_.

int Trilinos_Util::CrsMatrixGallery::Set ( const string  parameter,
const int  value 
)

Sets a gallery options using an interger value.

References comm_, ErrorMsg, map_, mx_, my_, mz_, NumGlobalElements_, NumPDEEqns_, NumVectors_, nx_, ny_, nz_, and verbose_.

Referenced by Set().

void Trilinos_Util::CrsMatrixGallery::SetupCartesianGrid2D (  )  [protected]

void Trilinos_Util::CrsMatrixGallery::SetupCartesianGrid3D (  )  [protected]

int Trilinos_Util::CrsMatrixGallery::WriteMatrix ( const string &  FileName,
const bool  UseSparse = true 
)

Print matrix on file in MATLAB format.

References comm_, CreateMatrix(), and matrix_.

void Trilinos_Util::CrsMatrixGallery::ZeroOutData (  )  [protected]


Friends And Related Function Documentation

ostream& operator<< ( ostream &  os,
const Trilinos_Util::CrsMatrixGallery G 
) [friend]

Print out detailed information about the problem at hand.


Member Data Documentation

Referenced by ZeroOutData().

const Epetra_Comm* Trilinos_Util::CrsMatrixGallery::comm_ [protected]

Referenced by CreateMap(), Set(), and ZeroOutData().

Referenced by ZeroOutData().

Epetra_MultiVector* Trilinos_Util::CrsMatrixGallery::ExactSolution_ [protected]

Referenced by ReadMatrix(), and Set().

Referenced by ZeroOutData().

Epetra_LinearProblem* Trilinos_Util::CrsMatrixGallery::LinearProblem_ [protected]

Epetra_Map* Trilinos_Util::CrsMatrixGallery::map_ [protected]

std::vector<int> Trilinos_Util::CrsMatrixGallery::MapMap_ [protected]

Referenced by CreateMap().

Epetra_CrsMatrix* Trilinos_Util::CrsMatrixGallery::matrix_ [protected]

Referenced by CreateMap(), Set(), and ZeroOutData().

Referenced by CreateMap(), and Set().

Referenced by CreateMap(), Set(), and ZeroOutData().

Epetra_MultiVector* Trilinos_Util::CrsMatrixGallery::rhs_ [protected]

Referenced by CreateRHS(), Set(), and ZeroOutData().

Referenced by Set(), and ZeroOutData().

Epetra_MultiVector* Trilinos_Util::CrsMatrixGallery::StartingSolution_ [protected]

Epetra_Vector* Trilinos_Util::CrsMatrixGallery::VectorA_ [protected]

Epetra_Vector * Trilinos_Util::CrsMatrixGallery::VectorB_ [protected]

Epetra_Vector * Trilinos_Util::CrsMatrixGallery::VectorC_ [protected]

Epetra_Vector * Trilinos_Util::CrsMatrixGallery::VectorD_ [protected]

Epetra_Vector * Trilinos_Util::CrsMatrixGallery::VectorE_ [protected]

Epetra_Vector * Trilinos_Util::CrsMatrixGallery::VectorF_ [protected]

Referenced by Set(), ZeroOutData(), and ~CrsMatrixGallery().

Epetra_Vector * Trilinos_Util::CrsMatrixGallery::VectorG_ [protected]

Referenced by Set(), ZeroOutData(), and ~CrsMatrixGallery().


The documentation for this class was generated from the following files:

Generated on Wed Oct 21 14:27:28 2009 for TriUtils by  doxygen 1.5.9