[petsc-users] Calling DMCompositeCreate() in Fortran

Bay, Yong Yi ybay2 at illinois.edu
Fri Nov 6 15:51:58 CST 2015


Thanks for the advice. I tried running in gdb, and the crash occurred in DMCreate. However I didn't manage to figure out the reason. After looking at what DMCompositeCreate actually does, I simply called DMCreate and DMSetType instead (binding DMSetType instead) and this worked.

Yong Yi
________________________________________
From: Barry Smith [bsmith at mcs.anl.gov]
Sent: Friday, November 06, 2015 1:33 PM
To: Bay, Yong Yi
Cc: petsc-users at mcs.anl.gov
Subject: Re: [petsc-users] Calling DMCompositeCreate() in Fortran

   When something crashes it is time to run in the debugger and determine what is causing the crash. The code looks ok and we could only speculate wildly why it crashes. Running in the debugger will likely revel the problem in less than 3 minutes.

   Barry

> On Nov 6, 2015, at 12:39 PM, Bay, Yong Yi <ybay2 at illinois.edu> wrote:
>
> Hi,
>
> I noticed that DMCompositeCreate() does not exist in fortran format. What would be the best way to call this function if my code is written in Fortran? I tried using iso_c_binding as follows and it compiles but crashes on execution.
>
> interface
>     subroutine DMCompositeCreate(comm, dm) bind(C,name="DMCompositeCreate")
>          import
>          integer(c_int), value      :: comm
>          integer(c_long), value   :: dm
>     end subroutine DMCompositeCreate
> end interface



More information about the petsc-users mailing list