<div dir="ltr">Thank you for the clarification. <br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Barry Smith <<a href="mailto:bsmith@petsc.dev">bsmith@petsc.dev</a>> 于2023年3月14日周二 13:27写道:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
  To gain an advantage in reusing the KSP the Mat must be the same size and the Mat must have the same nonzero structure (different numerical values are fine). Otherwise there is no measurable improvement in reusing the same KSP.<br>
<br>
  Barry<br>
<br>
<br>
> On Mar 14, 2023, at 7:25 AM, K. Wu <<a href="mailto:wuktsinghua@gmail.com" target="_blank">wuktsinghua@gmail.com</a>> wrote:<br>
> <br>
> Hi all,<br>
> <br>
> Good day!<br>
> <br>
> I am trying to solve an optimization problem where I need to solve multiple successive linear systems inside each optimization loop. The matrices are based on the same grid, but their data structure will change for each linear system.<br>
> <br>
> Currently I am doing it by setting up just one single KSP object. Then call KSPSetOperators() and KSPSolve() for each solve. This means the KSP object is solving the successive linear systems one by one, and in the next optimization iteration, it starts all over again. <br>
> <br>
> I am wondering that should I use separate KSP objects for each linear system so that during optimization the same KSP will be specialized in solving its corresponding system all the time? <br>
> <br>
> I use non-zero initial guess, so I pay attention to use different x vectors for different linear systems, so that the x vectors from the previous iteration can be used as initial guesses for linear systems in the next iteration. Not sure whether some similar thing should also be done for KSP?<br>
> <br>
> Thanks for your kind help!<br>
> <br>
> Best regards,<br>
> Kai<br>
> <br>
<br>
</blockquote></div>