dolfin team mailing list archive
-
dolfin team
-
Mailing list archive
-
Message #03775
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