Hey everyone,
I have a problem at solving a blocksystem.
I have a matrix called "system_matrix" in Blockform M = [[A,0],[B,C]]
and I want to solve classical Mx = F. (F = [f,0], x = [x1,x2])
I proceed according to the LinearSolvers class in the step-32 tutorial.
so by blockwise solving the system I want to solve A*x1 = f for x1
and later on I want to solve
C*x2 = 0 - B*x1 for x2.
In the code I use:
std::shared_ptr<TrilinosWrappers::PreconditionJacobi> Mp_preconditioner;
and compute
TrilinosWrappers::SolverGMRES solver_gmres(solver_control_gmres);
solver_gmres.solve(system_matrix.block(0,0),distributed_solution.block(0),
rhs.block(0),Mp_preconditioner);
But when I compile this I get the error
error: no matching function for call to ‘dealii::TrilinosWrappers::SolverGMRES::solve(dealii::BlockMatrixBase<dealii::TrilinosWrappers::SparseMatrix>::BlockType&, dealii::BlockVectorBase<dealii::TrilinosWrappers::MPI::Vector>::BlockType&, dealii::BlockVectorBase<dealii::TrilinosWrappers::MPI::Vector>::BlockType&, std::shared_ptr<dealii::TrilinosWrappers::PreconditionJacobi>&)’
rhs.block(0),Mp_preconditioner);
This error also comes up at solving the lower right block
TrilinosWrappers::SolverCG solver_cg(solver_control_cg);
solver_cg.solve(system_matrix.block(1,1),
distributed_solution.block(1),
u_tmp_p,
Amg_preconditioner);
Can somebody tell me what actually went wrong? I think I did everything
quite similar to the LinearSolvers class which works finely.
Thanks a lot and best regards
Gabriel