On Thu, Feb 22, 2018 at 6:10 PM, Danyang Su <danyang...@gmail.com> wrote:
> Hi Matt, > > Just to let you know that after updating to PETSc 3.8.3 version, the > DMPlexCreateSection in my code now works. > > One more question, what is the PETSC_NULL_XXX for IS pointer, as shown > below, in C code, it just pass NULL, but in fortran, what is the name of > null object for pBcCompIS and pBcPointIS. > Fortran does not "use pointers", so we need to pass a real object that we then convert to a NULL pointer for C. PETSC_NULL_IS is a real IS object in Fortran that then gets converted to NULL before calling the C function. Thanks, Matt > call DMPlexCreateSection(dmda_flow%da,dmda_flow%dim, & > numFields,pNumComp,pNumDof, & > numBC,pBcField, & > pBcCompIS,pBcPointIS, & > PETSC_NULL_IS,section,ierr) > CHKERRQ(ierr) > > Thanks, > > Danyang > > > On 18-02-21 09:22 AM, Danyang Su wrote: > > Hi Matt, > > To test the Segmentation Violation problem in my code, I modified the > example ex1f90.F to reproduce the problem I have in my own code. > > If use DMPlexCreateBoxMesh to generate the mesh, the code works fine. > However, if I use DMPlexCreateGmshFromFile, using the same mesh exported > from "DMPlexCreateBoxMesh", it gives Segmentation Violation error. > > Did I miss something in the input mesh file? My first guess is the label > "marker" used in the code, but I couldn't find any place to set this label. > > Would you please let me know how to solve this problem. My code is done in > a similar way as ex1f90, it reads mesh from external file or creates from > cell list, distributes the mesh (these already work), and then creates > sections and sets ndof to the nodes. > > Thanks, > > Danyang > > On 18-02-20 10:07 AM, Danyang Su wrote: > > On 18-02-20 09:52 AM, Matthew Knepley wrote: > > On Tue, Feb 20, 2018 at 12:30 PM, Danyang Su <danyang...@gmail.com> wrote: > >> Hi All, >> >> I tried to compile the DMPlexCreateSection code but got error information >> as shown below. >> >> Error: Symbol 'petsc_null_is' at (1) has no IMPLICIT type >> >> I tried to use PETSC_NULL_OBJECT instead of PETSC_NULL_IS, then the code >> can be compiled but run into Segmentation Violation error in >> DMPlexCreateSection. >> > From the webpage > > http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/DMPLEX/ > DMPlexCreateSection.html > > The F90 version is DMPlexCreateSectionF90. Doing this with F77 arrays > would have been too painful. > > Hi Matt, > > Sorry, I still cannot compile the code if use DMPlexCreateSectionF90 > instead of DMPlexCreateSection. Would you please tell me in more details? > > undefined reference to `dmplexcreatesectionf90_' > > then I #include <petsc/finclude/petscdmplex.h90>, but this throws more > error during compilation. > > > Included at /home/dsu/Soft/PETSc/petsc-3.7.5/include/petsc/finclude/ > petscdmplex.h90:6: > Included at ../../solver/solver_ddmethod.F90:62: > > PETSCSECTION_HIDE section > 1 > Error: Unclassifiable statement at (1) > /home/dsu/Soft/PETSc/petsc-3.7.5/include/petsc/finclude/ > ftn-custom/petscdmplex.h90:167.10: > Included at /home/dsu/Soft/PETSc/petsc-3.7.5/include/petsc/finclude/ > petscdmplex.h90:6: > Included at ../../solver/solver_ddmethod.F90:62: > > PETSCSECTION_HIDE section > 1 > Error: Unclassifiable statement at (1) > /home/dsu/Soft/PETSc/petsc-3.7.5/include/petsc/finclude/ > ftn-custom/petscdmplex.h90:179.10: > Included at /home/dsu/Soft/PETSc/petsc-3.7.5/include/petsc/finclude/ > petscdmplex.h90:6: > Included at ../../solver/solver_ddmethod.F90:62: > > > Thanks, > > Matt > >> dmda_flow%da is distributed dm object that works fine. >> >> The fortran example I follow is http://www.mcs.anl.gov/petsc/p >> etsc-dev/src/dm/impls/plex/examples/tutorials/ex1f90.F90. >> >> What parameters should I use if passing null to bcField, bcComps, >> bcPoints and perm. >> >> PetscErrorCode >> <https://www.mcs.anl.gov/petsc/petsc-master/docs/manualpages/Vec/PetscErrorCode.html#PetscErrorCode> >> DMPlexCreateSection >> <https://www.mcs.anl.gov/petsc/petsc-master/docs/manualpages/DMPLEX/DMPlexCreateSection.html#DMPlexCreateSection>(DM >> <https://www.mcs.anl.gov/petsc/petsc-master/docs/manualpages/DM/DM.html#DM> >> dm, PetscInt >> <https://www.mcs.anl.gov/petsc/petsc-master/docs/manualpages/Vec/PetscInt.html#PetscInt> >> dim, PetscInt >> <https://www.mcs.anl.gov/petsc/petsc-master/docs/manualpages/Vec/PetscInt.html#PetscInt> >> numFields,const PetscInt >> <https://www.mcs.anl.gov/petsc/petsc-master/docs/manualpages/Vec/PetscInt.html#PetscInt> >> numComp[],const PetscInt >> <https://www.mcs.anl.gov/petsc/petsc-master/docs/manualpages/Vec/PetscInt.html#PetscInt> >> numDof[], PetscInt >> <https://www.mcs.anl.gov/petsc/petsc-master/docs/manualpages/Vec/PetscInt.html#PetscInt> >> numBC,const PetscInt >> <https://www.mcs.anl.gov/petsc/petsc-master/docs/manualpages/Vec/PetscInt.html#PetscInt> >> bcField[], >> const IS >> <https://www.mcs.anl.gov/petsc/petsc-master/docs/manualpages/IS/IS.html#IS> >> bcComps[], const IS >> <https://www.mcs.anl.gov/petsc/petsc-master/docs/manualpages/IS/IS.html#IS> >> bcPoints[], IS >> <https://www.mcs.anl.gov/petsc/petsc-master/docs/manualpages/IS/IS.html#IS> >> perm, PetscSection >> <https://www.mcs.anl.gov/petsc/petsc-master/docs/manualpages/IS/PetscSection.html#PetscSection> >> *section) >> >> >> #include <petsc/finclude/petscis.h> >> #include <petsc/finclude/petscis.h90> >> #include <petsc/finclude/petscdmplex.h> >> >> ... >> >> #ifdef USG >> numFields = 1 >> numComp(1) = 1 >> pNumComp => numComp >> >> do i = 1, numFields*(dmda_flow%dim+1) >> numDof(i) = 0 >> end do >> numDof(0*(dmda_flow%dim+1)+1) = dmda_flow%dof >> pNumDof => numDof >> >> numBC = 0 >> >> call DMPlexCreateSection(dmda_flow%da,dmda_flow%dim, & >> numFields,pNumComp,pNumDof, >> & >> numBC,PETSC_NULL_INTEGER, >> & >> PETSC_NULL_IS,PETSC_NULL_IS, >> & !Error here >> PETSC_NULL_IS,section,ierr) >> CHKERRQ(ierr) >> >> call PetscSectionSetFieldName(section,0,'flow',ierr) >> CHKERRQ(ierr) >> >> call DMSetDefaultSection(dmda_flow%da,section,ierr) >> CHKERRQ(ierr) >> >> call PetscSectionDestroy(section,ierr) >> CHKERRQ(ierr) >> #endif >> >> Thanks, >> >> Danyang >> > > > > -- > 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.caam.rice.edu/%7Emk51/> > > > > > -- 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.caam.rice.edu/~mk51/>