1 #ifndef _fei_Matrix_core_hpp_
2 #define _fei_Matrix_core_hpp_
33 int numCols,
const int* cols,
34 const double*
const* values,
63 const double*
const* values,
64 std::vector<double>& work_1D,
65 std::vector<const double*>& work_2D);
89 std::map<int,FillableMat*>::const_iterator it =
remotelyOwned_.find(proc);
91 remote_mat = it->second;
105 std::map<int,FillableMat*>::iterator it =
remotelyOwned_.find(proc);
111 remote_mat = it->second;
114 return( remote_mat );
127 int numCols,
const int* cols,
128 const double*
const* values,
133 int numCols,
const int* cols,
134 const double*
const* values,
143 const double*
const* values,
146 void setName(
const char* name);
164 const double*
const* ptValues,
166 const int* blkColDims,
int lastLocalOffset() const
const FillableMat * getRemotelyOwnedMatrix(int proc) const
std::map< int, FillableMat * > & getRemotelyOwnedMatrices()
MPI_Comm getCommunicator() const
FillableMat * remotelyOwned_last_requested_
std::vector< std::vector< char > > send_chars_
fei::SharedPtr< fei::Vector > rhsVector_
int getOwnerProc(int globalEqn) const
Matrix_core(fei::SharedPtr< fei::MatrixGraph > matrixGraph, int numLocalEqns)
virtual int giveToMatrix(int numRows, const int *rows, int numCols, const int *cols, const double *const *values, bool sumInto, int format)=0
std::map< int, FillableMat * > remotelyOwned_
std::vector< int > & globalOffsets()
std::vector< int > work_indices2_
fei::SharedPtr< fei::MatrixGraph > matrixGraph_
void setMatrixGraph(fei::SharedPtr< fei::MatrixGraph > matrixGraph)
bool haveBlockMatrix() const
int gatherFromOverlap(bool accumulate)
std::vector< int > work_ints_
const fei::SharedPtr< fei::VectorSpace > vecSpace() const
std::vector< double > work_data1D_
void setRHS(fei::SharedPtr< fei::Vector > rhsvector)
int copyPointRowsToBlockRow(int numPtRows, int numPtCols, const double *const *ptValues, int numBlkCols, const int *blkColDims, double **blkValues)
bool sendRecvProcsNeedUpdated_
std::vector< int > recvProcs_
std::vector< int > globalOffsets_
int convertPtToBlk(int numRows, const int *rows, int numCols, const int *cols, int *blkRows, int *blkRowOffsets, int *blkCols, int *blkColOffsets)
int firstLocalOffset() const
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
static void copyTransposeToWorkArrays(int numRows, int numCols, const double *const *values, std::vector< double > &work_1D, std::vector< const double * > &work_2D)
FillableMat * getRemotelyOwnedMatrix(int proc)
std::vector< const double * > work_data2D_
void setFEMatrix(bool flag)
void setEqnComm(fei::SharedPtr< fei::EqnComm > eqnComm)
virtual int giveToBlockMatrix(int numRows, const int *rows, int numCols, const int *cols, const double *const *values, bool sumInto)=0
fei::SharedPtr< fei::VectorSpace > vecSpace()
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
bool haveFEMatrix() const
void setSlaveInfo(fei::SharedPtr< fei::MatrixGraph > matrixGraph)
std::vector< int > work_indices_
std::vector< int > sendProcs_
std::vector< std::vector< char > > recv_chars_
fei::SharedPtr< fei::EqnComm > eqnComm_
fei::SharedPtr< fei::VectorSpace > vecSpace_
fei::SharedPtr< fei::MatrixGraph > getMatrixGraph() const
const std::vector< int > & globalOffsets() const
void setName(const char *name)
void putScalar_remotelyOwned(double scalar)
void setBlockMatrix(bool flag)