FEI Package Browser (Single Doxygen Collection)
Version of the Day
|
#include <fei_Matrix_core.hpp>
Public Member Functions | |
Matrix_core (fei::SharedPtr< fei::MatrixGraph > matrixGraph, int numLocalEqns) | |
virtual | ~Matrix_core () |
virtual int | giveToMatrix (int numRows, const int *rows, int numCols, const int *cols, const double *const *values, bool sumInto, int format)=0 |
void | setRHS (fei::SharedPtr< fei::Vector > rhsvector) |
void | setSlaveInfo (fei::SharedPtr< fei::MatrixGraph > matrixGraph) |
fei::SharedPtr< fei::MatrixGraph > | getMatrixGraph () const |
const FillableMat * | getRemotelyOwnedMatrix (int proc) const |
FillableMat * | getRemotelyOwnedMatrix (int proc) |
std::map< int, FillableMat * > & | getRemotelyOwnedMatrices () |
void | putScalar_remotelyOwned (double scalar) |
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 ¶mset) |
virtual int | giveToUnderlyingMatrix (int numRows, const int *rows, int numCols, const int *cols, const double *const *values, bool sumInto, int format)=0 |
virtual int | giveToBlockMatrix (int numRows, const int *rows, int numCols, const int *cols, const double *const *values, bool sumInto)=0 |
virtual int | giveToUnderlyingBlockMatrix (int row, int rowDim, int numCols, const int *cols, const int *LDAs, const int *colDims, const double *const *values, bool sumInto)=0 |
void | setName (const char *name) |
void | setCommSizes () |
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::VectorSpace > | vecSpace () const |
fei::SharedPtr< fei::VectorSpace > | vecSpace () |
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) const |
Protected Member Functions inherited from fei::Logger | |
Logger () | |
virtual | ~Logger () |
void | setOutputLevel (OutputLevel olevel) |
void | addLogID (int ID) |
void | addLogEqn (int eqn) |
bool | isLogID (int ID) |
bool | isLogEqn (int eqn) |
std::set< int > & | getLogIDs () |
std::set< int > & | getLogEqns () |
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::EqnComm > | eqnComm_ |
Protected Attributes inherited from fei::Logger | |
OutputLevel | output_level_ |
FEI_OSTREAM * | output_stream_ |
std::set< int > | logIDs_ |
std::set< int > | logEqns_ |
Private Attributes | |
fei::SharedPtr< fei::Vector > | rhsVector_ |
MPI_Comm | comm_ |
int | localProc_ |
int | numProcs_ |
fei::SharedPtr< fei::VectorSpace > | vecSpace_ |
fei::SharedPtr< fei::MatrixGraph > | matrixGraph_ |
std::map< int, FillableMat * > | remotelyOwned_ |
FillableMat * | remotelyOwned_last_requested_ |
std::vector< int > | sendProcs_ |
std::vector< int > | recvProcs_ |
std::vector< std::vector< char > > | recv_chars_ |
std::vector< std::vector< char > > | send_chars_ |
bool | sendRecvProcsNeedUpdated_ |
int | proc_last_requested_ |
bool | haveBlockMatrix_ |
bool | haveFEMatrix_ |
std::vector< int > | globalOffsets_ |
int | firstLocalOffset_ |
int | lastLocalOffset_ |
Definition at line 25 of file fei_Matrix_core.hpp.
fei::Matrix_core::Matrix_core | ( | fei::SharedPtr< fei::MatrixGraph > | matrixGraph, |
int | numLocalEqns | ||
) |
Definition at line 32 of file fei_Matrix_core.cpp.
References comm_, eqnComm_, firstLocalOffset_, fei::SharedPtr< T >::get(), fei::VectorSpace::getGlobalIndexOffsets(), fei::MatrixGraph::getRowSpace(), globalOffsets_, fei::VectorSpace::initCompleteAlreadyCalled(), lastLocalOffset_, fei::localProc(), localProc_, fei::numProcs(), numProcs_, setName(), and vecSpace_.
|
virtual |
Definition at line 113 of file fei_Matrix_core.cpp.
|
pure virtual |
Implemented in fei::Matrix_Impl< T >.
|
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 320 of file fei_Matrix_core.cpp.
Referenced by fei::Reducer::addMatrixValues(), fei::Matrix_Local::giveToMatrix(), and test_matrix_unit1().
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 166 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.
|
inline |
Definition at line 81 of file fei_Matrix_core.hpp.
References matrixGraph_.
Referenced by fei::Matrix_Impl< T >::getMatrixGraph().
|
inline |
Definition at line 83 of file fei_Matrix_core.hpp.
References proc_last_requested_, remotelyOwned_, and remotelyOwned_last_requested_.
|
inline |
Definition at line 98 of file fei_Matrix_core.hpp.
References proc_last_requested_, remotelyOwned_, and remotelyOwned_last_requested_.
std::map< int, fei::FillableMat * > & fei::Matrix_core::getRemotelyOwnedMatrices | ( | ) |
Definition at line 87 of file fei_Matrix_core.cpp.
Referenced by snl_fei::LinearSystem_FEData::implementBCs(), and fei::Matrix_Impl< T >::Matrix_Impl().
void fei::Matrix_core::putScalar_remotelyOwned | ( | double | scalar | ) |
Definition at line 93 of file fei_Matrix_core.cpp.
References fei::MatrixTraits< T >::setValues().
void fei::Matrix_core::setEqnComm | ( | fei::SharedPtr< fei::EqnComm > | eqnComm | ) |
Definition at line 104 of file fei_Matrix_core.cpp.
References fei::EqnComm::getGlobalOffsets().
Referenced by fei::MatrixReducer::MatrixReducer().
|
protected |
Definition at line 124 of file fei_Matrix_core.cpp.
References fei::Param::BAD_TYPE, fei::ParameterSet::get(), fei::LogManager::getLogManager(), fei::Param::getStringValue(), fei::Param::getType(), fei::LogManager::setOutputLevel(), fei::Param::STRING, and fei::utils::string_to_output_level().
Referenced by fei::Matrix_Impl< T >::parameters().
|
protectedpure virtual |
Implemented in fei::Matrix_Impl< T >.
|
protectedpure virtual |
Implemented in fei::Matrix_Impl< T >.
|
protectedpure virtual |
Implemented in fei::Matrix_Impl< T >.
|
protected |
Definition at line 143 of file fei_Matrix_core.cpp.
Referenced by Matrix_core().
|
protected |
Definition at line 171 of file fei_Matrix_core.cpp.
References fei::mirrorProcs(), fei::impl_utils::num_bytes_FillableMat(), and fei::impl_utils::pack_FillableMat().
Referenced by fei::Matrix_Impl< T >::setCommSizes().
|
protected |
Definition at line 237 of file fei_Matrix_core.cpp.
References FEI_COUT, FEI_DENSE_ROW, FEI_ENDL, fei::CSRMat::getGraph(), fei::CSRMat::getNumRows(), fei::CSRMat::getPackedCoefs(), fei::numProcs(), fei::impl_utils::pack_FillableMat(), fei::SparseRowGraph::packedColumnIndices, fei::SparseRowGraph::rowNumbers, fei::SparseRowGraph::rowOffsets, fei::FillableMat::setValues(), and fei::impl_utils::unpack_CSRMat().
Referenced by fei::Matrix_Impl< T >::gatherFromOverlap().
|
protected |
Definition at line 399 of file fei_Matrix_core.cpp.
References fei::MatrixGraph::getRowSpace().
|
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 376 of file fei_Matrix_core.cpp.
|
protected |
Definition at line 350 of file fei_Matrix_core.cpp.
References ERReturn, and snl_fei::PointBlockMap::getPtEqnInfo().
|
inlineprotected |
Definition at line 178 of file fei_Matrix_core.hpp.
References comm_.
|
inlineprotected |
Definition at line 180 of file fei_Matrix_core.hpp.
References vecSpace_.
|
inlineprotected |
Definition at line 181 of file fei_Matrix_core.hpp.
References vecSpace_.
|
inlineprotected |
Definition at line 183 of file fei_Matrix_core.hpp.
References globalOffsets_.
Referenced by fei::Matrix_Impl< T >::getGlobalNumRows().
|
inlineprotected |
Definition at line 184 of file fei_Matrix_core.hpp.
References globalOffsets_.
|
inlineprotected |
Definition at line 186 of file fei_Matrix_core.hpp.
References firstLocalOffset_.
Referenced by fei::Matrix_Impl< T >::getLocalNumRows().
|
inlineprotected |
Definition at line 187 of file fei_Matrix_core.hpp.
References lastLocalOffset_.
Referenced by fei::Matrix_Impl< T >::getLocalNumRows().
|
inlineprotected |
Definition at line 189 of file fei_Matrix_core.hpp.
References numProcs_.
Referenced by fei::Matrix_Impl< T >::getGlobalNumRows().
|
inlineprotected |
Definition at line 190 of file fei_Matrix_core.hpp.
References localProc_.
|
inlineprotected |
Definition at line 192 of file fei_Matrix_core.hpp.
References haveBlockMatrix_.
Referenced by fei::Matrix_Impl< T >::typeName(), and fei::Matrix_Impl< T >::usingBlockEntryStorage().
|
inlineprotected |
Definition at line 193 of file fei_Matrix_core.hpp.
References haveBlockMatrix_.
Referenced by fei::Matrix_Impl< T >::Matrix_Impl().
|
inlineprotected |
Definition at line 195 of file fei_Matrix_core.hpp.
References haveFEMatrix_.
Referenced by fei::Matrix_Impl< T >::typeName().
|
inlineprotected |
Definition at line 196 of file fei_Matrix_core.hpp.
References haveFEMatrix_.
Referenced by fei::Matrix_Impl< T >::Matrix_Impl().
|
protected |
Definition at line 152 of file fei_Matrix_core.cpp.
|
protected |
Definition at line 200 of file fei_Matrix_core.hpp.
|
protected |
Definition at line 202 of file fei_Matrix_core.hpp.
|
protected |
Definition at line 203 of file fei_Matrix_core.hpp.
|
protected |
Definition at line 205 of file fei_Matrix_core.hpp.
|
protected |
Definition at line 207 of file fei_Matrix_core.hpp.
|
protected |
Definition at line 208 of file fei_Matrix_core.hpp.
|
protected |
Definition at line 211 of file fei_Matrix_core.hpp.
Referenced by Matrix_core().
|
private |
Definition at line 214 of file fei_Matrix_core.hpp.
|
private |
Definition at line 216 of file fei_Matrix_core.hpp.
Referenced by getCommunicator(), and Matrix_core().
|
private |
Definition at line 218 of file fei_Matrix_core.hpp.
Referenced by localProc(), and Matrix_core().
|
private |
Definition at line 218 of file fei_Matrix_core.hpp.
Referenced by Matrix_core(), and numProcs().
|
private |
Definition at line 220 of file fei_Matrix_core.hpp.
Referenced by Matrix_core(), and vecSpace().
|
private |
Definition at line 221 of file fei_Matrix_core.hpp.
Referenced by getMatrixGraph().
|
private |
Definition at line 223 of file fei_Matrix_core.hpp.
Referenced by getRemotelyOwnedMatrix().
|
mutableprivate |
Definition at line 224 of file fei_Matrix_core.hpp.
Referenced by getRemotelyOwnedMatrix().
|
private |
Definition at line 225 of file fei_Matrix_core.hpp.
|
private |
Definition at line 226 of file fei_Matrix_core.hpp.
|
private |
Definition at line 227 of file fei_Matrix_core.hpp.
|
private |
Definition at line 228 of file fei_Matrix_core.hpp.
|
private |
Definition at line 229 of file fei_Matrix_core.hpp.
|
mutableprivate |
Definition at line 230 of file fei_Matrix_core.hpp.
Referenced by getRemotelyOwnedMatrix().
|
private |
Definition at line 232 of file fei_Matrix_core.hpp.
Referenced by haveBlockMatrix(), and setBlockMatrix().
|
private |
Definition at line 233 of file fei_Matrix_core.hpp.
Referenced by haveFEMatrix(), and setFEMatrix().
|
private |
Definition at line 235 of file fei_Matrix_core.hpp.
Referenced by globalOffsets(), and Matrix_core().
|
private |
Definition at line 236 of file fei_Matrix_core.hpp.
Referenced by firstLocalOffset(), and Matrix_core().
|
private |
Definition at line 236 of file fei_Matrix_core.hpp.
Referenced by lastLocalOffset(), and Matrix_core().