[petsc-users] external solvers
Umut Tabak
u.tabak at tudelft.nl
Thu Feb 25 07:19:17 CST 2010
> Note that shifting changes the matrix so you should always check
> residuals, and wrap it in an iterative method when you are getting the
> wrong solution due to the shift.
>
>
Dear Jed,
Thanks for the swift reply.
I am not sure I understood this, my main problem was due to the badly
conditioned matrices where the convergence was really too slow for the
iterative methods, cg especially. Then I just came up with a paper where
they are comparing some iterative methods and direct solvers from
HSL(namely, MA57) similar to the ones I have, extracted from commercial
FE codes where the conditioning of the matrices are on the order of 10e8
or larger for shell type elements(besides I also need shell type
elements in my computations for the moment), but my matrices are worser
in condition numbers in comparison to the ones that they extracted. A
bit of technical detail.
After I saw these shifting options, -pc_factor_shift_nonzero or
-pc_factor_shift_positive_definite, in the trouble shooting, I wondered
why this kind of shift can not be applied to make the systems better
conditioned, namely, adding on the diagonal
( A +alpha * I )x = b
in that paper they give references to Manteuffel's two papers, when I
saw that name also in the manual pages, a ring belt so that was the
story if similar things could be applied or not, I have not checked
those papers on incomplete cholesky factorization yet though.
This is what I mean, you transform the system to another one, but how to
recover back to the original problem? On paper I am checking how these
kinds of tricks might work, but I guess, like applying a preconditioner
to a matrix, that is not possible. Your explanation above is not clear
to me yet.
> Is the matrix actually singular or just very ill conditioned? See the
> -mat_mumps_icntl_* options (look at the MUMPS user's manual for
> details). SuperLU has a similar option, and both have "iterative
> refinement", which might help. Finally, depending on your application,
> it may be possible to reformulate your problem to have better
> conditioning.
>
>
Matrices are pretty badly conditioned. Moreover one is singular but to
form an operator matrix. I am subtracting another scaled matrix from the
singular one. As of,
Operator = Sing_Mat - alpha * Another_Mat ; (alpha is large btw, on the
order of e5)
where Another_Mat is also badly conditioned but in theory this should
not be singular, can be badly conditioned still though.
Thanks for the pointers.
Best Umut
More information about the petsc-users
mailing list