[petsc-users] Fortran alternative for DMDAGetElements?

Barry Smith bsmith at petsc.dev
Fri Jun 30 08:54:39 CDT 2023


  I glued your code fragment into a stand-alone program and it runs fine for me on 16 ranks. Does this simple program run for you?

     program main
#include <petsc/finclude/petscdm.h>
      use petsc
      implicit none
      integer ierr

      MPI_Comm comm
      DM da3d
      ISLocalToGlobalMapping map
      PetscInt nel,nen
      PetscInt, pointer :: e_loc(:)

      PetscCallA(PetscInitialize(ierr))
      comm = PETSC_COMM_WORLD
      call DMDACreate3d(comm,DM_BOUNDARY_NONE,DM_BOUNDARY_NONE,  &
     &                  DM_BOUNDARY_NONE,DMDA_STENCIL_BOX,433,41,29,  &
     &                  8,2,1,3,1,PETSC_NULL_INTEGER, &
     &                  PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,  &
     &                  da3d,ierr)
      call DMSetMatType(da3d,MATIS,ierr)
      call DMSetFromOptions(da3d,ierr)
      call DMDASetElementType(da3d,DMDA_ELEMENT_Q1,ierr)
      call DMSetUp(da3d,ierr)
      call DMGetLocalToGlobalMapping(da3d,map,ierr)

      call DMDAGetElements(da3d,nel,nen,e_loc,ierr)
      call DMDARestoreElements(da3d,nel,nen,e_loc,ierr)
      PetscCallA(DMDestroy(da3d,ierr))

      PetscCallA(PetscFinalize(ierr)



> On Jun 30, 2023, at 9:21 AM, Ngoc Mai Monica Huynh <ngocmaimonica.huynh at unipv.it> wrote:
> 
> Yes, I have the #include at the top of the code.
> 
> Thank you very much for your help.
> I’ll let you know if I have any improvements from my side.
> Looking forward to hearing from you.
> 
> Thanks,
> 	Monica
> 
>> On 30 Jun 2023, at 15:08, Matthew Knepley <knepley at gmail.com <mailto:knepley at gmail.com>> wrote:
>> 
>> On Fri, Jun 30, 2023 at 8:38 AM Ngoc Mai Monica Huynh <ngocmaimonica.huynh at unipv.it <mailto:ngocmaimonica.huynh at unipv.it>> wrote:
>>> Yes, it compiles and run correctly
>> 
>> Okay, then we try to alter that example until it looks like your test.
>> 
>> One thing is the #include at the top. Do you have that in your code? If Fortran does not find the interface,
>> then it will just SEGV.
>> 
>>   Thanks,
>> 
>>     Matt
>>  
>>> 	Monica
>>> 
>>>> On 30 Jun 2023, at 12:50, Matthew Knepley <knepley at gmail.com <mailto:knepley at gmail.com>> wrote:
>>>> 
>>>> On Fri, Jun 30, 2023 at 6:47 AM Ngoc Mai Monica Huynh <ngocmaimonica.huynh at unipv.it <mailto:ngocmaimonica.huynh at unipv.it>> wrote:
>>>>> Hi,
>>>>> 
>>>>> I have no problem now in compiling, thank you for providing the Fortran interface.
>>>>> I have a follow up question.
>>>>> When running the code, I get this error, which I’m pretty sure it is related to DMDAGetElements(), since up to that line everything works fine.
>>>>> 
>>>>> [0]PETSC ERROR: ------------------------------------------------------------------------
>>>>> [0]PETSC ERROR: Caught signal number 11 SEGV: Segmentation Violation, probably memory access out of range
>>>>> [0]PETSC ERROR: Try option -start_in_debugger or -on_error_attach_debugger
>>>>> [0]PETSC ERROR: or see https://petsc.org/release/faq/#valgrind and https://petsc.org/release/faq/
>>>>> [0]PETSC ERROR: ---------------------  Stack Frames ------------------------------------
>>>>> [0]PETSC ERROR: No error traceback is available, the problem could be in the main program. 
>>>>> --------------------------------------------------------------------------
>>>>> MPI_ABORT was invoked on rank 0 in communicator MPI_COMM_WORLD
>>>>> with errorcode 59.
>>>>> 
>>>>> NOTE: invoking MPI_ABORT causes Open MPI to kill all MPI processes.
>>>>> You may or may not see output from other processes, depending on
>>>>> exactly when Open MPI kills them.
>>>>> —————————————————————————————————————
>>>>> 
>>>>> The lines of code I’m working on are the following:
>>>>> 
>>>>>       integer ierr
>>>>> 
>>>>>       MPI_Comm comm
>>>>>       DM da3d
>>>>>       ISLocalToGlobalMapping map
>>>>>       PetscInt nel,nen
>>>>>       PetscInt, pointer :: e_loc(:)
>>>>> 
>>>>>       call DMDACreate3d(comm,DM_BOUNDARY_NONE,DM_BOUNDARY_NONE,
>>>>>      &                  DM_BOUNDARY_NONE,DMDA_STENCIL_BOX,433,41,29,
>>>>>      &                  8,2,1,3,1,PETSC_NULL_INTEGER,
>>>>>      &                  PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,
>>>>>      &                  da3d,ierr)
>>>>>       call DMSetMatType(da3d,MATIS,ierr)
>>>>>       call DMSetFromOptions(da3d,ierr)
>>>>>       call DMDASetElementType(da3d,DMDA_ELEMENT_Q1,ierr)
>>>>>       call DMSetUp(da3d,ierr)
>>>>>       call DMGetLocalToGlobalMapping(da3d,map,ierr)
>>>>> 
>>>>>       call DMDAGetElements(da3d,nel,nen,e_loc,ierr)
>>>>> 
>>>>> By printing in a dummy way any kind of message before and after DMDAGetElements(), I cannot pass over it.
>>>>> Unfortunately, I cannot run with the debug option on this machine.
>>>>> Am I calling the routine in a wrong way?
>>>> 
>>>> Does
>>>> 
>>>>   src/dm/tutorials/ex11f90.F90
>>>> 
>>>> run for you?
>>>> 
>>>>   Thanks,
>>>> 
>>>>      Matt
>>>>  
>>>>> Thanks,
>>>>> 	Monica
>>>>> 
>>>>> 
>>>>>> On 29 Jun 2023, at 21:09, Matthew Knepley <knepley at gmail.com <mailto:knepley at gmail.com>> wrote:
>>>>>> 
>>>>>> On Thu, Jun 29, 2023 at 3:05 PM Ngoc Mai Monica Huynh <ngocmaimonica.huynh at unipv.it <mailto:ngocmaimonica.huynh at unipv.it>> wrote:
>>>>>>> Thank you.
>>>>>>> Does this mean that DMDARestoreElements() is supported as well now? 
>>>>>> 
>>>>>> Yes.
>>>>>> 
>>>>>>  Thanks,
>>>>>> 
>>>>>>     Matt
>>>>>>  
>>>>>>> Monica
>>>>>>> 
>>>>>>> 
>>>>>>>> Il giorno 29 giu 2023, alle ore 20:17, Barry Smith <bsmith at petsc.dev <mailto:bsmith at petsc.dev>> ha scritto:
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>>   The code is ready in the branch barry/2023-06-29/add-dmdagetelements-fortran https://gitlab.com/petsc/petsc/-/merge_requests/6647
>>>>>>>> 
>>>>>>>>   Barry
>>>>>>>> 
>>>>>>>> 
>>>>>>>>> On Jun 29, 2023, at 12:41 PM, Ngoc Mai Monica Huynh <ngocmaimonica.huynh at unipv.it <mailto:ngocmaimonica.huynh at unipv.it>> wrote:
>>>>>>>>> 
>>>>>>>>> That would be amazing, thank you very much!
>>>>>>>>> 	Monica
>>>>>>>>> 
>>>>>>>>>> On 29 Jun 2023, at 18:38, Barry Smith <bsmith at petsc.dev <mailto:bsmith at petsc.dev>> wrote:
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> I can provide the Fortran interface this afternoon.
>>>>>>>>>> 
>>>>>>>>>>  Barry
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>>> On Jun 29, 2023, at 10:48 AM, Ngoc Mai Monica Huynh <ngocmaimonica.huynh at unipv.it <mailto:ngocmaimonica.huynh at unipv.it>> wrote:
>>>>>>>>>>> 
>>>>>>>>>>> Hi everyone, 
>>>>>>>>>>> 
>>>>>>>>>>> I would need to use the routine DMDAGetElements() in our Fortran code.
>>>>>>>>>>> However, as I read from the manual, there is no Fortran support for this routine.
>>>>>>>>>>> Is there any similar alternative there?
>>>>>>>>>>> 
>>>>>>>>>>> Many thanks!
>>>>>>>>>>> Best regards,
>>>>>>>>>>> 	Monica Huynh
>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> -- 
>>>>>> 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/>
>> 
>> 
>> -- 
>> 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/20230630/e173dbe8/attachment-0001.html>


More information about the petsc-users mailing list