Johan Hake wrote:
> On Saturday 14 February 2009 17:45:44 Martin Sandve Alnæs wrote:
>> On Sat, Feb 14, 2009 at 5:34 PM, Johan Hake <[email protected]> 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.
> 
> Why's that?
> 
> The only data that needs to be copied are the FunctionSpace, when _vector is 
> null, and this is shared? Am I missing somthing wrt to the copting of any 
> derived class of Function?
>

I'm trying something now. If it works, I'll commit shortly.

Garth

> Johan


_______________________________________________
DOLFIN-dev mailing list
[email protected]
http://www.fenics.org/mailman/listinfo/dolfin-dev

Reply via email to