On Tue, Feb 17, 2009 at 04:06:50PM +0000, A Navaei wrote: > 2009/2/17 Anders Logg <[email protected]>: > > On Tue, Feb 17, 2009 at 03:59:51PM +0000, A Navaei wrote: > >> 2009/2/17 A Navaei <[email protected]>: > >> > The following minimal test for Function in c++ reveals some bugs. I > >> > guess this example can help me with dealing with the current issues of > >> > ImageFunction. > >> > > >> > (1) interpolate.py does not work when a Function is created in c++ and > >> > wrapped (see comment [2]). It seems that the bug is originated from > >> > the copy constructor (see comment [3]) > >> > > >> > (2) In order to perform the interpolation, why is it necessary to > >> > create another Function and then copy it? > >> > > >> > (3) Signature checkes seem not working properly (see comment [1]). The > >> > signature-based assignments are error-prone anyway, why the > >> > object-oriented approach is not used? > >> > > >> > > >> I'm adding another issue: > >> > >> (4) Sub-classing Function and calling the sub-class interpolate() > >> function does not call eval(). > > > > Which interpolate() function? There are 4 different. > > The one used in comment [4].
Yes, I see that now. This is expected behavior. The reason is that the call to vector() will create a zero vector if there is no vector. Once the vector has been created, the Function will change from being a user-defined function to a discrete function which means that eval() will not be called. I don't know what the best solution is. We could either add a new function just called interpolate() without arguments that interpolates the function to its function space. Or one can work around it by Vector x; v.interpolate(x, v.function_space()); v.vector() = x; -- Anders
signature.asc
Description: Digital signature
_______________________________________________ DOLFIN-dev mailing list [email protected] http://www.fenics.org/mailman/listinfo/dolfin-dev
