[petsc-users] Matrix assembly in SNES problem

Matthew Knepley knepley at gmail.com
Wed Jul 22 09:30:56 CDT 2020


On Wed, Jul 22, 2020 at 9:32 AM Zhang, Hong via petsc-users <
petsc-users at mcs.anl.gov> wrote:

>
>
> > On Jul 22, 2020, at 7:03 AM, Adolfo Rodriguez <adantra at gmail.com> wrote:
> >
> > I am trying to replace the non-linear solver in a flow simulation
> problem where the matrix sparsity can change during the iterations. I tried
> successfully to create the matrix within the FormJacobian function but I
> have a memory leak which I don't know how to fix.
> >
> > My FormJacobian function is something like this:
> >
> > .. FormJacobian( ..){
> >      matrixconstruction(); // returns csr matrix in c++ regular vectors
> >      MatSeqAIJSetPreallocationCSR ...;
> >      //loop over the entries and
> >      MatSetValues;
> >      MatAssemblyBegin();
> >      MatAssemblyEnd();
> >      return 0;
> > }
>
> Yes, the leak is caused by the new matrix created every time FormJacobian
> is called. The working matrix for SNES needs to be allocated only once and
> passed to SNES by using
>
> SNESSetJacobian(SNES snes,Mat Amat,Mat Pmat,PetscErrorCode
> (*J)(SNES,Vec,Mat,Mat,void*),void *ctx)
>
> In your FormJacobian(SNES snes,Vec x,Mat A,Mat B,void *ctx), you just need
> to copy the csr matrix to the matrix A, which has already been allocated.
>
> The working matrix should be destroyed after SNESSolve().
>

Hong, what is the best way to wipe out the existing structure, preallocate,
and set new values?

  Thanks,

     Matt


> Hong (Mr.)
>
>
> > This approach works for small problems but, when dealing with large ones
> I observe a memory leak. I am pretty sure that It is related to the fact
> that I am creating new matrices every time FormJacobian is called but I
> don't know how to destroy it between iterations.
> >
> > Any suggestions?
> >
> > Regards,
> >
> > Adolfo
>
>

-- 
What most experimenters take for granted before they begin their
experiments is infinitely more interesting than any results to which their
experiments lead.
-- Norbert Wiener

https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20200722/e58d5e84/attachment.html>


More information about the petsc-users mailing list