Boost logo

Boost :

From: Kresimir Fresl (fresl_at_[hidden])
Date: 2002-01-20 04:57:06


jhrwalter wrote:

> Toon Knapen <toon.knapen_at_s...> wrote:

>> But another concept I'm missing, and which is in neither of the
>> three libraries, is creating a sub-array (of the same order as the

>> array) that contains a specific selection of indices for every

>> dimension of the array. e.g. in the 2D case I would like to do

>> matrix< double > A(8,8);
>> boost::array<3> i1 = { 0,1,6 };
>> boost::array<5> i2 = { 5,6,7 };
>> sub_matrix sub_A = submatrix(A, i1,i2 );

>> where sub_A contains all element that are in columns 5,6 and 7 and
>> in rows 0,1 and 6. The difference with a range is thus that this
>> subarray is not a continuous block in the original array. The diff with the
>> current definition of slicing is that the selection does not need to be
>> strided.

In 1D case this is very similar to `indirect_array' view of `std::valarray'.

>> Is there a reason this kind of subarray does not exist ?

> Interesting question. Should this sub matrix support dense matrices
> only or sparse matrices also (the old question of genericity ;-)?

Both. FEM matrices, for example, are usually sparse.

>> Currently, my only loop is for assembling my FEM matrix from all
>> local element matrices which comes down basically to assigning
>> a subarray with non-strided indices.

fres


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk