You don't want to scale the matrix manually. -pc_jacobi_type rowl1
do what you want. And Jacobi is a more common choice.

Mark

On Thu, Jan 8, 2026 at 1:02 PM 陈培群 <[email protected]> wrote:

> $\quad$ Hello, I use `SNESComputeJacobianDefault` to build a
> preconditioning matrix for JFNK and use `MatGetRowSumAbs` to obtain the
> vector for scaling. When I modify the preconditioning matrix in formJacobian
> [`SNESSetJacobian`] and modify rhs and the solution variables in preSolve[
> `KSPSetPreSolve`] and postSolve[`KSPSetPostSolve`] as scaling, I
> encounter the following questions.
> 1. If I need to scale the solution variables, do I need to call `
> SNESGetSolutionUpdate` to scale the increment vector instead of the
> solution vector in `postSolve(KSP /*ksp*/, Vec rhs, Vec x, void * ctx)`?
>
> 2. Whether this can achieve the same scaling effect as `-pc_jacobi_type
> rowl1`, so that the built-in preconditioner scheme of petsc can be
> applied on the basis of the above modified linear system? Or whether this
> will affect the residual used to construct the matrix through the finite
> difference and then lead to the wrong scaling effect?
>
>

Reply via email to