int MonolithicBlockComposedDN::solveSystem ( const vector_Type& rhs, vector_Type& step, solverPtr_Type& linearSolver ) { assert (M_blockPrecs.get() ); if (!set() ) { for (UInt k = 0; k < M_blocks.size(); ++k) { push_back_precs (M_blocks[ (*M_blockReordering) [k]]); } } else { for (UInt k = 0; k < M_blocks.size(); ++k) { if (M_recompute[ (*M_blockReordering) [k]]) { linearSolver->displayer()->leaderPrint (" M- Computing preconditioner factor: ", k, "\n"); replace_precs (M_blocks[ (*M_blockReordering) [k]], k); } else { linearSolver->displayer()->leaderPrint (" M- Reusing preconditioner factor: ", k, "\n"); } } } return linearSolver->solveSystem (rhs, step, boost::static_pointer_cast<Preconditioner> (M_blockPrecs) ); }
int MonolithicBlockMatrix::solveSystem( const vector_Type& rhs, vector_Type& step, solverPtr_Type& linearSolver) { return linearSolver->solveSystem(rhs, step, M_globalMatrix); }