Anders Logg wrote:
> On Sat, Jun 21, 2008 at 05:29:14AM -0400, Hatef Monajemi wrote:
>> Hi
>> Isn't this code supposed to work? It gives me "invalid lvalue in
>> assignment" error while compiling. How should I assign the elements of
>> a Matrix???
>>
>> //-------------------------------
>> int main()
>> {
>>
>>
>> for(i=0; i<nens; i++)
>> .
>> .
>> .
>> real* values = new real[nstat];
>> u1.interpolate(values);
>>
>> Matrix S(nstat,nens);
>>
>> for(int j=0;j<nstat;j++)
>> {
>> S(j,i)=values[j];
>> }
>>
>> }
>
> Sorry, this doesn't work yet.
>
> We can easily fix this in the GenericMatrix interface by adding an
> auxiliary class MatrixEntry (which just holds (i, j) and a reference
> to the matrix) and have operator() return that, then overload
> operator= in MatrixEntry to assign to the matrix.
>
> We had this in DOLFIN 2-3 years back but the linear algebra has gone
> through several reimplementations since then...
>
> Until this has been implemented, you can use the setitem() function.
>
I don't know if we want this because the operation is ill-suited to some
linear algebra back-ends and adding it encourages its use. If
element-wise access is needed, the uBlas matrix class should be used.
Garth
> And please file a bug report for this. Mark it as "enhancement".
>
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> DOLFIN-dev mailing list
> [email protected]
> http://www.fenics.org/mailman/listinfo/dolfin-dev
_______________________________________________
DOLFIN-dev mailing list
[email protected]
http://www.fenics.org/mailman/listinfo/dolfin-dev