No, that is not exactly what I want to do. And it seems not that efficient way. But in case of a certain processor does not have any boundary, how can crash be avoided? I was trying to pass a custom label marked for parallel boundary, but DMGetStratumIS() does not accept the custom label I declared. In contrast, "marker" and "depth" labels that system automatically creates can be passed to DMGetStratumIS() without problem.
Thanks, Mike > On Wed, Jul 13, 2022 at 10:08 AM Mike Michell <mi.mike1...@gmail.com> > wrote: > >> What I did to avoid the crash is to provide bcPointIS from "call >> DMGetStratumIS(dm_geom, "depth", dim, bcPointIS(1),ierr);CHKERRA(ierr)", >> instead of "marker" for calling DMGetStratumIS(). >> The petscsection building part is >> from src/dm/impls/plex/tutorials/ex1f90.F90 (See line 72). >> > > That looks like you are putting all cells in the IS. Is that what you want? > > Thanks, > > Matt > > >> >>> On Sat, Jul 9, 2022 at 8:34 AM Matthew Knepley <knep...@gmail.com> >>> wrote: >>> >>>> On Fri, Jul 8, 2022 at 7:41 PM Mike Michell <mi.mike1...@gmail.com> >>>> wrote: >>>> >>>>> As a follow-up, just "depth" default label was provided to avoid NULL >>>>> PETScIS, and it seems working. >>>>> >>>> >>>> Ah, "depth" is definitely required and is produced by DMPlexStratify(). >>>> I will put in a check for this so that you get a good error message. >>>> >>> >>> I cannot find an instance of an IS being pulled from the depth label >>> here. Do you have something I can run that shows this fault? >>> >>> Thanks, >>> >>> Matt >>> >>> >>>> Thanks! >>>> >>>> Matt >>>> >>>> >>>>> Thanks, >>>>> Mike >>>>> >>>>> >>>>>> It looks like NULL PETScIS is obtained from DMGetStratumIS() which is >>>>>> shown in the previously attached code. Currently, "marker" label is used >>>>>> to >>>>>> define default bcPointIS pointer with numBC=1 through DMGetStratumIS(), >>>>>> and >>>>>> it seems that if a certain proc does not have any boundary from this >>>>>> "marker" label, the DMPlexCreateSection() crashes. >>>>>> >>>>>> The PETSc's manual page for DMPlexCreateSection() says "bcPoints" is >>>>>> an IS holding points to which each boundary condition applies. So, by >>>>>> including no boundary for a certain distributed mesh block, it looks very >>>>>> natural that this function crashes. How can I not to pass a NULL PETScIS >>>>>> in >>>>>> this case? Is there any specific way for that (or a trick)? >>>>>> >>>>>> Thanks, >>>>>> Mike >>>>>> >>>>>> >>>>>>> On Wed, Jul 6, 2022 at 3:42 PM Mike Michell <mi.mike1...@gmail.com> >>>>>>> wrote: >>>>>>> >>>>>>>> I am passing NULL for IS Permutation as; >>>>>>>> >>>>>>>> call >>>>>>>> DMPlexCreateSection(dm_geom,nolabel,pNumComp,pNumDof,numBC,pBcField,pBcCompIS,pBcPointIS,PETSC_NULL_IS,section,ierr) >>>>>>>> >>>>>>>> Should I define non-NULL IS Permutation before I call >>>>>>>> DMPlexCreateSection() to avoid the issue? >>>>>>>> >>>>>>> >>>>>>> No, the problem is not the perm argument. To be sure, we should get >>>>>>> a stack trace with line numbers (use a debug build). To me it looked >>>>>>> like you passed a NULL IS to DMAddBoundary(). >>>>>>> >>>>>>> Thanks, >>>>>>> >>>>>>> Matt >>>>>>> >>>>>>> >>>>>>>> Thanks, >>>>>>>> Mike >>>>>>>> >>>>>>>> >>>>>>>> On Wed, Jul 6, 2022 at 12:57 PM Mike Michell <mi.mike1...@gmail.com> >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>>> Hi, I am using DMPlex for a FVM code written in Fortran that uses >>>>>>>>>> DMPlexCreateSection() to prepare an output file in vtu format. A >>>>>>>>>> domain of >>>>>>>>>> interest has around 5000 node points and with small number of >>>>>>>>>> processors >>>>>>>>>> (such as nproc=3), the DMPlexCreateSection() works fine. However, if >>>>>>>>>> a >>>>>>>>>> larger number of procs (such as nproc=20) is used, >>>>>>>>>> DMPlexCreateSection() >>>>>>>>>> crashes with error message below. It looks very similar problem in a >>>>>>>>>> previous PETSc user inquiry: " [petsc-dev] DMPlexCreateSection >>>>>>>>>> crash in a no-boundary corner case >>>>>>>>>> <https://lists.mcs.anl.gov/pipermail/petsc-dev/2013-November/014049.html> >>>>>>>>>> " >>>>>>>>>> >>>>>>>>> >>>>>>>>> Yes, the recommendation is not to pass a NULL PetscIS to the >>>>>>>>> AddBoundary() routine. Are you doing this? >>>>>>>>> >>>>>>>>> Thanks, >>>>>>>>> >>>>>>>>> Matt >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>>> When I call DMPlexCreateSection(), a nullified pointer >>>>>>>>>> "nolabel(:)=>NULL()" is provided. What is a possible solution to this >>>>>>>>>> problem? It looks like there is a problem with a processor that does >>>>>>>>>> not >>>>>>>>>> have any boundaries. A piece of the source code is attached to show >>>>>>>>>> how >>>>>>>>>> the DMPlexCreateSection() is used in the code. >>>>>>>>>> >>>>>>>>>> Thanks, >>>>>>>>>> Mike >>>>>>>>>> >>>>>>>>>> [16]PETSC ERROR: --------------------- Error Message >>>>>>>>>> -------------------------------------------------------------- >>>>>>>>>> [16]PETSC ERROR: Null argument, when expecting valid pointer >>>>>>>>>> [16]PETSC ERROR: Null Pointer: Parameter # 1 >>>>>>>>>> [16]PETSC ERROR: See https://petsc.org/release/faq/ for trouble >>>>>>>>>> shooting. >>>>>>>>>> [16]PETSC ERROR: Petsc Release Version 3.17.0, unknown >>>>>>>>>> [16]PETSC ERROR: #1 ISGetLocalSize() at >>>>>>>>>> [16]PETSC ERROR: #2 DMPlexCreateSectionBCDof() at >>>>>>>>>> [16]PETSC ERROR: #3 DMPlexCreateSection() at >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> 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/> >>>>>>>>> >>>>>>>> >>>>>>> >>>>>>> -- >>>>>>> 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/> >>>>>>> >>>>>> >>>> >>>> -- >>>> 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/> >>>> >>> >>> >>> -- >>> 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/> >>> >> > > -- > 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/> >