Re: [petsc-users] Question on DMPlexCreateSection for Fortran

2018-02-22 Thread Matthew Knepley
On Thu, Feb 22, 2018 at 6:10 PM, Danyang Su  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  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 , 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 
>> 
>>  DMPlexCreateSection 
>> (DM
>>   
>> dm, PetscInt 
>> 
>>  dim, PetscInt 
>> 
>>  numFields,const PetscInt 
>> 
>>  numComp[],const PetscInt 
>> 
>>  numDof[], PetscInt 
>> 

Re: [petsc-users] Question on DMPlexCreateSection for Fortran

2018-02-22 Thread Danyang Su

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 > 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 , 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

.


What parameters should I use if passing null to bcField,
bcComps, bcPoints and perm.

PetscErrorCode


  DMPlexCreateSection

(DM
 
 dm,PetscInt


  dim,PetscInt


  numFields,constPetscInt


  numComp[],constPetscInt


  numDof[],PetscInt


  numBC,constPetscInt


  bcField[],
constIS
 
 bcComps[], constIS
 
 bcPoints[],IS

Re: [petsc-users] Question on DMPlexCreateSection for Fortran

2018-02-21 Thread Danyang Su

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 > 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 , 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

.


What parameters should I use if passing null to bcField, bcComps,
bcPoints and perm.

PetscErrorCode


  DMPlexCreateSection

(DM
 
 dm,PetscInt


  dim,PetscInt


  numFields,constPetscInt


  numComp[],constPetscInt


  numDof[],PetscInt


  numBC,constPetscInt


  bcField[],
constIS
 
 bcComps[], constIS
 
 bcPoints[],IS
 
 perm,PetscSection


  *section)

#include 
#include 
#include 

...

#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, &

Re: [petsc-users] Question on DMPlexCreateSection for Fortran

2018-02-20 Thread Danyang Su

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

.


What parameters should I use if passing null to bcField, bcComps,
bcPoints and perm.

PetscErrorCode


  DMPlexCreateSection

(DM
 
 dm,PetscInt


  dim,PetscInt


  numFields,constPetscInt


  numComp[],constPetscInt


  numDof[],PetscInt


  numBC,constPetscInt


  bcField[],
constIS
 
 bcComps[], constIS
 
 bcPoints[],IS
 
 perm,PetscSection


  *section)

#include 
#include 
#include 

...

#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/ 




Re: [petsc-users] Question on DMPlexCreateSection for Fortran

2018-02-20 Thread Matthew Knepley
On Tue, Feb 20, 2018 at 12:30 PM, Danyang Su  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.

  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.
>
> What parameters should I use if passing null to bcField, bcComps, bcPoints
> and perm.
>
> PetscErrorCode 
> 
>  DMPlexCreateSection 
> (DM
>   
> dm, PetscInt 
> 
>  dim, PetscInt 
> 
>  numFields,const PetscInt 
> 
>  numComp[],const PetscInt 
> 
>  numDof[], PetscInt 
> 
>  numBC,const PetscInt 
> 
>  bcField[],
> const IS 
>  
> bcComps[], const IS 
>  
> bcPoints[], IS 
>  
> perm, PetscSection 
> 
>  *section)
>
>
> #include 
> #include 
> #include 
>
> ...
>
> #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/ 


[petsc-users] Question on DMPlexCreateSection for Fortran

2018-02-20 Thread Danyang Su

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.


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. 



What parameters should I use if passing null to bcField, bcComps, 
bcPoints and perm.


PetscErrorCode 
  DMPlexCreateSection 
(DM 
  dm,PetscInt 
  dim,PetscInt 
  numFields,constPetscInt 
  numComp[],constPetscInt 
  numDof[],PetscInt 
  numBC,constPetscInt 
  bcField[],
constIS 
  bcComps[], constIS 
  bcPoints[],IS 
  perm,PetscSection 
  *section)


#include 
#include 
#include 

...

#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