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

Reply via email to