[petsc-users] Question on DMPlexCreateSection for Fortran

Danyang Su danyang.su at gmail.com
Wed Feb 21 11:22:12 CST 2018


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.su at gmail.com 
>> <mailto:danyang.su at 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/petsc-dev/src/dm/impls/plex/examples/tutorials/ex1f90.F90
>>     <http://www.mcs.anl.gov/petsc/petsc-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,constPetscInt
>>     <https://www.mcs.anl.gov/petsc/petsc-master/docs/manualpages/Vec/PetscInt.html#PetscInt>  numComp[],constPetscInt
>>     <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,constPetscInt
>>     <https://www.mcs.anl.gov/petsc/petsc-master/docs/manualpages/Vec/PetscInt.html#PetscInt>  bcField[],
>>     constIS
>>     <https://www.mcs.anl.gov/petsc/petsc-master/docs/manualpages/IS/IS.html#IS>  bcComps[], constIS
>>     <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/>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20180221/6160f7d4/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ex1f90.F
Type: text/x-fortran
Size: 4646 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20180221/6160f7d4/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: sol.msh
Type: model/mesh
Size: 251 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20180221/6160f7d4/attachment.msh>


More information about the petsc-users mailing list