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

Matthew Knepley knepley at gmail.com
Tue Oct 3 13:47:49 CDT 2023


On Tue, 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.
>
> What you are proposing is exactly what PETSc does with left
preconditioning, multiplies both sides by the preconditioner. What do you
want to change?

  Thanks,

     Matt

> 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
>
>

-- 
What most experimenters take for granted before they begin their
experiments is infinitely more interesting than any results to which their
experiments lead.
-- Norbert Wiener

https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20231003/53b77de7/attachment-0001.html>


More information about the petsc-users mailing list