The code below looks ok (you don't need to repeatedly call
KSPSetOperators() but, you only have to have called that once). You can run
with -info | grep "Leaving PC with identical preconditioner since reuse
preconditioner is set" to see if the flag is being respected. See
src/ksp/pc/interface/precon.c and the function PCSetUp() for how it determines
if the preconditioner should be rebuilt.
Barry
> On Nov 9, 2018, at 4:52 AM, Edoardo alinovi <[email protected]> wrote:
>
> Hello Barry,
>
> sorry for digging up again this post, but I have a doubt on how reuse a
> preconditioner.
>
> Acuttaly I am calling the function in this order
>
> - refill the new matrix
>
> - MatAssemblyBegin/end
>
> - KSPSetReusePreconditioner(ksp, PETSC_TRUE,ierr)
>
> - KSPSetOperators(ksp,A,A,ierr)
>
> - KSPSolve(ksp,rhs,x,ierr)
>
> Is this correct? Morever is there a way to check if the precondtioner has
> been reused or not?
>
> Thank you very much for your kind comments
>
> ------
>
> Edoardo Alinovi, Ph.D.
>
> DICCA, Scuola Politecnica,
> Universita' degli Studi di Genova,
> 1, via Montallegro,
> 16145 Genova, Italy
>
> Email: [email protected]
> Tel: +39 010 353 2540
>
>
>
>
> Il giorno gio 13 set 2018 alle ore 21:25 Edoardo alinovi
> <[email protected]> ha scritto:
> Yes, this is due to the fact that the convection are treated implicitly in my
> code. This gives more stability, but at the same time each time step the
> coffs changes due to the change of mass fluxes. I can eventually avoid the pc
> set up during non orthoghonal correction where only rhs changes.
>
> Il 13 set 2018 21:19, "Smith, Barry F." <[email protected]> ha scritto:
>
>
> > On Sep 13, 2018, at 2:16 PM, Edoardo alinovi <[email protected]>
> > wrote:
> >
> > Yes, I need it or at least I think so. I am using piso alghorithm which
> > requires to solve the pressure eq twice in a time step. Since the coeffs of
> > the matrix are different in the two cases, then I have to setup the pc
> > every time.
>
> What about at the next time-step? Are the coefficients different yet again
> at each new timestep?
>
>
> Barry
>
>
> >
> > Thanks Barry!
> >
> > Il gio 13 set 2018, 21:08 Smith, Barry F. <[email protected]> ha scritto:
> >
> >
> > > On Sep 13, 2018, at 1:55 PM, Edoardo alinovi <[email protected]>
> > > wrote:
> > >
> > > Hello Barry,
> > >
> > > Thank you very much for your replay! Maybe the best feature of PETSc is
> > > this mailing list :) You are right cg + block Jcoby is twice faster than
> > > hypre, but still a bit slower than OF. I have definitely to test a
> > > bigger case. It seems that hypre loses a lot of time in setting up the
> > > PC. Is this normal?
> >
> > Yes, BoomerAMG (or any AMG method) has "large" setup times that don't
> > scale as well as the solve time. Thus if you can reuse the setup for
> > multiple solves you gain a great deal. The best case is, of course, where
> > the same Poisson problem (with a different right hand side obviously) has
> > to be solved many times. I noticed in your log_view that it seems to need
> > to do a new setup for each solve.
> >
> > Barry
> >
> > >
> > > Thank you!
> > >
> > >
> > >
> > > ------
> > >
> > > Edoardo Alinovi, Ph.D.
> > >
> > > DICCA, Scuola Politecnica
> > > Universita' di Genova
> > > 1, via Montallegro
> > > 16145 Genova, Italy
> > >
> > > email: [email protected]
> > > Tel: +39 010 353 2540
> > >
> > >
> > >
> > > 2018-09-13 20:10 GMT+02:00 Smith, Barry F. <[email protected]>:
> > >
> > > What pressure solver is OpenFOAM using? Are you using the same
> > > convergence tolerance for the pressure solver for the two approaches?
> > > Have you tried PETSc with a simpler solver: -pc_type bjacobi or -pc_type
> > > asm ; the problem is pretty small and maybe at this size hypre is
> > > overkill?
> > >
> > > Barry
> > >
> > >
> > > > On Sep 13, 2018, at 12:58 PM, Edoardo alinovi
> > > > <[email protected]> wrote:
> > > >
> > > > Hello PETSc's frieds,
> > > >
> > > > It is a couple of weeks that I am trying to enhance the perforamance of
> > > > my code. Actually I am solving NS equation for a 3D problem of 220k
> > > > cells with 4procs on my laptop (i7-7800k @ 2.3Ghz with dynamic
> > > > overclocking). I have installed petsc under linux suse 15 in a virtual
> > > > machine (I do not know if this is important or not).
> > > >
> > > > After some profiling, I can see that the bottle neck is inside
> > > > KSPSolve while solving pressure equation (solved with cg + hypre pc).
> > > > For this reason my code is running twice time slower than openFOAM and
> > > > the gap is only due the solution of pressure. Have you got some hints
> > > > for me? At this point I am sure I am doing something wrong! I have
> > > > attached the log of a test simulation.
> > > >
> > > > Thank you very much!
> > > >
> > > > ------
> > > >
> > > > Edoardo Alinovi, Ph.D.
> > > >
> > > > DICCA, Scuola Politecnica
> > > > Universita' di Genova
> > > > 1, via Montallegro
> > > > 16145 Genova, Italy
> > > >
> > > > email: [email protected]
> > > > Tel: +39 010 353 2540
> > > >
> > > >
> > > > <run_log_view.txt>
> > >
> > >
> >
>
>