← Back to team overview

dolfin team mailing list archive

Re: Image to Function data structure conversion

 

On Sat, Feb 14, 2009 at 5:34 PM, Johan Hake <hake@xxxxxxxxx> wrote:
> On Saturday 14 February 2009 17:28:18 Garth N. Wells wrote:
>> Johan Hake wrote:
>> > On Saturday 14 February 2009 13:48:05 A Navaei wrote:
>> >> It seems that the error can be re-produced even without sub-classing
>> >> and using existing dolfin classes in pure c++. Based on the itk-dolfin
>> >> interface code, the below minimal code should generate the error (note
>> >> that I use the binary distribution which uses std::tr1, replacing it
>> >> with boost shared pointer should not have any effect).
>> >
>> > Not in c++ but swig only support std::tr1::shared_ptr from version
>> > 1.3.37. But if you intend to use shared_ptr only internally there whould
>> > not be any problems.
>> >
>> >> After wrapping in python:
>> >>
>> >> (1) Calling FunctionTest.CreateFunction(), which returns by value,
>> >> results this error:
>> >>
>> >> RuntimeError: *** Error: Unable to assign to function, missing
>> >> coefficients (user-defined function).
>> >
>> > You cannot assign another user-defined function to another Function. It
>> > must be a discrete function, which has an initialized _vector. This is
>> > probably a feature that other developers should answer for.
>> >
>> > However this means that you cannot copy a userdefined function, with the
>> > side effect of not beeing able to return a user-defined Function by
>> > value.
>> >
>> >> Since dolfin::Function does come with the required copy ctors, the
>> >> problem cannot be stemmed from this.
>> >
>> > This use the assignment operator which requires the Function to be a
>> > discrete and not a user-defined Function.
>> >
>> > I consider this to be a bug in the library. Any other comments from the
>> > C++ DOLFIN developers (I am mostly dealing with the python interface)?
>>
>> In a nutshell, are you suggesting that the Function copy constructor
>> should work for user-defined Functions?
>
> Yes. Why shouldn't it?
>
> I can see why the assigment operator should not work.

If I understand this right, what you propose is probably not
technically possible in C++ with the current design. The old design
which used the envelope-letter could have dealt with this.

Martin


Follow ups

References