#include <fei_Matrix_core.hpp>
|
static void | copyTransposeToWorkArrays (int numRows, int numCols, const double *const *values, std::vector< double > &work_1D, std::vector< const double *> &work_2D) |
|
|
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 |
|
| 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 () |
|
Definition at line 25 of file fei_Matrix_core.hpp.
◆ Matrix_core()
Definition at line 32 of file fei_Matrix_core.cpp.
References comm_, eqnComm_, firstLocalOffset_, fei::SharedPtr< T >::get(), fei::VectorSpace::getGlobalIndexOffsets(), fei::EqnComm::getGlobalOffsets(), fei::MatrixGraph::getRowSpace(), globalOffsets_, fei::VectorSpace::initCompleteAlreadyCalled(), lastLocalOffset_, fei::localProc(), localProc_, fei::numProcs(), numProcs_, fei::SharedPtr< T >::reset(), setName(), and vecSpace_.
◆ ~Matrix_core()
fei::Matrix_core::~Matrix_core |
( |
| ) |
|
|
virtual |
◆ giveToMatrix()
virtual int fei::Matrix_core::giveToMatrix |
( |
int |
numRows, |
|
|
const int * |
rows, |
|
|
int |
numCols, |
|
|
const int * |
cols, |
|
|
const double *const * |
values, |
|
|
bool |
sumInto, |
|
|
int |
format |
|
) |
| |
|
pure virtual |
◆ copyTransposeToWorkArrays()
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).
- Parameters
-
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().
◆ setRHS()
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.
◆ setSlaveInfo()
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.
◆ getMatrixGraph()
◆ getRemotelyOwnedMatrix() [1/2]
const FillableMat* fei::Matrix_core::getRemotelyOwnedMatrix |
( |
int |
proc | ) |
const |
|
inline |
◆ getRemotelyOwnedMatrix() [2/2]
FillableMat* fei::Matrix_core::getRemotelyOwnedMatrix |
( |
int |
proc | ) |
|
|
inline |
◆ getRemotelyOwnedMatrices()
std::map< int, fei::FillableMat * > & fei::Matrix_core::getRemotelyOwnedMatrices |
( |
| ) |
|
◆ putScalar_remotelyOwned()
void fei::Matrix_core::putScalar_remotelyOwned |
( |
double |
scalar | ) |
|
◆ setEqnComm()
◆ parameters()
◆ giveToUnderlyingMatrix()
virtual int fei::Matrix_core::giveToUnderlyingMatrix |
( |
int |
numRows, |
|
|
const int * |
rows, |
|
|
int |
numCols, |
|
|
const int * |
cols, |
|
|
const double *const * |
values, |
|
|
bool |
sumInto, |
|
|
int |
format |
|
) |
| |
|
protectedpure virtual |
◆ giveToBlockMatrix()
virtual int fei::Matrix_core::giveToBlockMatrix |
( |
int |
numRows, |
|
|
const int * |
rows, |
|
|
int |
numCols, |
|
|
const int * |
cols, |
|
|
const double *const * |
values, |
|
|
bool |
sumInto |
|
) |
| |
|
protectedpure virtual |
◆ giveToUnderlyingBlockMatrix()
virtual int fei::Matrix_core::giveToUnderlyingBlockMatrix |
( |
int |
row, |
|
|
int |
rowDim, |
|
|
int |
numCols, |
|
|
const int * |
cols, |
|
|
const int * |
LDAs, |
|
|
const int * |
colDims, |
|
|
const double *const * |
values, |
|
|
bool |
sumInto |
|
) |
| |
|
protectedpure virtual |
◆ setName()
void fei::Matrix_core::setName |
( |
const char * |
name | ) |
|
|
protected |
◆ setCommSizes()
void fei::Matrix_core::setCommSizes |
( |
| ) |
|
|
protected |
◆ gatherFromOverlap()
int fei::Matrix_core::gatherFromOverlap |
( |
bool |
accumulate | ) |
|
|
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().
◆ setMatrixGraph()
◆ copyPointRowsToBlockRow()
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 376 of file fei_Matrix_core.cpp.
◆ convertPtToBlk()
int fei::Matrix_core::convertPtToBlk |
( |
int |
numRows, |
|
|
const int * |
rows, |
|
|
int |
numCols, |
|
|
const int * |
cols, |
|
|
int * |
blkRows, |
|
|
int * |
blkRowOffsets, |
|
|
int * |
blkCols, |
|
|
int * |
blkColOffsets |
|
) |
| |
|
protected |
◆ getCommunicator()
MPI_Comm fei::Matrix_core::getCommunicator |
( |
| ) |
const |
|
inlineprotected |
◆ vecSpace() [1/2]
◆ vecSpace() [2/2]
◆ globalOffsets() [1/2]
std::vector<int>& fei::Matrix_core::globalOffsets |
( |
| ) |
|
|
inlineprotected |
◆ globalOffsets() [2/2]
const std::vector<int>& fei::Matrix_core::globalOffsets |
( |
| ) |
const |
|
inlineprotected |
◆ firstLocalOffset()
int fei::Matrix_core::firstLocalOffset |
( |
| ) |
const |
|
inlineprotected |
◆ lastLocalOffset()
int fei::Matrix_core::lastLocalOffset |
( |
| ) |
const |
|
inlineprotected |
◆ numProcs()
int fei::Matrix_core::numProcs |
( |
| ) |
const |
|
inlineprotected |
◆ localProc()
int fei::Matrix_core::localProc |
( |
| ) |
const |
|
inlineprotected |
◆ haveBlockMatrix()
bool fei::Matrix_core::haveBlockMatrix |
( |
| ) |
const |
|
inlineprotected |
◆ setBlockMatrix()
void fei::Matrix_core::setBlockMatrix |
( |
bool |
flag | ) |
|
|
inlineprotected |
◆ haveFEMatrix()
bool fei::Matrix_core::haveFEMatrix |
( |
| ) |
const |
|
inlineprotected |
◆ setFEMatrix()
void fei::Matrix_core::setFEMatrix |
( |
bool |
flag | ) |
|
|
inlineprotected |
◆ getOwnerProc()
int fei::Matrix_core::getOwnerProc |
( |
int |
globalEqn | ) |
const |
|
protected |
◆ name_
std::string fei::Matrix_core::name_ |
|
protected |
◆ work_indices_
std::vector<int> fei::Matrix_core::work_indices_ |
|
protected |
◆ work_indices2_
std::vector<int> fei::Matrix_core::work_indices2_ |
|
protected |
◆ work_ints_
std::vector<int> fei::Matrix_core::work_ints_ |
|
protected |
◆ work_data1D_
std::vector<double> fei::Matrix_core::work_data1D_ |
|
protected |
◆ work_data2D_
std::vector<const double*> fei::Matrix_core::work_data2D_ |
|
protected |
◆ eqnComm_
◆ rhsVector_
◆ comm_
◆ localProc_
int fei::Matrix_core::localProc_ |
|
private |
◆ numProcs_
int fei::Matrix_core::numProcs_ |
|
private |
◆ vecSpace_
◆ matrixGraph_
◆ remotelyOwned_
std::map<int,FillableMat*> fei::Matrix_core::remotelyOwned_ |
|
private |
◆ remotelyOwned_last_requested_
FillableMat* fei::Matrix_core::remotelyOwned_last_requested_ |
|
mutableprivate |
◆ sendProcs_
std::vector<int> fei::Matrix_core::sendProcs_ |
|
private |
◆ recvProcs_
std::vector<int> fei::Matrix_core::recvProcs_ |
|
private |
◆ recv_chars_
std::vector<std::vector<char> > fei::Matrix_core::recv_chars_ |
|
private |
◆ send_chars_
std::vector<std::vector<char> > fei::Matrix_core::send_chars_ |
|
private |
◆ sendRecvProcsNeedUpdated_
bool fei::Matrix_core::sendRecvProcsNeedUpdated_ |
|
private |
◆ proc_last_requested_
int fei::Matrix_core::proc_last_requested_ |
|
mutableprivate |
◆ haveBlockMatrix_
bool fei::Matrix_core::haveBlockMatrix_ |
|
private |
◆ haveFEMatrix_
bool fei::Matrix_core::haveFEMatrix_ |
|
private |
◆ globalOffsets_
std::vector<int> fei::Matrix_core::globalOffsets_ |
|
private |
◆ firstLocalOffset_
int fei::Matrix_core::firstLocalOffset_ |
|
private |
◆ lastLocalOffset_
int fei::Matrix_core::lastLocalOffset_ |
|
private |
The documentation for this class was generated from the following files: