Simply evaluate the Jacobian during your SNESComputeFunction and save it for SNESComputeJacobian.
> On Oct 3, 2023, at 1:51 PM, Gong Ding <[email protected]> wrote: > > Hi all, > > I'd like to do a special jacobian precondition during the snes iteration, > for which jacobian matrix and RHS vector must be modified explicitly. > > In the SNESComputeJacobian, the preconditioner P is built after assembly of > jacobian matrix. > > I need to multiply P to J and RHS vector explicitly as left precondition > before the solve stage of J*dx = rhs. > > However, I find that petsc evaluates function before jacobian, so P*RHS > vector can not be processed at SNESComputeFunction. > > As a result, I must find a hook function after SNESComputeJacobian and > before the solve stage. > > Any suggest? > > Gong Ding
