25#ifndef __BITPIT_SYSTEM_SOLVERS_LARGE_TPP__
26#define __BITPIT_SYSTEM_SOLVERS_LARGE_TPP__
47template<
typename RowRankStorage,
typename ColRankStorage>
49 const ColRankStorage *colRankStorage)
50 : m_rowRankStorage(rowRankStorage), m_colRankStorage(colRankStorage)
64template<
typename RowRankStorage,
typename ColRankStorage>
67 return (*m_rowRankStorage)[row];
80template<
typename RowRankStorage,
typename ColRankStorage>
83 return (*m_colRankStorage)[col];
94template<
typename DerivedSystemSolver>
102 setReordering(assembler.getRowCount(), assembler.getColCount(), reordering);
104#if BITPIT_ENABLE_MPI == 1
106 setCommunicator(assembler.getCommunicator());
109 m_partitioned = assembler.isPartitioned();
113 static_cast<DerivedSystemSolver &
>(*this).matrixAssembly(assembler);
138template<
typename DerivedSystemSolver>
139void SystemSolver::update(
long nRows,
const long *rows,
const typename DerivedSystemSolver::Assembler &assembler)
143 throw std::runtime_error(
"Unable to update the system. The system is not yet assembled.");
147 static_cast<DerivedSystemSolver &
>(*this).matrixUpdate(nRows, rows, assembler);
long getRowPermutationRank(long row) const override
long getColPermutationRank(long col) const override
ProxySystemMatrixOrdering(const RowRankStorage *rowRankStorage, const ColRankStorage *colRankStorage)
The SystemMatrixOrdering class provides an interface for defining classes that allows to reorder the ...
virtual void vectorsCreate()
virtual void initializeKSPOptions()
virtual void initializeKSPStatus()
void setReordering(long nRows, long nCols, const SystemMatrixOrdering &reordering)
void assembly(const SparseMatrix &matrix)