The main reason I do this is that I do not understand how to reuse this decomposition in deal.ii.
I am relatively new to deal.ii and C++, and I have never used MUMPS before.
The way I set it up with SparseDirectUMFPACK was to use InnerPreconditioner structure:
template<int inner_solver_id>
struct InnerPreconditioner;
template<>
struct InnerPreconditioner<0>{
typedef SparseDirectUMFPACK<double> type;
};
and defined inner preconditioner as :
matrix_B_preconditioner= std_cxx11::shared_ptr<typename LinearSolvers::InnerPreconditioner<inner_solver_id>::type >(new typename LinearSolvers::InnerPreconditioner<inner_solver_id>::type());
matrix_B_preconditioner->initialize(matrix_B.block(0, 0), typename LinearSolvers::InnerPreconditioner<inner_solver_id>::type::AdditionalData());
I can not simply substitute
typedef SparseDirectUMFPACK<double> type; with typedef PETScWrappers::SparseDirectMUMPS type;
since PETScWrappers::SparseDirectMUMPS does not have member function vmult.
I am having trouble to understand where I need to add this function vmult.
I would appreciate any advice on this. Maybe there is some example in deal.ii that use MUMPS to construct a preconditioner.
Thank you very much in advance,
Anna