[petsc-users] DMPlexGetCone in Fortran

Matthew Knepley knepley at gmail.com
Fri Apr 6 21:48:25 CDT 2018


If you send the whole code, we can try it here. I am assuming that the
examples run for you.

  Matt

On Fri, Apr 6, 2018 at 5:47 PM, Bernardo Rocha <
bernardomartinsrocha at gmail.com> wrote:

> Hello,
>
> I can't get a a simple code to work for DMPlexGetCone.
> I have tried different ways of handling the array/pointer which is the
> third argument of DMPlexGetCone,
> but neither of them worked for me.
>
> The last version that I got compiling is this one, which is very much
> based on the
> following example: .../petsc-3.7.6/src/dm/impls/plex/examples/tutorials/
> ex1f90.F
>
>     PetscInt, target, dimension(6) :: icone
>     PetscInt, pointer :: pIcone(:)
>
>     call DMPlexCreateFromCellList(PETSC_COMM_WORLD,
>      &                              ndim,numel,numnp,nen,PETSC_TRUE,
>      &                              ielement,ndim,xnodes,dm,ierr)
>       ...
>       call DMPlexGetCone(dm,0,pIcone,ierr)
>       write(*,*) icone(1),icone(2),icone(3),icone(4),icone(5),icone(6)
>       call DMPlexRestoreCone(dm,0,pIcone,ierr)
>
> I always get a segmentation fault.
>
> I've created a simple cuboid mesh with 2x2x2 hexaedral elements.
> Many other routines are working and give reasonable results.
>
> Output of DMView
>
> DM Object: 1 MPI processes
>   type: plex
> DM_0x84000000_0 in 3 dimensions:
>   0-cells: 27
>   1-cells: 66
>   2-cells: 44
>   3-cells: 8
> Labels:
>   depth: 4 strata of sizes (27, 66, 44, 8)
>
>
>
>
> On Thu, Apr 5, 2018 at 10:57 PM, Bernardo Rocha <
> bernardomartinsrocha at gmail.com> wrote:
>
>> OK, thanks a lot.
>> I had to rename the files and add -ffixed-form as argument to the
>> compiler.
>> Best regards,
>> Bernardo
>>
>> On Thu, Apr 5, 2018 at 8:21 PM, Matthew Knepley <knepley at gmail.com>
>> wrote:
>>
>>> On Thu, Apr 5, 2018 at 7:16 PM, Bernardo Rocha <
>>> bernardomartinsrocha at gmail.com> wrote:
>>>
>>>> Hello everyone,
>>>>
>>>> I've been trying to use DMPlex in a Fortran 77 application
>>>> (unfortunately this is legacy code and I can't move to F90).
>>>>
>>>> Is there a way to use DMPlexGetCone on it?
>>>> Although the documentation online says it is only available for F90,
>>>> I'm wondering if there is a trick like the ones in the users manual for
>>>> routines
>>>> that return an array. I tried, but I'm not sure it it is right.
>>>>
>>>
>>> We have standardized our array handling with F90, and I don't think we
>>> will go back
>>> to supporting new things for F77-style arrays.
>>>
>>> That being said, I think all you have to do is compile that source with
>>> an F90 compiler. You
>>> should not have to change anything. If you want the F90 array to look
>>> like an F77 array,
>>> just pass it as a function argument (I think this works).
>>>
>>>   Thanks,
>>>
>>>      Matt
>>>
>>>
>>>> Best regards,
>>>> Bernardo M. Rocha
>>>>
>>> --
>>> 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/>
>>>
>>
>>
>


-- 
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/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20180406/9c31e9df/attachment.html>


More information about the petsc-users mailing list