On 18-02-20 09:52 AM, Matthew Knepley wrote:
On Tue, Feb 20, 2018 at 12:30 PM, Danyang Su <[email protected] <mailto:[email protected]>> 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/>

Reply via email to