Boost logo

Glas :

Re: [glas] vector space, banach space and hilbert space concepts

From: Karl Meerbergen (Karl.Meerbergen_at_[hidden])
Date: 2005-03-25 08:59:50


On Thursday 24 March 2005 22:30, Michael A Heroux wrote:
> I have been on this mailing list for several months, but have not taken the
> time to keep up with all the threads. Today I scanned through the 100+
> messages from this list. Here are a few comments:
>
> 1) I think we could really benefit from an all-out brainstorming on the
> requirements, specifically use cases and scenarios, we want to support. I
> am extremely sympathetic to the Agile programming philosophy of
> "barely-sufficient" documentation, but I don't think we have reached that
> level yet. Who are the users and implementers of GLAS? What are the
> relationships between these groups? What are some very specific scenarios
> we want to make sure work? I don't have a good feel for this based on the
> discussion so far.

I think we have had several rounds where requirements were requested, with
very little input, unfortunately. The best document so far is the charter
that was distributed from the start, as far as I can see. Perhaps we should
redistribute the document and ask everyone if something is missing. I think
Toon has the latest version, but he is on holiday.
Perhaps the document should be rewritten, e.g. a bullet list with very
concrete objectives.

I agree that there are many concepts, but this is a result that emerged from
discussions on the mailing list. Everyone has different backgrounds, and it
is not easy to define concepts that meet everyone's exceptations, hence the
large number. Also note that I have tried to make these concepts correspond
to mathematical definitions. I think that if we use a concept vectorspace, it
should correspond to the math concept, otherwise it should get another name.
Some people talk about vectorspace when they mean hilbertspace. It creates
confusion to those who have yet another interpretation of math concepts.

[...]
> 3) On the specific topic of VectorSpace, several Trilinos packages have
> made effective use of this concept. In particular the packages TSFCore
> (becoming Thyra), Tpetra and Epetra (where it is called Map) have this
> class as a core piece of the design and functionality.
>
> VectorSpace is used for:
>
> - Generating vectors (and multivectors, which are collections of compatible
> vectors). Each vector knows its vector space, which can in turn be used to
> generate another compatible vector.
>
> - Generating matrices. A rowVectorSpace and columnVectorSpace define the
> dimension and distribution of matrix rows and columns. Note: These can be
> different than the domainVectorSpace and rangeVectorSpace (see below).
> However, since a matrix "isa" linear operator, a matrix has all four
> VectorSpace attributes.
>
> - Testing compatibility of two vectors. Compatibility is a fairly complex
> issue, and whether or not two vectors are compatible depends on the
> operation being performed. Being able to encapsulate this test and the
> required data into the VectorSpace has been very important for us.
>
> - Testing compatibility of linear operators with vectors. In Trilinos
> packages, we typically have two VectorSpace objects associated with a
> linear operator instance: the domainVectorSpace and the rangeVectorSpace.
> These are used to efficiently check for compatibility in matrix operations.
> For example, to compute y = A*x, where x and y are vectors and A is a
> matrix, we check to see that the vectorSpace of x is compatible with the
> domainVectorSpace of A and the vectorSpace of y is compatible with the
> rangeVectorSpace of A.
>
> Because of how we use VectorSpace, we encapsulate a lot of information in
> this class, including dimensional data.
>

This is very useful information. We have similar objects in our code. I wonder
whether vectorspace is the correct name for this concept. Should it not be
something related to dimensions or sizes? For example, VectorSize,
VectorSpaceSize. I do not want to use the name dimension, because this
corresponds to the dimension of the vectorspace which is not necessarily the
same as the size of a vector/matrix.

Best regards,

Karl