Loading...
Searching...
No Matches
system_matrix.cpp
164SparseMatrix::SparseMatrix(MPI_Comm communicator, bool partitioned, long nRows, long nCols, long nNZ)
186SparseMatrix::SparseMatrix(MPI_Comm communicator, bool partitioned, int blockSize, long nRows, long nCols, long nNZ)
359void SparseMatrix::_initialize(bool partitioned, int blockSize, long nRows, long nCols, long nNZ)
484 stream << padding << " Block size ............................................ " << blockSize << std::endl;
531 double valueStorageMemory = static_cast<double>(nNZElements * sizeof(decltype(m_values)::value_type));
535 stream << padding << " Maximum number of non-zero blocks per row ............. " << maxRowNZBlocks << std::endl;
536 stream << padding << " Maximum number of non-zero elements per row ........... " << maxRowNZElements << std::endl;
537 stream << padding << " Number of block rows .................................. " << nRows << std::endl;
538 stream << padding << " Number of block columns ............................... " << nCols << std::endl;
539 stream << padding << " Number of non-zero blocks (pattern) ................... " << nNZBlocks << std::endl;
540 stream << padding << " Number of non-zero elements (pattern) ................. " << nNZElements << std::endl;
541 stream << padding << " Number of non-zero blocks (non-neglibile values) ...... " << nNZBlockValues << std::endl;
542 stream << padding << " Number of non-zero elements (non-neglibile values) .... " << nNZElementValues << std::endl;
543 stream << padding << " Sparsity of the blocks (pattern) ...................... " << blockSparsity << std::endl;
544 stream << padding << " Sparsity of the elements (pattern) .................... " << elementSparsity << std::endl;
545 stream << padding << " Sparsity of the blocks (non-neglibile values) ......... " << blockValueSparsity << std::endl;
546 stream << padding << " Sparsity of the elements (non-neglibile values) ....... " << elementValueSparsity << std::endl;
584 MPI_Allreduce(&maxRowNZElements, &maxGlobalRowNZElements, 1, MPI_LONG, MPI_MAX, getCommunicator());
590 MPI_Allreduce(&nNZElementValues, &nGlobalNZElementValues, 1, MPI_LONG, MPI_SUM, getCommunicator());
596 double globalBlockSparsity = static_cast<double>(nGlobalBlocks - nGlobalNZBlocks) / nGlobalBlocks;
597 double globalElementSparsity = static_cast<double>(nGlobalElements - nGlobalNZElements) / nGlobalElements;
599 double globalBlockValueSparsity = static_cast<double>(nGlobalBlocks - nGlobalNZBlockValues) / nGlobalBlocks;
600 double globalElementValueSparsity = static_cast<double>(nGlobalElements - nGlobalNZElementValues) / nGlobalElements;
604 MPI_Allreduce(&valueStorageMemory, &valueStorageGlobalMemory, 1, valueMPIDataType, MPI_SUM, getCommunicator());
608 stream << padding << " Maximum number of non-zero blocks per row ............. " << maxGlobalRowNZBlocks << std::endl;
609 stream << padding << " Maximum number of non-zero elements per row ........... " << maxGlobalRowNZElements << std::endl;
610 stream << padding << " Number of block columns ............................... " << nGlobalCols << std::endl;
611 stream << padding << " Number of block rows .................................. " << nGlobalRows << std::endl;
612 stream << padding << " Number of non-zero blocks (pattern) ................... " << nGlobalNZBlocks << std::endl;
613 stream << padding << " Number of non-zero elements (pattern) ................. " << nGlobalNZElements << std::endl;
614 stream << padding << " Number of non-zero blocks (non-neglibile values) ...... " << nGlobalNZBlockValues << std::endl;
615 stream << padding << " Number of non-zero elements (non-neglibile values) .... " << nGlobalNZElementValues << std::endl;
616 stream << padding << " Sparsity of the blocks (pattern) ...................... " << globalBlockSparsity << std::endl;
617 stream << padding << " Sparsity of the elements (pattern) .................... " << globalElementSparsity << std::endl;
618 stream << padding << " Sparsity of the blocks (non-neglibile values) ......... " << globalBlockValueSparsity << std::endl;
619 stream << padding << " Sparsity of the elements (non-neglibile values) ....... " << globalElementValueSparsity << std::endl;
1214void SparseMatrix::addRow(const std::vector<long> &rowPattern, const std::vector<double> &rowValues)
1397 transpose = std::unique_ptr<SparseMatrix>(new SparseMatrix(m_communicator, m_partitioned, m_nCols, m_nRows, m_nNZ));
1409 transpose->m_pattern.initialize(transpose->m_nRows, transposeRowSizes.data(), static_cast<long>(0));
1419 transpose->m_maxRowNZ = std::max(static_cast<long>(transposeRowSizes[i]), transpose->m_maxRowNZ);
void reserve(std::size_t nVectors, std::size_t nItems=0)
Definition flatVector2D.tpp:401
void set(__PXV_POINTER__ data, std::size_t size)
Definition proxyVector.tpp:732
const MPI_Comm & getCommunicator() const
Definition system_matrix.cpp:955
long getColElementCount() const
Definition system_matrix.cpp:844
void initialize(long nRows, long nCols, long nNZ)
Definition system_matrix.cpp:317
long getColGlobalCount() const
Definition system_matrix.cpp:1038
ConstProxyVector< double > getRowValues(long row) const
Definition system_matrix.cpp:1287
long getColGlobalOffset() const
Definition system_matrix.cpp:1048
long getNZGlobalElementCount() const
Definition system_matrix.cpp:1102
void initializeValueStorage()
Definition system_matrix.cpp:683
long getNZElementCount() const
Definition system_matrix.cpp:888
long getRowNZElementCount(long row) const
Definition system_matrix.cpp:918
virtual void display(std::ostream &stream, double negligiblity, int indent=0) const
Definition system_matrix.cpp:474
long getRowGlobalCount() const
Definition system_matrix.cpp:994
std::unique_ptr< SparseMatrix > computeTranspose() const
Definition system_matrix.cpp:1387
long getRowElementCount() const
Definition system_matrix.cpp:832
void initializePatternStorage()
Definition system_matrix.cpp:641
std::vector< long > extractLocalGlobalRows() const
Definition system_matrix.cpp:1126
void squeezePatternStorage()
Definition system_matrix.cpp:665
long getRowGlobalElementCount() const
Definition system_matrix.cpp:1014
long getMaxRowNZGlobalElementCount() const
Definition system_matrix.cpp:1114
std::vector< long > extractGhostGlobalRows() const
Definition system_matrix.cpp:1147
ConstProxyVector< long > getRowPattern(long row) const
Definition system_matrix.cpp:1260
long getMaxRowNZElementCount() const
Definition system_matrix.cpp:932
long getNZGlobalCount() const
Definition system_matrix.cpp:1082
long getRowGlobalElementOffset() const
Definition system_matrix.cpp:1026
void addRow(const std::vector< long > &rowPattern, const std::vector< double > &rowValues)
Definition system_matrix.cpp:1214
long * getRowPatternData(long row)
Definition system_matrix.cpp:1318
long getColGlobalElementCount() const
Definition system_matrix.cpp:1058
long getColGlobalElementOffset() const
Definition system_matrix.cpp:1070
std::vector< long > extractLocalGlobalCols() const
Definition system_matrix.cpp:1157
long getRowNZCount(long row) const
Definition system_matrix.cpp:866
void clearValueStorage(bool release)
Definition system_matrix.cpp:717
std::vector< long > extractGhostGlobalCols() const
Definition system_matrix.cpp:1181
void clearPatternStorage(bool release)
Definition system_matrix.cpp:675
double * getRowValuesData(long row)
Definition system_matrix.cpp:1350
long getRowGlobalOffset() const
Definition system_matrix.cpp:1004
long getMaxRowNZGlobalCount() const
Definition system_matrix.cpp:1092
