9 #ifndef _snl_fei_Broker_LinSysCore_hpp_
10 #define _snl_fei_Broker_LinSysCore_hpp_
29 #define fei_file "snl_fei_Broker_LinSysCore.hpp"
89 bool zeroSharedRows =
true;
91 zeroSharedRows =
false;
138 std::vector<int> globalOffsets;
139 std::vector<int> globalBlkOffsets;
144 std::vector<int> lsizes(num_procs, 0);
145 std::vector<int> gsizes(num_procs, 0);
146 lsizes[local_proc] = localsize;
148 globalOffsets.resize(num_procs+1);
150 for(
int p=0; p<num_procs; ++p) {
151 globalOffsets[p] = offset;
154 globalOffsets[num_procs] = offset;
155 globalBlkOffsets = globalOffsets;
164 numLocalEqns_ = globalOffsets[local_proc+1]-globalOffsets[local_proc];
168 &globalBlkOffsets[0],
170 &globalBlkOffsets[0]));
194 std::vector<int>& rowNumbers = localSRGraph->
rowNumbers;
195 int numLocalRows = rowNumbers.size();
196 int* rowOffsets = &(localSRGraph->
rowOffsets[0]);
200 int numGlobalNonzeros = 0;
203 std::vector<int*> colPtrs(numLocalRows);
204 std::vector<int> ptRowsPerBlkRow(numLocalRows, 1);
205 std::vector<int> rowLengths(numLocalRows);
206 int* rowLengthsPtr = &rowLengths[0];
208 for(
int i=0; i<numLocalRows; ++i) {
209 colPtrs[i] = &(nonzeros[rowOffsets[i]]);
210 rowLengthsPtr[i] = rowOffsets[i+1]-rowOffsets[i];
220 &ptRowsPerBlkRow[0]));
240 #endif // _snl_fei_Broker_LinSysCore_hpp_
int GlobalSum(MPI_Comm comm, std::vector< T > &local, std::vector< T > &global)
MPI_Comm getCommunicator() const
fei::SharedPtr< fei::Matrix > createMatrix()
virtual int setLookup(Lookup &lookup)=0
fei::SharedPtr< LinearSystemCore > linsyscore_
std::vector< int > rowNumbers
virtual int getBlkEqnSize(int blkEqn)=0
virtual fei::SharedPtr< fei::SparseRowGraph > createGraph(bool blockEntryGraph, bool localRowGraph_includeSharedRows=false)=0
std::vector< int > packedColumnIndices
fei::SharedPtr< fei::Reducer > reducer_
virtual ~Broker_LinSysCore()
std::vector< int > rowOffsets
fei::SharedPtr< fei::LinearSystem > createLinearSystem()
virtual int setGlobalOffsets(int len, int *nodeOffsets, int *eqnOffsets, int *blkEqnOffsets)=0
virtual fei::SharedPtr< fei::VectorSpace > getRowSpace()=0
virtual int setMatrixStructure(int **ptColIndices, int *ptRrowLengths, int **blkColIndices, int *blkRowLengths, int *ptRowsPerBlkRow)=0
void getGlobalBlkIndexOffsets(std::vector< int > &globalBlkOffsets) const
void setMatrixGraph(fei::SharedPtr< fei::MatrixGraph > matrixGraph)
fei::SharedPtr< fei::MatrixGraph > matrixGraph_
void getGlobalIndexOffsets(std::vector< int > &globalOffsets) const
int GlobalMax(MPI_Comm comm, std::vector< T > &local, std::vector< T > &global)
std::vector< int > & getLocalReducedEqns()
int localProc(MPI_Comm comm)
fei::SharedPtr< fei::Vector > createVector(bool isSolutionVector=false)
int numProcs(MPI_Comm comm)
Broker_LinSysCore(fei::SharedPtr< LinearSystemCore > lsc, fei::SharedPtr< fei::MatrixGraph > matrixGraph, fei::SharedPtr< fei::Reducer > reducer, bool blockMatrix)