At 2026-01-09 03:00:52, "Mark Adams" <mfadams@lbl.gov> wrote:
You don't want to scale the matrix manually. -pc_jacobi_type rowl1
do what you want. And Jacobi is a more common choice.
MarkOn Thu, Jan 8, 2026 at 1:02 PM 陈培群 <logic_imagination@163.com> 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?