[Trilinos-Users] Solving a Reduced System

Bartlett, Roscoe A rabartl at sandia.gov
Fri Nov 4 15:55:36 MST 2005


Simone,

Sorry for the long delay in responding to this.  The ability to
explicitly form a sparse matrix from blocks as you describe in being
tentatively planned for Thyra with some implementation to go into
EpetraExt to support Epetra_CrsMatrix objects.  However, we are not sure
if there is one best way to do this.  For example, how should you
interleave the maps for each of the block matrices on each processors?
The choice you make could affect how algebraic preconditioners perform
for example.  Note that Andy Salinger is doing something like this for
transient problems (i.e. his 4D project) but I think this code is in
NOX.

Cheers,

Ross

-----Original Message-----
From: Mike Heroux [mailto:maherou at sandia.gov] 
Sent: Tuesday, October 18, 2005 4:58 PM
To: 'Simone Deparis'; trilinos-users at software.sandia.gov
Cc: Hoekstra, Robert J; Bartlett, Roscoe A; Long, Kevin R
Subject: RE: [Trilinos-Users] Solving a Reduced System

> I have two questions and two notes:
> Q1- Do you have a version where a view is created instead of a copy 
> (such that no need for fwd and rvc)?
>     Do you think it is possible the way you code it?

Making submatrices that are views of an existing matrix is not generally
possible given some of the implicit assumption about underlying data
structures.  We have had discussions about how to possibly support this,
but have not made progress on any concrete implementation.  There is a
transform class in EpetraExt called CrsMatrix_View that does exactly
what you want, but because of data structure restrictions, the rows of
the submatrix must be stored contiguously. 

Your request is a reasonable one, and one that could be accomplished at
least partially by providing an implementation of Epetra_RowMatrix that
supports a submatrix view of an Epetra_CrsMatrix.  This view would not
be a full-fledged Epetra_CrsMatrix, but often an Epetra_RowMatrix is
sufficient.


I have added this to the feature list for the next Trilinos release.

> 
> Q2- Do you have a class that does the opposite, i.e., from several 
> matrices, create a global matrix? E.g., in matlab:
> subA11, subA12, subA21, subA22 are given, then create A= [ subA11, 
> subA12
>      subA21, subA22];

There is nothing explicitly like this in Epetra or EpetraExt.  There is
functionality that has been part of the Trilinos abstract interfaces,
the TSF packages that are now part way through a transition into Thyra.
These classes support a light-weight (no data copy) aggregation of
multiple operators to be used as a single global operator.  I have
copied Kevin Long and Ross Bartlett who are the primary developers of
these tools, in case they have more to say.

I have also attached a class that I wrote some time ago to support Schur
Complement operators built from Epetra objects.  Your subscripts suggest
that you might be trying something similar, so I thought you might find
this class of use.

Mike



More information about the Trilinos-Users mailing list