Epetra_IntSerialDenseMatrix Class Reference

Epetra_IntSerialDenseMatrix: A class for constructing and using general dense integer matrices. More...

#include <Epetra_IntSerialDenseMatrix.h>

Inheritance diagram for Epetra_IntSerialDenseMatrix:

Inheritance graph
[legend]
Collaboration diagram for Epetra_IntSerialDenseMatrix:

Collaboration graph
[legend]
List of all members.

Public Member Functions

Constructor/Destructor Methods
 Epetra_IntSerialDenseMatrix ()
 Default constructor; defines a zero size object.
 Epetra_IntSerialDenseMatrix (int NumRows, int NumCols)
 Shaped constructor; defines a variable-sized object.
 Epetra_IntSerialDenseMatrix (Epetra_DataAccess CV, int *A, int LDA, int NumRows, int NumCols)
 Set object values from two-dimensional array.
 Epetra_IntSerialDenseMatrix (const Epetra_IntSerialDenseMatrix &Source)
 Epetra_IntSerialDenseMatrix copy constructor.
virtual ~Epetra_IntSerialDenseMatrix ()
 Epetra_IntSerialDenseMatrix destructor.
Shaping/sizing Methods
int Shape (int NumRows, int NumCols)
 Set dimensions of a Epetra_IntSerialDenseMatrix object; init values to zero.
int Reshape (int NumRows, int NumCols)
 Reshape a Epetra_IntSerialDenseMatrix object.
Data Accessor methods
virtual int OneNorm ()
 Computes the 1-Norm of the this matrix.
virtual int InfNorm ()
 Computes the Infinity-Norm of the this matrix.
Epetra_IntSerialDenseMatrixoperator= (const Epetra_IntSerialDenseMatrix &Source)
 Copy from one matrix to another.
bool operator== (const Epetra_IntSerialDenseMatrix &rhs) const
 Comparison operator.
bool operator!= (const Epetra_IntSerialDenseMatrix &rhs) const
 Inequality operator.
int & operator() (int RowIndex, int ColIndex)
 Element access function.
const int & operator() (int RowIndex, int ColIndex) const
 Element access function.
int * operator[] (int ColIndex)
 Column access function.
const int * operator[] (int ColIndex) const
 Column access function.
int Random ()
 Set matrix values to random numbers.
int M () const
 Returns row dimension of system.
int N () const
 Returns column dimension of system.
const int * A () const
 Returns const pointer to the this matrix.
int * A ()
 Returns pointer to the this matrix.
int LDA () const
 Returns the leading dimension of the this matrix.
Epetra_DataAccess CV () const
 Returns the data access mode of the this matrix.
I/O methods
virtual void Print (ostream &os) const
 Print service methods; defines behavior of ostream << operator.
Expert-only unsupported methods
int MakeViewOf (const Epetra_IntSerialDenseMatrix &Source)
 Reset an existing IntSerialDenseMatrix to point to another Matrix.

Protected Member Functions

void CopyMat (int *Source, int Source_LDA, int NumRows, int NumCols, int *Target, int Target_LDA)
void CleanupData ()

Protected Attributes

Epetra_DataAccess CV_
bool A_Copied_
int M_
int N_
int LDA_
int * A_

Detailed Description

Epetra_IntSerialDenseMatrix: A class for constructing and using general dense integer matrices.

The Epetra_IntSerialDenseMatrix class enables the construction and use of integer-valued, general dense matrices.

The Epetra_IntSerialDenseMatrix class is intended to provide very basic support for dense rectangular matrices.

Constructing Epetra_IntSerialDenseMatrix Objects

There are four Epetra_IntSerialDenseMatrix constructors. The first constructs a zero-sized object which should be made to appropriate length using the Shape() or Reshape() functions and then filled with the [] or () operators. The second constructs an object sized to the dimensions specified, which should be filled with the [] or () operators. The third is a constructor that accepts user data as a 2D array, and the fourth is a copy constructor. The third constructor has two data access modes (specified by the Epetra_DataAccess argument):

  1. Copy mode - Allocates memory and makes a copy of the user-provided data. In this case, the user data is not needed after construction.
  2. View mode - Creates a "view" of the user data. In this case, the user data is required to remain intact for the life of the object.

Warning:
View mode is extremely dangerous from a data hiding perspective. Therefore, we strongly encourage users to develop code using Copy mode first and only use the View mode in a secondary optimization phase.
Epetra_IntSerialDenseMatrix constructors will throw an exception if an error occurrs. These exceptions will alway be negative integer values as follows:
  1. -1 Invalid dimension specified.
  2. -2 Shape returned non-zero.
  3. -3 Null pointer specified for user's data.
  4. -99 Internal Epetra_IntSerialDenseMatrix error. Contact developer.

Other Epetra_IntSerialDenseMatrix functions that do not return an integer error code (such as operators () and [] ) will throw an exception if an error occurrs. These exceptions will be integer values as follows:

  1. -1 Invalid row specified.
  2. -2 Invalid column specified.
  3. -5 Invalid assignment (type mismatch).
  4. -99 Internal Epetra_IntSerialDenseMatrix error. Contact developer.

bExtracting Data from Epetra_IntSerialDenseMatrix Objects

Once a Epetra_IntSerialDenseMatrix is constructed, it is possible to view the data via access functions.

Warning:
Use of these access functions cam be extremely dangerous from a data hiding perspective.
Vector and Utility Functions

Once a Epetra_IntSerialDenseMatrix is constructed, several mathematical functions can be applied to the object. Specifically:


Constructor & Destructor Documentation

Epetra_IntSerialDenseMatrix::Epetra_IntSerialDenseMatrix (  ) 

Default constructor; defines a zero size object.

Epetra_IntSerialDenseMatrix objects defined by the default constructor should be sized with the Shape() or Reshape functions. Values should be defined by using the [] or () operators.

Epetra_IntSerialDenseMatrix::Epetra_IntSerialDenseMatrix ( int  NumRows,
int  NumCols 
)

Shaped constructor; defines a variable-sized object.

Parameters:
In NumRows - Number of rows in object.
In NumCols - Number of columns in object.
Epetra_SerialDenseMatrix objects defined by the shaped constructor are already shaped to the dimensions given as a parameters. All values are initialized to 0. Calling this constructor is equivalent to using the default constructor, and then calling the Shape function on it. Values should be defined by using the [] or () operators.

Epetra_IntSerialDenseMatrix::Epetra_IntSerialDenseMatrix ( Epetra_DataAccess  CV,
int *  A,
int  LDA,
int  NumRows,
int  NumCols 
)

Set object values from two-dimensional array.

Parameters:
In Epetra_DataAccess - Enumerated type set to Copy or View.
In A - Pointer to an array of integer numbers. The first vector starts at A. The second vector starts at A+LDA, the third at A+2*LDA, and so on.
In LDA - The "Leading Dimension", or stride between vectors in memory.
In NumRows - Number of rows in object.
In NumCols - Number of columns in object.
See Detailed Description section for further discussion.

Epetra_IntSerialDenseMatrix::Epetra_IntSerialDenseMatrix ( const Epetra_IntSerialDenseMatrix Source  ) 

Epetra_IntSerialDenseMatrix copy constructor.

This matrix will take on the data access mode of the Source matrix.


Member Function Documentation

int Epetra_IntSerialDenseMatrix::MakeViewOf ( const Epetra_IntSerialDenseMatrix Source  ) 

Reset an existing IntSerialDenseMatrix to point to another Matrix.

Allows an existing IntSerialDenseMatrix to become a View of another matrix's data, regardless of the DataAccess mode of the Source matrix. It is assumed that the Source matrix is an independent matrix, and no checking is done to verify this.

This is used by Epetra_CrsGraph in the OptimizeStorage method. It is used so that an existing (Copy) matrix can be converted to a View. This frees up memory that CrsGraph no longer needs.

Parameters:
Source The IntSerialDenseMatrix this will become a view of.
Returns:
Integer error code, set to 0 if successful, and set to -1 if a type mismatch occured.
Warning:
This method is extremely dangerous and should only be used by experts.

virtual int Epetra_IntSerialDenseMatrix::OneNorm (  )  [virtual]

Computes the 1-Norm of the this matrix.

Returns:
Integer error code, set to 0 if successful.

bool Epetra_IntSerialDenseMatrix::operator!= ( const Epetra_IntSerialDenseMatrix rhs  )  const [inline]

Inequality operator.

operator!= simply returns the negation of operator==.

const int & Epetra_IntSerialDenseMatrix::operator() ( int  RowIndex,
int  ColIndex 
) const [inline]

Element access function.

The parentheses operator returns the element in the ith row and jth column if A(i,j) is specified, the expression A[j][i] (note that i and j are reversed) will return the same element. Thus, A(i,j) = A[j][i] for all valid i and j.

Returns:
Element from the specified row and column.
Warning:
No bounds checking is done unless Epetra is compiled with HAVE_EPETRA_ARRAY_BOUNDS_CHECK.

int & Epetra_IntSerialDenseMatrix::operator() ( int  RowIndex,
int  ColIndex 
) [inline]

Element access function.

The parentheses operator returns the element in the ith row and jth column if A(i,j) is specified, the expression A[j][i] (note that i and j are reversed) will return the same element. Thus, A(i,j) = A[j][i] for all valid i and j.

Returns:
Element from the specified row and column.
Warning:
No bounds checking is done unless Epetra is compiled with HAVE_EPETRA_ARRAY_BOUNDS_CHECK.

Epetra_IntSerialDenseMatrix& Epetra_IntSerialDenseMatrix::operator= ( const Epetra_IntSerialDenseMatrix Source  ) 

Copy from one matrix to another.

The operator= allows one to copy the values from one existing IntSerialDenseMatrix to another. The left hand side matrix will take on the data access mode of the right hand side matrix.

Returns:
Values of the left hand side matrix are modified by the values of the right hand side matrix.

bool Epetra_IntSerialDenseMatrix::operator== ( const Epetra_IntSerialDenseMatrix rhs  )  const

Comparison operator.

operator== compares two Epetra_IntSerialDenseMatrix objects, returns false if sizes are different, or if any coefficients differ.

const int * Epetra_IntSerialDenseMatrix::operator[] ( int  ColIndex  )  const [inline]

Column access function.

The parentheses operator returns the element in the ith row and jth column if A(i,j) is specified, the expression A[j][i] (note that i and j are reversed) will return the same element. Thus, A(i,j) = A[j][i] for all valid i and j.

Returns:
Pointer to address of specified column.
Warning:
No bounds checking can be done for the index i in the expression A[j][i].

No bounds checking is done unless Epetra is compiled with HAVE_EPETRA_ARRAY_BOUNDS_CHECK.

Reimplemented in Epetra_IntSerialDenseVector.

int * Epetra_IntSerialDenseMatrix::operator[] ( int  ColIndex  )  [inline]

Column access function.

The parentheses operator returns the element in the ith row and jth column if A(i,j) is specified, the expression A[j][i] (note that i and j are reversed) will return the same element. Thus, A(i,j) = A[j][i] for all valid i and j.

Returns:
Pointer to address of specified column.
Warning:
No bounds checking can be done for the index i in the expression A[j][i].

No bounds checking is done unless Epetra is compiled with HAVE_EPETRA_ARRAY_BOUNDS_CHECK.

Reimplemented in Epetra_IntSerialDenseVector.

int Epetra_IntSerialDenseMatrix::Random (  ) 

Set matrix values to random numbers.

IntSerialDenseMatrix uses the random number generator provided by Epetra_Util. The matrix values will be set to random values on the interval (0, 2^31 - 1).

Returns:
Integer error code, set to 0 if successful.

Reimplemented in Epetra_IntSerialDenseVector.

int Epetra_IntSerialDenseMatrix::Reshape ( int  NumRows,
int  NumCols 
)

Reshape a Epetra_IntSerialDenseMatrix object.

Parameters:
In NumRows - Number of rows in object.
In NumCols - Number of columns in object.
Allows user to define the dimensions of a Epetra_IntSerialDenseMatrix at any point. This function can be called at any point after construction. Any values that were previously in this object are copied into the new shape. If the new shape is smaller than the original, the upper left portion of the original matrix (the principal submatrix) is copied to the new matrix.

Returns:
Integer error code, set to 0 if successful.

int Epetra_IntSerialDenseMatrix::Shape ( int  NumRows,
int  NumCols 
)

Set dimensions of a Epetra_IntSerialDenseMatrix object; init values to zero.

Parameters:
In NumRows - Number of rows in object.
In NumCols - Number of columns in object.
Allows user to define the dimensions of a Epetra_IntSerialDenseMatrix at any point. This function can be called at any point after construction. Any values that were previously in this object are destroyed and the resized matrix starts off with all zero values.

Returns:
Integer error code, set to 0 if successful.


The documentation for this class was generated from the following file:
Generated on Wed May 12 21:25:13 2010 for Epetra by  doxygen 1.4.7