[petsc-users] DMLocalToLocal with DMPlex in Fortran

Matthew Knepley knepley at gmail.com
Sun Oct 2 06:25:55 CDT 2022


On Sat, Oct 1, 2022 at 8:51 PM Mike Michell <mi.mike1021 at gmail.com> wrote:

> Thank you for the reply. There is that file in src/dm/interface/ftn-auto/
> for me, instead of the path you mentioned.
>
> After "make allfortranstubs" was done and, PETSc reconfigured and
> reinstalled.
>
> However, I still have the same problem at the line in which
> DMLocalToLocalBegin() is used. What I am doing to setup halo exchange is as
> follows;
> - declare DMPlex
> - PetscSectionCreate()
> - PetscSectionSetNumFields()
> - PetscSectionSetFieldComponents()
> - PetscSectionSetChart()
> - do loop over dofs: PetscSectionSetDof() and PetscSectionSetFieldDof()
> - PetscSectionSetUp()
> - DMSetLocalSection()
> - PetscSectionDestroy()
> - DMGetSectionSF()
> - PetscSFSetUp()
>
> Then, the halo exchange is performed as follows;
> - DMGetLocalVector()
> - Fill the local vector
> - DMLocalToLocalBegin() --(*)
> - DMLocalToLocalEnd()
> - DMRestoreLocalVector()
>
> Then, the code crashes at (*).
>

Can you send something I can run? Then I will find the problem and fix it.

  Thanks,

     Matt


> Previously(at the time PETSc did not support LocalToLocal for DMPlex in
> Fortran), the part above, "DMLocalToLocalBegin() and DMLocalToLocalEnd()",
> consisted of;
> - DMLocalToGlobalBegin()
> - DMLocalToGlobalEnd()
> - DMGlobalToLocalBegin()
> - DMGlobalToLocalEnd()
> and it worked okay.
>
> I am unclear which part is causing the problem. Shall I define the
> PetscSection and PetscSF in different ways in case of Local to Local Halo
> exchange?
> Any comment will be appreciated.
>
> Thanks,
> Mike
>
>
>
>> On Fri, Sep 30, 2022 at 4:14 PM Mike Michell <mi.mike1021 at gmail.com>
>> wrote:
>>
>>> Hi,
>>>
>>> As a follow-up to this email thread,
>>> https://www.mail-archive.com/petsc-users@mcs.anl.gov/msg44070.html
>>>
>>> Are DMLocalToLocalBegin() and DMLocalToLocalEnd() really available for
>>> DMPlex with Fortran on the latest version of PETSc (3.17.99 from GitLab)?
>>> Matt commented that the Fortran bindings were updated so that those
>>> functions must be available in the latest version of PETSc, however, it
>>> seems still they are not working from my test with DMPlex in Fortran. Can
>>> anyone provide some comments? Probably I am missing some mandatory header
>>> file? Currently, I have headers;
>>>
>>> #include "petsc/finclude/petscvec.h"
>>> #include "petsc/finclude/petscdmplex.h"
>>> #include "petsc/finclude/petscdmlabel.h"
>>> #include "petsc/finclude/petscdm.h"
>>>
>>
>> The source for these functions is in
>>
>>   src/dm/ftn-auto/dmf.c
>>
>> Is it there for you? If not, you can run
>>
>>   make allfortranstubs
>>
>> Fortran functions are not declared, so the header should not matter for
>> compilation, just the libraries for linking.
>>
>>   Thanks,
>>
>>      Matt
>>
>>
>>> Thanks,
>>> Mike
>>>
>>
>>
>> --
>> 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.cse.buffalo.edu/~knepley/>
>>
>

-- 
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.cse.buffalo.edu/~knepley/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20221002/ace81769/attachment-0001.html>


More information about the petsc-users mailing list