[petsc-users] DMLocalToLocal with DMPlex in Fortran

Mike Michell mi.mike1021 at gmail.com
Sat Oct 1 19:51:31 CDT 2022


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 (*).

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


More information about the petsc-users mailing list