FEI Package Browser (Single Doxygen Collection)
Version of the Day
|
#include <fei_Matrix.hpp>
Classes | |
class | Factory |
Public Member Functions | |
virtual | ~Matrix () |
virtual const char * | typeName ()=0 |
virtual int | parameters (const fei::ParameterSet ¶mset)=0 |
virtual fei::SharedPtr < fei::MatrixGraph > | getMatrixGraph () const =0 |
virtual void | setMatrixGraph (fei::SharedPtr< fei::MatrixGraph > matrixGraph)=0 |
virtual int | getGlobalNumRows () const =0 |
virtual int | getLocalNumRows () const =0 |
virtual int | getRowLength (int row, int &length) const =0 |
virtual int | putScalar (double scalar)=0 |
virtual int | copyOutRow (int row, int len, double *coefs, int *indices) const =0 |
virtual int | sumIn (int numRows, const int *rows, int numCols, const int *cols, const double *const *values, int format=0)=0 |
virtual int | copyIn (int numRows, const int *rows, int numCols, const int *cols, const double *const *values, int format=0)=0 |
virtual int | sumInFieldData (int fieldID, int idType, int rowID, int colID, const double *const *data, int format=0)=0 |
virtual int | sumInFieldData (int fieldID, int idType, int rowID, int colID, const double *data, int format=0)=0 |
virtual int | sumIn (int blockID, int connectivityID, const double *const *values, int format=0)=0 |
virtual int | globalAssemble ()=0 |
virtual int | multiply (fei::Vector *x, fei::Vector *y)=0 |
virtual void | setCommSizes ()=0 |
virtual int | gatherFromOverlap (bool accumulate=true)=0 |
virtual int | writeToFile (const char *filename, bool matrixMarketFormat=true)=0 |
virtual int | writeToStream (FEI_OSTREAM &ostrm, bool matrixMarketFormat=true)=0 |
virtual bool | usingBlockEntryStorage ()=0 |
virtual void | markState ()=0 |
virtual bool | changedSinceMark ()=0 |
virtual double * | getBeginPointer () |
virtual int | getOffset (int row, int col) |
Abstract representation of an algebraic matrix. This representation does not require that data be accessed only on the 'owning' processor. In other words, this representation may be used with an overlapping data decomposition. In most cases the underlying library-specific matrix will have a non-overlapping data decomposition (each equation uniquely owned by a single processor). Overlapping data may be assembled into this abstract matrix locally, and will be funneled into the underlying non- overlapping matrix on the correct processor when the gatherFromOverlap() method is called. Conversely, if the user wants to retrieve overlapping data from the matrix locally, that data is not guaranteed to be available until the scatterToOverlap() method is called.
Definition at line 30 of file fei_Matrix.hpp.
|
inlinevirtual |
Virtual destructor.
Definition at line 44 of file fei_Matrix.hpp.
|
pure virtual |
Return an implementation-dependent name describing the run-time type of this object.
Implemented in fei::Matrix_Impl< T >, fei::MatrixReducer, and fei::Matrix_Local.
Referenced by snl_fei_tester::dumpMatrixFiles(), test_Matrix::matrix_test1(), and fei::MatrixReducer::typeName().
|
pure virtual |
Method for supplying parameters
Implemented in fei::Matrix_Impl< T >, fei::MatrixReducer, and fei::Matrix_Local.
Referenced by fei::MatrixReducer::parameters(), snl_fei_tester::setParameter(), and snl_fei_tester::testLoading().
|
pure virtual |
Obtain the fei::MatrixGraph associated with this matrix
Implemented in fei::Matrix_Impl< T >, fei::MatrixReducer, and fei::Matrix_Local.
Referenced by fei_test_utils::copy_feiMatrix_to_FillableMat(), fei::DirichletBCManager::finalizeBCEqns(), fei::MatrixReducer::getGlobalNumRows(), fei::MatrixReducer::getLocalNumRows(), fei::MatrixReducer::getMatrixGraph(), HexBeam_Functions::load_elem_data(), test_Matrix::matrix_test1(), fei::MatrixReducer::MatrixReducer(), and fei::MatrixReducer::sumInFieldData().
|
pure virtual |
Set the fei::MatrixGraph associated with this matrix
Implemented in fei::Matrix_Impl< T >, fei::MatrixReducer, and fei::Matrix_Local.
Referenced by fei::MatrixReducer::setMatrixGraph().
|
pure virtual |
Get the global number of rows in the matrix.
Implemented in fei::Matrix_Impl< T >, fei::MatrixReducer, and fei::Matrix_Local.
Referenced by test_Matrix::matrix_test1().
|
pure virtual |
Get the local number of rows in the matrix.
Implemented in fei::Matrix_Impl< T >, fei::MatrixReducer, and fei::Matrix_Local.
Referenced by test_Matrix::matrix_test1().
|
pure virtual |
Get the length of a row of the matrix.
row | Global 0-based equation number |
length | Output. Length of the row. |
Implemented in fei::Matrix_Impl< T >, fei::MatrixReducer, and fei::Matrix_Local.
Referenced by fei_test_utils::copy_feiMatrix_to_FillableMat(), snl_fei::LinearSystem_General::getMatrixRow(), fei::MatrixReducer::getRowLength(), test_Matrix::matrix_test1(), and fei::MatrixReducer::writeToFile().
|
pure virtual |
Set a specified scalar throughout the matrix.
Implemented in fei::Matrix_Impl< T >, fei::MatrixReducer, and fei::Matrix_Local.
Referenced by fei::MatrixReducer::putScalar(), and snl_fei_tester::testLoading().
|
pure virtual |
Obtain a copy of the coefficients and indices for a row of the matrix.
row | Global 0-based equation number |
coefs | Caller-allocated array, length 'len', to be filled with coefficients |
indices | Caller-allocated array, length 'len', to be filled with indices. (These indices will be global 0-based equation numbers.) |
len | Length of the caller-allocated coefs and indices arrays |
Implemented in fei::Matrix_Impl< T >, fei::MatrixReducer, and fei::Matrix_Local.
Referenced by fei_test_utils::copy_feiMatrix_to_FillableMat(), fei::MatrixReducer::copyOutRow(), snl_fei::LinearSystem_General::getMatrixRow(), and fei::MatrixReducer::writeToFile().
|
pure virtual |
Sum coefficients into the matrix, adding them to any coefficients that may already exist at the specified row/column locations.
numRows | |
rows | |
numCols | |
cols | |
values | |
format | For compatibility with old FEI elemFormat... 0 means row-wise or row-major, 3 means column-major. Others not recognized |
Implemented in fei::Matrix_Impl< T >, fei::MatrixReducer, and fei::Matrix_Local.
Referenced by fei::impl_utils::add_to_matrix(), fei::Reducer::addMatrixValues(), load_elem_data(), HexBeam_Functions::load_elem_data(), snl_fei_tester::loadElemBlocks(), test_Matrix::serialtest1(), test_Matrix::serialtest2(), test_Matrix::serialtest3(), test_LinearSystem::test2(), test_LinearSystem::test3(), test_Matrix::test3(), test_LinearSystem::test4(), test_Matrix_unit2(), and test_Matrix_unit4().
|
pure virtual |
Copy coefficients into the matrix, overwriting any coefficients that may already exist at the specified row/column locations.
numRows | |
rows | |
numCols | |
cols | |
values | |
format | For compatibility with old FEI elemFormat... 0 means row-wise or row-major, 3 means column-major. Others not recognized |
Implemented in fei::Matrix_Impl< T >, fei::MatrixReducer, and fei::Matrix_Local.
Referenced by fei::impl_utils::add_to_matrix(), fei::Reducer::addMatrixValues(), fei::DirichletBCManager::finalizeBCEqns(), snl_fei::gatherRemoteEssBCs(), and snl_fei::resolveConflictingCRs().
|
pure virtual |
Sum coefficients into the matrix, specifying row/column locations by identifier/fieldID pairs.
fieldID | Input. field-identifier for which data is being input. |
idType | Input. The identifier-type of the identifiers. |
rowID | Input. Identifier in row-space, for which data is being input. |
colID | Input. Identifier in column-space, for which data is being input. |
data | Input. C-style table of data. num-rows is the field-size (i.e., number of scalar components that make up the field) of 'fieldID', as is num-columns. |
format | For compatibility with old FEI elemFormat... 0 means row-wise or row-major, 3 means column-major. Others not recognized |
Implemented in fei::Matrix_Impl< T >, fei::MatrixReducer, and fei::Matrix_Local.
|
pure virtual |
Sum coefficients into the matrix, specifying row/column locations by identifier/fieldID pairs.
fieldID | Input. field-identifier for which data is being input. |
idType | Input. The identifier-type of the identifiers. |
rowID | Input. Identifier in row-space, for which data is being input. |
colID | Input. Identifier in column-space, for which data is being input. |
data | Input. 1-D list representing a packed table of data. Data may be backed in row-major or column-major order and this may be specified with the 'format' argument. The "table" of data is of size num-rows X num-columns and num-rows is the field-size (i.e., number of scalar components that make up the field) of 'fieldID', as is num-columns. |
format | For compatibility with old FEI elemFormat... 0 means row-wise or row-major, 3 means column-major. Others not recognized |
Implemented in fei::Matrix_Impl< T >, fei::MatrixReducer, and fei::Matrix_Local.
|
pure virtual |
Sum coefficients, associated with a connectivity-block that was initialized on the MatrixGraph object, into this matrix.
blockID | |
connectivityID | |
values | |
format | For compatibility with old FEI elemFormat... 0 means row-wise or row-major, 3 means column-major. Others not recognized |
Implemented in fei::Matrix_Impl< T >, fei::MatrixReducer, and fei::Matrix_Local.
|
pure virtual |
Perform any necessary internal communications/synchronizations or other operations appropriate at end of data input. For some implementations this will be a no-op.
Implemented in fei::Matrix_Impl< T >, fei::MatrixReducer, and fei::Matrix_Local.
Referenced by fei::MatrixReducer::globalAssemble(), test_Matrix_unit2(), and test_Matrix_unit4().
|
pure virtual |
Form a matrix-vector product y = 'this' * x
Implemented in fei::Matrix_Impl< T >, fei::MatrixReducer, and fei::Matrix_Local.
Referenced by fei::MatrixReducer::multiply().
|
pure virtual |
perform initial communication to establish message sizes that will be needed for exchanging shared-node data. Called from within gatherFromOverlap usually, doesn't usually need to be explicitly called by client code. (Power users only...)
Implemented in fei::Matrix_Impl< T >, fei::MatrixReducer, and fei::Matrix_Local.
Referenced by fei::MatrixReducer::gatherFromOverlap(), and fei::MatrixReducer::setCommSizes().
|
pure virtual |
After local overlapping data has been input, (e.g., element-data for a finite-element application) call this method to have data that corresponds to shared identifiers be communicated from sharing-but-not- owning processors, to owning processors.
Implemented in fei::Matrix_Impl< T >, fei::MatrixReducer, and fei::Matrix_Local.
Referenced by fei::MatrixReducer::gatherFromOverlap(), snl_fei::gatherRemoteEssBCs(), test_LinearSystem::test2(), test_LinearSystem::test3(), test_Matrix::test3(), and test_LinearSystem::test4().
|
pure virtual |
Write the matrix contents into the specified file.
filename | Text name of the file to be created or overwritten. If in a parallel environment, each processor will take turns writing into the file. |
matrixMarketFormat | Optional argument, defaults to true. If true the contents of the file will be MatrixMarket real array format. If not true, the contents of the file will contain the matrix global dimensions on the first line, and all following lines will contain a space-separated triple with global row index first, global column index second and coefficient value third. Note also that if matrixMarketFormat is true, indices will be output in 1-based form, but if not true, indices will be 0-based. |
Implemented in fei::Matrix_Impl< T >, fei::Matrix_Local, and fei::MatrixReducer.
Referenced by snl_fei_tester::dumpMatrixFiles(), test_Matrix_unit2(), and test_Matrix_unit4().
|
pure virtual |
Write the matrix contents into the specified ostream.
ostrm | ostream to be written to. |
matrixMarketFormat | Optional argument, defaults to true. If true the data will be written in MatrixMarket real array format. If not true, the stream will receive the matrix global dimensions on the first line, and all following lines will contain a space-separated triple with global row index first, global column index second and coefficient value third. Note also that if matrixMarketFormat is true, indices will be output in 1-based form, but if not true, indices will be 0-based. |
Implemented in fei::Matrix_Impl< T >, fei::Matrix_Local, and fei::MatrixReducer.
Referenced by operator<<(), and fei::MatrixReducer::writeToStream().
|
pure virtual |
Query whether the underlying matrix object is a block-entry matrix.
Implemented in fei::Matrix_Impl< T >, fei::Matrix_Local, and fei::MatrixReducer.
Referenced by HexBeam_Functions::load_elem_data(), and fei::MatrixReducer::usingBlockEntryStorage().
|
pure virtual |
Set a "mark" point on the current state of the matrix, so that later a query can be made to see if the matrix has changed since this mark was set.
Implemented in fei::Matrix_Impl< T >, fei::Matrix_Local, and fei::MatrixReducer.
Referenced by fei::MatrixReducer::markState().
|
pure virtual |
Query whether the matrix has changed since markState() was called. If markState() hasn't been called since the matrix was constructed, then this query will return true.
Implemented in fei::Matrix_Impl< T >, fei::Matrix_Local, and fei::MatrixReducer.
Referenced by fei::MatrixReducer::changedSinceMark().
|
inlinevirtual |
Reimplemented in fei::Matrix_Impl< T >.
Definition at line 257 of file fei_Matrix.hpp.
|
inlinevirtual |
Reimplemented in fei::Matrix_Impl< T >.
Definition at line 258 of file fei_Matrix.hpp.