[petsc-users] How to do a precondition in SNES flow

Barry Smith bsmith at petsc.dev
Tue Oct 3 13:13:32 CDT 2023


  Simply evaluate the Jacobian during your SNESComputeFunction and save it for SNESComputeJacobian.



> On Oct 3, 2023, at 1:51 PM, Gong Ding <gongding at cn.cogenda.com> 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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20231003/b43377d7/attachment.html>


More information about the petsc-users mailing list