Loading...
Searching...
No Matches
system_solvers_split.cpp
63SplitSystemMatrixAssembler::SplitSystemMatrixAssembler(SystemSplitStrategy splitStrategy, const std::vector<int> &splitSizes)
128SplitSystemSparseMatrixAssembler::SplitSystemSparseMatrixAssembler(const SparseMatrix *matrix, SystemSplitStrategy splitStrategy,
374SplitSystemSolver::SplitSystemSolver(const std::string &prefix, bool flatten, bool transpose, bool debug)
745void SplitSystemSolver::assembly(const Assembler &assembler, const SystemMatrixOrdering &reordering)
874 MatSetSizes(*splitMatrix, nSplitRowsElements, nSplitColsElements, nGlobalSplitRowsElements, nGlobalSplitColsElements);
921 ConstProxyVector<long> assemblerRowPattern(static_cast<std::size_t>(0), assembler.getMaxRowNZCount());
1063 message += " The block size of the assembler is not equal to the block size of the system matrix.";
1109 PetscBool matrixSortedFull = (assemblyOptions.full && assemblyOptions.sorted) ? PETSC_TRUE : PETSC_FALSE;
1382void SplitSystemSolver::vectorsRestore(std::istream &systemStream, const std::string &directory,
1418 generateSplitPermutation(solutionSize, static_cast<long>(solutionGlobalBegin), &m_solutionSplitPermutation);
1620void SplitSystemSolver::generateSplitPermutation(long nItems, long itemsGlobalOffset, IS *permutation) const
1662 ISCreateGeneral(getCommunicator(), nItems, permutationStorage, PETSC_OWN_POINTER, permutation);
1680void SplitSystemSolver::generateSplitIndexes(int split, long nItems, std::vector<std::size_t> *indexes) const
1741std::string SplitSystemSolver::generateSplitPath(const std::string &path, const std::string &index) const
The NaturalSystemMatrixOrdering class defines allows to use a matrix natural ordering.
Definition system_solvers_large.hpp:105
static constexpr __PXV_POINTER__ INTERNAL_STORAGE
Definition proxyVector.hpp:359
SystemSplitStrategy getSplitStrategy() const
Definition system_solvers_split.cpp:74
SplitSystemMatrixAssembler(SystemSplitStrategy splitStrategy, const std::vector< int > &splitSizes)
Definition system_solvers_split.cpp:63
const std::vector< int > & getSplitSizes() const
Definition system_solvers_split.cpp:108
int getSplitCount() const
Definition system_solvers_split.cpp:84
virtual void setupSplitKrylovs()
Definition system_solvers_split.cpp:1551
void resetKSPStatus() override
Definition system_solvers_split.cpp:630
std::vector< int > getSplitSizes() const
Definition system_solvers_split.cpp:443
SystemSplitStrategy getSplitStrategy() const
Definition system_solvers_split.cpp:402
void destroyKSPOptions() override
Definition system_solvers_split.cpp:548
void matrixUpdate(long nRows, const long *rows, const Assembler &assembler)
Definition system_solvers_split.cpp:1039
std::vector< int > getSplitOffsets() const
Definition system_solvers_split.cpp:467
void generateSplitIndexes(int split, long nItems, std::vector< std::size_t > *indexes) const
Definition system_solvers_split.cpp:1680
void vectorsCreateSplitPermutations()
Definition system_solvers_split.cpp:1398
void setupPreconditioner() override
Definition system_solvers_split.cpp:1477
int getSplitCount() const
Definition system_solvers_split.cpp:412
virtual void initializeSplitKSPStatuses()
Definition system_solvers_split.cpp:590
void vectorsReorder(bool invert) override
Definition system_solvers_split.cpp:1367
const KSPStatus & getSplitKSPStatus(int split) const
Definition system_solvers_split.cpp:570
void matrixAssembly(const Assembler &assembler)
Definition system_solvers_split.cpp:818
void vectorsDestroy() override
Definition system_solvers_split.cpp:1436
virtual void resetKSPOptions(KSPOptions *options) const
Definition system_solvers_large.cpp:3423
void matrixRestore(std::istream &systemStream, const std::string &directory, const std::string &prefix, bool redistribute) override
Definition system_solvers_split.cpp:1300
SplitSystemSolver(bool debug=false)
Definition system_solvers_split.cpp:306
virtual void destroySplitKSPOptions()
Definition system_solvers_split.cpp:557
KSPOptions & getSplitKSPOptions(int split)
Definition system_solvers_split.cpp:497
void vectorsRestore(std::istream &systemStream, const std::string &directory, const std::string &prefix) override
Definition system_solvers_split.cpp:1382
void initializeKSPStatus() override
Definition system_solvers_split.cpp:581
void initializeKSPOptions() override
Definition system_solvers_split.cpp:527
void assembly(const SparseMatrix &matrix, SystemSplitStrategy splitStrategy, const std::vector< int > &splitSizes)
Definition system_solvers_split.cpp:699
void restoreInfo(std::istream &systemStream) override
Definition system_solvers_split.cpp:683
void destroyKSPStatus() override
Definition system_solvers_split.cpp:649
virtual void resetSplitKSPStatuses()
Definition system_solvers_split.cpp:639
int getBlockSize() const override
Definition system_solvers_split.cpp:385
virtual void initializeSplitKSPOptions()
Definition system_solvers_split.cpp:536
virtual void fillSplitKSPStatuses()
Definition system_solvers_split.cpp:613
void fillKSPStatus() override
Definition system_solvers_split.cpp:604
void vectorsCreate() override
Definition system_solvers_split.cpp:1353
void setupKrylov() override
Definition system_solvers_split.cpp:1529
void matrixFill(const std::string &filePath) override
Definition system_solvers_split.cpp:1005
virtual void setupSplitPreconditioners()
Definition system_solvers_split.cpp:1508
std::string generateSplitPath(const std::string &path, int i) const
Definition system_solvers_split.cpp:1710
void generateSplitPermutation(long nItems, long itemGlobalOffset, IS *splitReordering) const
Definition system_solvers_split.cpp:1620
virtual void destroySplitKSPStatuses()
Definition system_solvers_split.cpp:658
void update(const SparseMatrix &elements)
Definition system_solvers_split.cpp:758
void matrixDump(std::ostream &systemStream, const std::string &directory, const std::string &prefix) const override
Definition system_solvers_split.cpp:1260
void matrixDestroy() override
Definition system_solvers_split.cpp:1336
void preKrylovSetupActions() override
Definition system_solvers_split.cpp:1578
void exportMatrix(const std::string &filePath, FileFormat exportFormat=FILE_BINARY) const override
Definition system_solvers_split.cpp:1458
void postKSPSolveActions() override
Definition system_solvers_split.cpp:480
void dumpInfo(std::ostream &systemStream) const override
Definition system_solvers_split.cpp:669
The SplitSystemSparseMatrixAssembler class allows to assembly a split system solver from a sparse mat...
Definition system_solvers_split.hpp:58
SplitSystemSparseMatrixAssembler(const SparseMatrix *matrix, SystemSplitStrategy splitStrategy, const std::vector< int > &splitSizes)
Definition system_solvers_split.cpp:128
The SystemMatrixOrdering class provides an interface for defining classes that allows to reorder the ...
Definition system_solvers_large.hpp:70
void dumpMatrix(Mat matrix, const std::string &directory, const std::string &name) const
Definition system_solvers_large.cpp:2378
virtual void vectorsCreate()
Definition system_solvers_large.cpp:1741
bool isPartitioned() const
Definition system_solvers_large.cpp:1210
virtual void initializeKSPOptions()
Definition system_solvers_large.cpp:3413
void fillMatrix(Mat matrix, const std::string &filePath) const
Definition system_solvers_large.cpp:2336
virtual void initializeKSPStatus()
Definition system_solvers_large.cpp:3455
void reorderVector(Vec vector, IS permutations, bool invert) const
Definition system_solvers_large.cpp:2907
virtual void destroyKSPOptions()
Definition system_solvers_large.cpp:3431
virtual void restoreInfo(std::istream &stream)
Definition system_solvers_large.cpp:2233
void restoreMatrix(const std::string &directory, const std::string &name, bool redistribute, Mat *matrix) const
Definition system_solvers_large.cpp:2453
void destroyMatrix(Mat *matrix) const
Definition system_solvers_large.cpp:2567
virtual void dumpInfo(std::ostream &stream) const
Definition system_solvers_large.cpp:2218
virtual void postKSPSolveActions()
Definition system_solvers_large.cpp:1305
const MPI_Comm & getCommunicator() const
Definition system_solvers_large.cpp:3515
virtual void fillKSPStatus()
Definition system_solvers_large.cpp:3463
virtual void preKrylovSetupActions()
Definition system_solvers_large.cpp:3355
virtual void resetKSPStatus()
Definition system_solvers_large.cpp:3484
void createMatrix(int rowBlockSize, int colBlockSize, Mat *matrix) const
Definition system_solvers_large.cpp:2254
virtual void destroyKSPStatus()
Definition system_solvers_large.cpp:3504
virtual void vectorsDestroy()
Definition system_solvers_large.cpp:1839
KSPOptions & getKSPOptions()
Definition system_solvers_large.cpp:3385
virtual void vectorsReorder(bool invert)
Definition system_solvers_large.cpp:1793
virtual void vectorsRestore(std::istream &systemStream, const std::string &directory, const std::string &prefix)
Definition system_solvers_large.cpp:1827
SystemSparseMatrixAssembler(const SparseMatrix *matrix)
Definition system_solvers_large.cpp:119
void write(std::ostream &stream, const std::vector< bool > &container)
Definition binaryUtils.cpp:41
void read(std::istream &stream, std::vector< bool > &container)
Definition binaryUtils.cpp:72
int linearIndexRowMajor(int row, int col, int nRows, int nCols)
Definition matrix_utilities.cpp:65
Definition system_solvers_large.hpp:58
bool full
Controls if the assembler is providing all the non-zero values of a row.
Definition system_solvers_large.hpp:135
