← Back to team overview

dolfin team mailing list archive

Re: Problems in assemble.py

 

On Friday 05 December 2008 08:55:44 Martin Sandve Alnæs wrote:
> 2008/12/4 Johan Hake <hake@xxxxxxxxx>:
> > On Thursday 04 December 2008 20:44:20 Anders Logg wrote:
> >> I have moved the jit function and the code from get_dolfin_form to
> >> separate modules.
> >>
> >> The JIT compilation seems to work fine, but the _ufc_form member in
> >> the generated dolfin::Form subclass seems to be zero. See comment at
> >> the top of the the assemble function.
> >>
> >> Any ideas what goes wrong? If we get this working, we can remove most
> >> of the code from assemble.py and reuse it also in pde.py.
> >
> > It is fixed now.
> >
> > This is the same problem we have with the compiled elements and dofmaps
> > in FunctionSpace. You need to store a reference to the compiled form,
> > otherwise swig will garbage collect the form when it goes out of scope,
> > killing also the actuall cpp_ufc_form.
>
> This is the kind of issue I'm hoping SWIGs shared_ptr bindings can help us
> with.

True. But I had no luck with it. I do not know where the error resides. I 
actually made a minimal test .cpp file I wrapped with swig, using both 
shared_ptr and raw pointers. This behaved as expected. Swig garbage collected 
the objects stored with raw pointers, but did not do it for the shared_ptr 
stored one. So it _should_ just work.

Johan


Follow ups

References