[petsc-users] petsc4py: reuse setup for multiple solver calls?

Robert Speck r.speck at fz-juelich.de
Fri Apr 6 00:48:33 CDT 2018


Thank you for your answer! Please see below for comments/questions.

On 05.04.18 12:53, Matthew Knepley wrote:
> On Thu, Apr 5, 2018 at 6:39 AM, Robert Speck <r.speck at fz-juelich.de
> <mailto:r.speck at fz-juelich.de>> wrote:
>
>     Hi!
>
>     I would like to use petsc4py for my own Python library. Installation
>     went well, first tests (serial and parallel) look good.
>
>     Here is what I want to do: I have my own time-stepping playground and I
>     want petsc4py to be one of my backbones for the data types and (linear
>     or non-linear, serial or parallel) solvers. I don't want to use PETSc's
>     time-steppers, at least not for now. So, I saw in some examples, in
>     particular the ones shipped with petsc4py, that the standard way of
>     running one of PETSc's solvers is a bunch of setup routines, then
>     setting the right-hand side and solve.
>
>     Now, I don't want to rerun the whole setup part each time I call the
>     solver. I know that I can change the right-hand side without having to
>     do so, but what if I change a parameter of my operator like, say, the
>     time-step size or some material parameter?
>
>     Take the simplest case: Say I have my own implicit Euler written in
>     Python. I know the right-hand side F of my ODE, so in each step I want
>     to solve "I - dt*F". But the time-step changes every now and then, so I
>     cannot pre-assemble everything once and for all (or I don't want to).
>     What do I need to rerun before I can use the solver again, what can I
>     reuse? Could I just assemble F and combine it with the identity and the
>     parameter dt right before I call the solver? How would that look like?
>
>     I'm pretty new to PETSc and to petsc4py, so please forgive any stupidity
>     or ignorance in these questions. I'm happy to take any advice, links to
>     examples or previous questions. Thanks!
>
>
> For linear solves which stay the same size, you just have to call
> SetOperators
> again with the new operator.

OK, this sounds straightforward. Thanks!

>
> For nonlinear solves which stay the same size, you do nothing.

"nothing" in terms of "nothing you can do" or "nothing you have to do"?

>
> If the system size changes, it generally better to create the object.

What does this mean?

Thanks again!
-Robert-





------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------
Forschungszentrum Juelich GmbH
52425 Juelich
Sitz der Gesellschaft: Juelich
Eingetragen im Handelsregister des Amtsgerichts Dueren Nr. HR B 3498
Vorsitzender des Aufsichtsrats: MinDir Dr. Karl Eugen Huthmacher
Geschaeftsfuehrung: Prof. Dr.-Ing. Wolfgang Marquardt (Vorsitzender),
Karsten Beneke (stellv. Vorsitzender), Prof. Dr.-Ing. Harald Bolt,
Prof. Dr. Sebastian M. Schmidt
------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------



More information about the petsc-users mailing list