fei::Matrix_core Class Reference

Inheritance diagram for fei::Matrix_core:

Inheritance graph
List of all members.

Public Member Functions

 Matrix_core (fei::SharedPtr< fei::MatrixGraph > matrixGraph, int numLocalEqns)
virtual ~Matrix_core ()
void setRHS (fei::SharedPtr< fei::Vector > rhsvector)
void setSlaveInfo (fei::SharedPtr< fei::MatrixGraph > matrixGraph)
fei::SharedPtr< fei::MatrixGraphgetMatrixGraph ()
std::vector< FillableMat * > & getRemotelyOwnedMatrix ()
void setEqnComm (fei::SharedPtr< fei::EqnComm > eqnComm)

Static Public Member Functions

static void copyTransposeToWorkArrays (int numRows, int numCols, const double *const *values, std::vector< double > &work_1D, std::vector< const double * > &work_2D)

Protected Member Functions

void parameters (const fei::ParameterSet &paramset)
void setName (const char *name)
int gatherFromOverlap (bool accumulate)
void setMatrixGraph (fei::SharedPtr< fei::MatrixGraph > matrixGraph)
int copyPointRowsToBlockRow (int numPtRows, int numPtCols, const double *const *ptValues, int numBlkCols, const int *blkColDims, double **blkValues)
int convertPtToBlk (int numRows, const int *rows, int numCols, const int *cols, int *blkRows, int *blkRowOffsets, int *blkCols, int *blkColOffsets)
MPI_Comm getCommunicator () const
const fei::SharedPtr< fei::VectorSpacevecSpace () const
fei::SharedPtr< fei::VectorSpacevecSpace ()
std::vector< int > & globalOffsets ()
const std::vector< int > & globalOffsets () const
int firstLocalOffset () const
int lastLocalOffset () const
int numProcs () const
int localProc () const
bool haveBlockMatrix () const
void setBlockMatrix (bool flag)
bool haveFEMatrix () const
void setFEMatrix (bool flag)
int getOwnerProc (int globalEqn)

Protected Attributes

std::string name_
std::vector< int > work_indices_
std::vector< int > work_indices2_
std::vector< int > work_ints_
std::vector< double > work_data1D_
std::vector< const double * > work_data2D_
fei::SharedPtr< fei::EqnCommeqnComm_

Detailed Description

Definition at line 25 of file fei_Matrix_core.hpp.

Member Function Documentation

void fei::Matrix_core::copyTransposeToWorkArrays ( int  numRows,
int  numCols,
const double *const *  values,
std::vector< double > &  work_1D,
std::vector< const double * > &  work_2D 
) [static]

Given a 2-D table (C-style list-of-pointers) of size numRows X numCols, copy the transpose of the data into the given 1-D work array and set the given 2-D array of pointers to point into the 1-D data. In other words, columns in the input will be rows in the output, and the entries in work_2D will point to the beginnings of those rows (former columns).

numRows First dimension of 'values'. i.e., number of pointers in the list of pointers.
numCols Second dimension of 'values'. i.e., the length of each of the rows (all rows have the same length).
values 2-D C-style table of data. List of pointers of length numRows, with each pointer pointing to 'numCols' items.
work_1D on exit, will have length numRows X numCols, and will contain the data from values. The data from 'values' will be transposed such that the entries from each column of 'values' will now lie contiguously.
work_2D on exit, will have length numCols, and will represent a C-style list-of-pointers where work_2D[i] = &(work_1D[i*numRows]). In other words, each entry of work_2D points to a row which was a column of 'values'. work_2D represents a table with 'numCols' rows, each of length 'numRows'.

Definition at line 282 of file fei_Matrix_core.cpp.

void fei::Matrix_core::setRHS ( fei::SharedPtr< fei::Vector rhsvector  ) 

If slave-constraints have been registered with the matrix-graph, and if the constraints have a non-zero right-hand-side coefficient, then this matrix needs access to the linear-system's right-hand-side vector for assembling data into. For more details, see the SAND report that documents the FEI's constraint reduction.

Definition at line 134 of file fei_Matrix_core.cpp.

void fei::Matrix_core::setSlaveInfo ( fei::SharedPtr< fei::MatrixGraph matrixGraph  ) 

Instruct the Matrix_core to set its slave-constraint information (such as dependency matrix and constraint-right-hand-side vector) from the specified matrix-graph object.

int fei::Matrix_core::copyPointRowsToBlockRow ( int  numPtRows,
int  numPtCols,
const double *const *  ptValues,
int  numBlkCols,
const int *  blkColDims,
double **  blkValues 
) [protected]

Copy a rectangular (non-ragged) table of coefficients representing a set of point-entry matrix rows into a block-entry matrix row which is laid out as follows: blkValues[i], i in [0 .. numBlkCols-1], is an array containing the values for a single block-entry. The dimensions of the block-entry are numPtRows X blkColDims[i], and the block-entry values will be arranged in column-major order, meaning that each column of the block-entry occupies contiguous memory.

Definition at line 338 of file fei_Matrix_core.cpp.

The documentation for this class was generated from the following files:
Generated on Wed May 12 01:33:52 2010 for FEI by  doxygen 1.4.7