<div><div><br><div class="gmail_quote"><div dir="auto">On Fri, 6 Apr 2018 at 07:48, Robert Speck <<a href="mailto:r.speck@fz-juelich.de">r.speck@fz-juelich.de</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Thank you for your answer! Please see below for comments/questions.<br>
<br>
On 05.04.18 12:53, Matthew Knepley wrote:<br>
> On Thu, Apr 5, 2018 at 6:39 AM, Robert Speck <<a href="mailto:r.speck@fz-juelich.de" target="_blank">r.speck@fz-juelich.de</a><br>
> <mailto:<a href="mailto:r.speck@fz-juelich.de" target="_blank">r.speck@fz-juelich.de</a>>> wrote:<br>
><br>
>     Hi!<br>
><br>
>     I would like to use petsc4py for my own Python library. Installation<br>
>     went well, first tests (serial and parallel) look good.<br>
><br>
>     Here is what I want to do: I have my own time-stepping playground and I<br>
>     want petsc4py to be one of my backbones for the data types and (linear<br>
>     or non-linear, serial or parallel) solvers. I don't want to use PETSc's<br>
>     time-steppers, at least not for now. So, I saw in some examples, in<br>
>     particular the ones shipped with petsc4py, that the standard way of<br>
>     running one of PETSc's solvers is a bunch of setup routines, then<br>
>     setting the right-hand side and solve.<br>
><br>
>     Now, I don't want to rerun the whole setup part each time I call the<br>
>     solver. I know that I can change the right-hand side without having to<br>
>     do so, but what if I change a parameter of my operator like, say, the<br>
>     time-step size or some material parameter?<br>
><br>
>     Take the simplest case: Say I have my own implicit Euler written in<br>
>     Python. I know the right-hand side F of my ODE, so in each step I want<br>
>     to solve "I - dt*F". But the time-step changes every now and then, so I<br>
>     cannot pre-assemble everything once and for all (or I don't want to).<br>
>     What do I need to rerun before I can use the solver again, what can I<br>
>     reuse? Could I just assemble F and combine it with the identity and the<br>
>     parameter dt right before I call the solver? How would that look like?<br>
><br>
>     I'm pretty new to PETSc and to petsc4py, so please forgive any stupidity<br>
>     or ignorance in these questions. I'm happy to take any advice, links to<br>
>     examples or previous questions. Thanks!<br>
><br>
><br>
> For linear solves which stay the same size, you just have to call<br>
> SetOperators<br>
> again with the new operator.<br>
<br>
OK, this sounds straightforward. Thanks!<br>
<br>
><br>
> For nonlinear solves which stay the same size, you do nothing.<br>
<br>
"nothing" in terms of "nothing you can do" or "nothing you have to do"?</blockquote><div dir="auto"><br></div><div dir="auto">Nothing you have to do. </div><div dir="auto"><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
<br>
><br>
> If the system size changes, it generally better to create the object.<br>
<br>
What does this mean?</blockquote><div dir="auto"><br></div><div dir="auto">Possibly a typo - Matt is advising to "re-create" the objects if the system sizes change. Petsc objects are typically not dynamic with respect to their size (e.g. Mat, Vec), however creating new instances is generally cheap (matrices can be the exception if you don't preallocate)</div><div dir="auto"><br></div><div dir="auto"><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
<br>
Thanks again!<br>
-Robert-<br>
<br>
<br>
<br>
<br>
<br>
------------------------------------------------------------------------------------------------<br>
------------------------------------------------------------------------------------------------<br>
Forschungszentrum Juelich GmbH<br>
52425 Juelich<br>
Sitz der Gesellschaft: Juelich<br>
Eingetragen im Handelsregister des Amtsgerichts Dueren Nr. HR B 3498<br>
Vorsitzender des Aufsichtsrats: MinDir Dr. Karl Eugen Huthmacher<br>
Geschaeftsfuehrung: Prof. Dr.-Ing. Wolfgang Marquardt (Vorsitzender),<br>
Karsten Beneke (stellv. Vorsitzender), Prof. Dr.-Ing. Harald Bolt,<br>
Prof. Dr. Sebastian M. Schmidt<br>
------------------------------------------------------------------------------------------------<br>
------------------------------------------------------------------------------------------------<br>
<br>
</blockquote></div></div></div>