I've post a similar question before(Solve distributed BlockVector with 
direct solver 
<https://groups.google.com/g/dealii/c/XTefp8_Df_A#:~:text=Solve%20distributed%20BlockVector%20with%20direct%20solver>),
 
where I had a Trilinos SparseMatrix(the system has 2 components) and 
LinearAlgebra::distributed::BlockVector as dst and src for that 
SparseMatirx. I choose  LinearAlgebra::distributed::BlockVector because the 
bigger problem is intend to solve by MatrixFree operators, and use direct 
solver on coarsest grid.

However, by copy to and from between 
LinearAlgebra::distributed::BlockVector and 
LinearAlgebra::distributed::Vector, it produces wrong result. Though I 
cannot confirm the wrong result comes from transfer between Vector and 
BlockVector(I tested simple x=inv(A)*b and result is right, but treating it 
as the coarse solver for bigger problem the result is wrong), I reassembled 
the matrix in Trilinos BlockSparseMatrix and solve it with a iterative 
solver and the result is correct. While solving coarse problem iteratively 
works for very small matrix, my system is indefinite so I have to use a 
direct solver.

So given a BlockSparseMatrix and BlockVector src and dst, is there a 
recommended strategy to solve it directly(or block diagonal precondition)? 
The matrix has form [A, B; -B^T A]

-- 
The deal.II project is located at http://www.dealii.org/
For mailing list/forum options, see 
https://groups.google.com/d/forum/dealii?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"deal.II User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/dealii/2bd0540e-733f-4985-ad5b-cf12c8c014ben%40googlegroups.com.

Reply via email to