[petsc-dev] DMSetDefaultSection destroys old sections

Matthew Knepley knepley at gmail.com
Thu Aug 30 17:54:10 CDT 2012


On Thu, Aug 30, 2012 at 5:51 PM, Chris Eldred <chris.eldred at gmail.com>wrote:

> It appears that PetscObjectReference works for DM and Vec (in
> Fortran), but not for Section. Is this possibly related to the Fortran
> stub/binding for PetscObjectReference?
>

Sorry, I was not paying attention. PetscSection is not a PetscObject. That
is also why it
is not referenced. It was originally designed to be a helper object. So, in
order to
do what you want, currently (and actually this is how the other PETSc
people want
DM to behave), you should do

  call DMComplexClone(dm, dmNew, ierr)
  call DMSetDefaultSection(dmNew, sectionNew, ierr)

   Matt


> On Thu, Aug 30, 2012 at 4:44 PM, Jed Brown <jedbrown at mcs.anl.gov> wrote:
> > You must have something else going on. The following works fine, for
> > example.
> >
> > diff --git a/src/snes/examples/tutorials/ex5f.F
> > b/src/snes/examples/tutorials/ex5f.F
> > --- a/src/snes/examples/tutorials/ex5f.F
> > +++ b/src/snes/examples/tutorials/ex5f.F
> > @@ -58,6 +58,7 @@
> >        PetscErrorCode ierr
> >        PetscReal      lambda_max,lambda_min
> >        PetscBool      flg
> > +      DM da2
> >
> >
> >  !  Note: Any user-defined Fortran routines (such as FormJacobianLocal)
> > @@ -144,6 +145,9 @@
> >        call DMDASetLocalFunction(da,FormFunctionLocal,ierr)
> >        call DMDASetLocalJacobian(da,FormJacobianLocal,ierr)
> >        call SNESSetDM(snes,da,ierr)
> > +      da2 = da
> > +      call PetscObjectReference(da2,ierr)
> > +      call DMDestroy(da2,ierr)
> >
> >  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> >  !  Customize nonlinear solver; set runtime options
> >
> >
> > On Thu, Aug 30, 2012 at 5:36 PM, Chris Eldred <chris.eldred at gmail.com>
> > wrote:
> >>
> >> I get an error when I try to use that:
> >>
> >> [0]PETSC ERROR: --------------------- Error Message
> >> ------------------------------------
> >> [0]PETSC ERROR: Corrupt argument:
> >> see http://www.mcs.anl.gov/petsc/documentation/faq.html#valgrind!
> >> [0]PETSC ERROR: Invalid type of object: Parameter # 1!
> >> [0]PETSC ERROR:
> >> ------------------------------------------------------------------------
> >> [0]PETSC ERROR: Petsc Development HG revision:
> >> 56f27b189e4fd57f5a4b7ffd6aa6bb08bd8a4d5b  HG Date: Wed Aug 29 12:03:50
> >> 2012 -0500
> >> [0]PETSC ERROR: See docs/changes/index.html for recent updates.
> >> [0]PETSC ERROR: See docs/faq.html for hints about trouble shooting.
> >> [0]PETSC ERROR: See docs/index.html for manual pages.
> >> [0]PETSC ERROR:
> >> ------------------------------------------------------------------------
> >> [0]PETSC ERROR: ./swe on a arch-linu named Puget-101334 by user Thu
> >> Aug 30 16:35:51 2012
> >> [0]PETSC ERROR: Libraries linked from
> >> /home/user/Desktop/LIBRARIES/petsc-dev/arch-linux2-cxx-debug/lib
> >> [0]PETSC ERROR: Configure run at Wed Aug 29 12:49:26 2012
> >> [0]PETSC ERROR: Configure options --download-boost --download-chaco
> >> --download-ctetgen --download-f-blas-lapack --download-fiat
> >> --download-generator --download-metis --download-ml --download-mpich
> >> --download-parmetis --download-scientificpython --download-triangle
> >> --with-clanguage=cxx --with-dynamic-loading --with-shared-libraries
> >> --with-sieve PETSC_ARCH=arch-linux2-cxx-debug
> >> [0]PETSC ERROR:
> >> ------------------------------------------------------------------------
> >> [0]PETSC ERROR: PetscObjectReference() line 378 in
> >> /home/user/Desktop/LIBRARIES/petsc-dev/src/sys/objects/inherit.c
> >> application called MPI_Abort(MPI_COMM_WORLD, 64) - process 0
> >> [unset]: aborting job:
> >> application called MPI_Abort(MPI_COMM_WORLD, 64) - process 0
> >>
> >>
> >> On Thu, Aug 30, 2012 at 4:32 PM, Jed Brown <jedbrown at mcs.anl.gov>
> wrote:
> >> > On Thu, Aug 30, 2012 at 5:30 PM, Chris Eldred <chris.eldred at gmail.com
> >
> >> > wrote:
> >> >>
> >> >> How would I use PetscObjectReference((PetscObject)section) in
> Fortran?
> >> >
> >> >
> >> > call PetscObjectReference(section,ierr)
> >> >
> >> >>
> >> >>
> >> >> On Thu, Aug 30, 2012 at 4:16 PM, Jed Brown <jedbrown at mcs.anl.gov>
> >> >> wrote:
> >> >> > On Thu, Aug 30, 2012 at 5:12 PM, Matthew Knepley <
> knepley at gmail.com>
> >> >> > wrote:
> >> >> >>
> >> >> >> Its not wrong. This is the way I wanted it. You set the
> PetscSection
> >> >> >> and
> >> >> >> give up control. If you
> >> >> >> do not want to give up control, then call PetscObjectReference()
> >> >> >> before
> >> >> >> passing it in.
> >> >> >
> >> >> >
> >> >> > Since this is (a) different from everything else in PETSc and (b)
> not
> >> >> > explicitly documented, it is doubly wrong.
> >> >>
> >> >>
> >> >>
> >> >> --
> >> >> Chris Eldred
> >> >> DOE Computational Science Graduate Fellow
> >> >> Graduate Student, Atmospheric Science, Colorado State University
> >> >> B.S. Applied Computational Physics, Carnegie Mellon University, 2009
> >> >> chris.eldred at gmail.com
> >> >
> >> >
> >>
> >>
> >>
> >> --
> >> Chris Eldred
> >> DOE Computational Science Graduate Fellow
> >> Graduate Student, Atmospheric Science, Colorado State University
> >> B.S. Applied Computational Physics, Carnegie Mellon University, 2009
> >> chris.eldred at gmail.com
> >
> >
>
>
>
> --
> Chris Eldred
> DOE Computational Science Graduate Fellow
> Graduate Student, Atmospheric Science, Colorado State University
> B.S. Applied Computational Physics, Carnegie Mellon University, 2009
> chris.eldred at gmail.com
>



-- 
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20120830/a42e54a2/attachment.html>


More information about the petsc-dev mailing list