> >>> The linear system is complex-valued. We rewrite it into its real form >>> and solve it using FGMRES and an optimal block-diagonal preconditioner. >>> We use CG and the AMS preconditioner implemented in HYPRE to solve the >>> smaller real linear system arised from applying the block preconditioner. >>> The iteration number of FGMRES and CG keep almost constant in all the >>> runs. >>> >> >> So those blocks decrease in size as you add more processes? >> >> > I am sorry for the unclear description of the block-diagonal preconditioner. Let K be the original complex system matrix, A = [Kr, -Ki; -Ki, -Kr] is the equivalent real form of K. Let P = [Kr+Ki, 0; 0, Kr+Ki], it can beproved that P is an optimal preconditioner for A. In our implementation, only Kr, Ki and Kr+Ki are explicitly stored as MATMPIAIJ. We use MATSHELL to represent A and P. We use FGMRES + P to solve Ax=b, and CG + AMS to solve (Kr+Ki)y=c. So the block size is never changed.
Best, Ce
