I think to achieve what you want you will need to use a KSP which supports right preconditioning, that is they monitor || Ax-b || rather than || P^{-1} ( Ax - b ) ||, where P^{-1} is the application of the preconditioner.
Try running with -ksp_type fgmres or -ksp_type gcr. These Krylov methods support right preconditioning by default. Thanks, Dave On Mon 22. Jul 2024 at 04:37, Константин Мурусидзе < konstantin.murusi...@math.msu.ru> wrote: > Good afternoon. I am a student at the Faculty of Mathematics and for my > course work I need to solve SLAE with a relative accuracy of 1e-8 or more. > To do this, I created the function PetscCall(KSPSetTolerances(ksp, 1. e-8, > PETSC_DEFAULT, PETSC_DEFAULT, > ZjQcmQRYFpfptBannerStart > This Message Is From an External Sender > This message came from outside your organization. > > ZjQcmQRYFpfptBannerEnd > Good afternoon. I am a student at the Faculty of Mathematics and for my > course work I need to solve SLAE with a relative accuracy of 1e-8 or more. > To do this, I created the function PetscCall(KSPSetTolerances(ksp, 1.e-8, > PETSC_DEFAULT, PETSC_DEFAULT, 100000));. But in the end, only 38 iterations > were made and the relative norm ||Ax-b||/||b|| it turns out 4.54011. If you > reply to my email, I can give you more information about the solver > settings. >