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.
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
<mailto: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/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/>