​The problem was that HAS_PETSC4PY was not defined in the compiled
extension module. I will fix this.

Johan​

On Tue, Nov 4, 2014 at 10:58 AM, Jan Blechta <[email protected]>
wrote:

> On Tue, 4 Nov 2014 09:12:51 +0100
> Øyvind Evju <[email protected]> wrote:
>
> > Thanks, Johan, but the error still persist. And thank for the neat
> > trick, Jan, but that also doesn't solve this specific issue.
>
> Don't know if it helps here but you may need to use the pattern like
>
> // typemaps
> #ifdef SWIG
> %include "petsc4py/petsc4py.i"
> #endif
>
> // includes
> #include ...
>
> namespace dolfin {
>   // your code
> }
>
> otherwise compile_extension_module wraps whole code to namespace
> dolfin {} block thus moving #included code to dolfin namespace which
> was not expected.
>
> Jan
>
> >
> >
> > -Øyvind
> >
> >
> > 2014-11-03 17:11 GMT+01:00 Jan Blechta <[email protected]>:
> >
> > > BTW, you can add any typemap missed by DOLFIN by adding something
> > > like
> > >
> > > #ifdef SWIG
> > > %include "petsc4py/petsc4py.i"
> > > #endif
> > >
> > > or in this case
> > >
> > > #ifdef SWIG
> > > %include "dolfin/swig/common/pre.i"
> > > #endif
> > >
> > > to your extension code.
> > >
> > > Jan
> > >
> > >
> > > On Mon, 3 Nov 2014 16:40:16 +0100
> > > Johan Hake <[email protected]> wrote:
> > >
> > > > Could you check if it is fixed with this branch?
> > > >
> > > >   johanhake/fix-swig-common-include
> > > >
> > > > You probably need to remove all compiled extension modules from
> > > > the cache.
> > > >
> > > >   rm -rf ~/.instant/cache/dolfin_*
> > > >
> > > > Johan
> > > >
> > > > On Mon, Nov 3, 2014 at 4:28 PM, Øyvind Evju <[email protected]>
> > > > wrote:
> > > >
> > > > > Great :)
> > > > >
> > > > >
> > > > > -Øyvind
> > > > >
> > > > > 2014-11-03 16:26 GMT+01:00 Johan Hake <[email protected]>:
> > > > >
> > > > >> No it is not :)
> > > > >>
> > > > >> It is included using #include but not %include.
> > > > >>
> > > > >> I can push a fix for this.
> > > > >>
> > > > >> Johan
> > > > >>
> > > > >> On Mon, Nov 3, 2014 at 4:22 PM, Øyvind Evju <[email protected]>
> > > > >> wrote:
> > > > >>
> > > > >>> Yes, it is.
> > > > >>>
> > > > >>>
> > > > >>> -Øyvind
> > > > >>>
> > > > >>> 2014-11-03 16:09 GMT+01:00 Johan Hake <[email protected]>:
> > > > >>>
> > > > >>>> Can you check
> > > > >>>>
> > > > >>>> if dolfin/swig/common/pre.i
> > > > >>>>
> > > > >>>> is included in the generated
> > > > >>>>
> > > > >>>>
>  .instant/cache/dolfin_compile_code_XXX/dolfin_compile_code_XXX.i
> > > > >>>>
> > > > >>>> file? In that file we include tghe petsc4py.i with all the
> > > > >>>> relevant typesmaps. So if we do not include that file we
> > > > >>>> probably should :)
> > > > >>>>
> > > > >>>> Johan
> > > > >>>>
> > > > >>>> On Mon, Nov 3, 2014 at 3:52 PM, Øyvind Evju
> > > > >>>> <[email protected]> wrote:
> > > > >>>>
> > > > >>>>> When petsc4py is installed, the mpi_comm_world-function
> > > > >>>>> returns a petsc4py.PETSc.Comm-object. I guess this is true
> > > > >>>>> for all MPI communicators. When writing an extension module
> > > > >>>>> using a MPI_Comm as argument, this fails.
> > > > >>>>>
> > > > >>>>> MWE:
> > > > >>>>>
> > > > >>>>>
> > > > >>>>>
> > > > >>>>>
> > > > >>>>>
> > > > >>>>>
> > > > >>>>> *from dolfin import *cpp_module="""void foo(MPI_Comm comm)
> > > > >>>>> {}"""compiled_module =
> > > > >>>>>
> > >
> compile_extension_module(cpp_module)compiled_module.foo(mpi_comm_world())*
> > > > >>>>>
> > > > >>>>> I guess this is related to this:
> > > > >>>>>
> > >
> https://bitbucket.org/fenics-project/dolfin/issue/195/petsc4py-applies-own-typemap-for-mpi_comm
> > > > >>>>>
> > > > >>>>> Any way to work with this?
> > > > >>>>>
> > > > >>>>>
> > > > >>>>> -Øyvind
> > > > >>>>>
> > > > >>>>>
> > > > >>>>> _______________________________________________
> > > > >>>>> fenics mailing list
> > > > >>>>> [email protected]
> > > > >>>>> http://fenicsproject.org/mailman/listinfo/fenics
> > > > >>>>>
> > > > >>>>>
> > > > >>>>
> > > > >>>
> > > > >>
> > > > >
> > >
> > >
>
> _______________________________________________
> fenics mailing list
> [email protected]
> http://fenicsproject.org/mailman/listinfo/fenics
>
_______________________________________________
fenics mailing list
[email protected]
http://fenicsproject.org/mailman/listinfo/fenics

Reply via email to