← Back to team overview

dolfin team mailing list archive

Re: passing functions

 

> I think I know what goes wrong now...
>
> The problem is the current design of the DiscreteFunction class. It
> keeps pointers to a Vector, a Mesh and a FiniteElement and gets
> confused about who actually owns the data.
>
> Here's a simple example to illustrate this:
>
>     BilinearForm a;
>     Function f(x, mesh, a.trial());
>     // BilinearForm a goes out of scope somehow and deletes its element
>     // Function f tries to use the FiniteElement which is deleted
>
> We've discussed using smart pointers for the data in the class
> DiscreteFunction before and that should do the trick. Does someone
> have time to look into this?
>
> /Anders
>

The same problem arises in Python when you want this type of concept:

def foo():

  x = Vector()
  f = Function(x)

  return f

so we do need some general concept of transferring ownership. Smart
pointers would solve this problem as well as far as I can see. I don't
have a lot of time, but I can take responsibility for this if nobody else
volunteers.

  Johan




Follow ups

References