# [Trilinos-Users] Resend: Problem with Multiply()

Tudor Buican tudor at timb.com
Fri Jul 18 07:53:24 MDT 2008

```I'm resending this message which may have not reached the list.

==============================================================
Hi, everybody.

I am trying to multiply a rectangular Epetra_CrsMatrix, which I
construct from an MM file, by an Epetra_Vector, using the Multiply(...)
method. It all works fine if I read in an MM file for a square matrix,
but I run into problems with files for rectangular matrices.

1. Here is my MM file for a simple 12X10 matrix:

%%MatrixMarket matrix coordinate real general
% Generated 02-Jul-2008
12 10 10
1 1 1
2 2 1
5 3 1
6 4 1
7 5 1
9 6 1
9 7 1
10 8 1
11 9 1
12 10 1

2. I read in the file with

Epetra_CrsMatrix* pNull;
EpetraExt::MatrixMarketFileToCrsMatrix(argv[2], mMap, mMap, nMap,
pNull);

where mMap and nMap are constructed as

Epetra_Map mMap(M, 0, Comm);
Epetra_Map nMap(N, 0, Comm);

with M=12 (No. of rows) and N=10 (No. of columns). The resulting matrix,
pointed to by pNull, prints out as

Number of Global Rows        = 12
Number of Global Cols        = 10
Number of Global Diagonals   = 2
Number of Global Nonzeros    = 10
Global Maximum Num Entries   = 2
** Matrix is Lower Triangular **

Number of My Rows        = 12
Number of My Cols        = 10
Number of My Diagonals   = 2
Number of My Nonzeros    = 10
My Maximum Num Entries   = 2

Processor    Row Index    Col Index           Value
0             0             0                       1
0             1             1                       1
0             4             2                       1
0             5             3                       1
0             6             4                       1
0             8             5                       1
0             8             6                       1
0             9             7                       1
0            10             8                       1
0            11             9                       1

So far, so good.

3. However, the domain map for this matrix, as returned by pNull-
>DomainMap(), is not nMap with its 10 global elements, but a map with 12
global elements, just like the row and range maps. Moreover, the result
is the same if I use nMap and mMap for range and domain maps,
respectively!

4. If I try to multiply the above matrix by q, a 10-element
Epetra_Vector constructed with nMap, with the result in p, a 12-element
vector constructed with mMap,

pNull->Multiply(false, q, p);

I get the following error messages:

Epetra ERROR -3, ../../../../packages/epetra/src/Epetra_DistObject.cpp,
line 110
Epetra ERROR -3, ../../../../packages/epetra/src/Epetra_CrsMatrix.cpp,
line 2353

(I'm using Trilinos v. 8.0.4.)

5. However,

pNull->Multiply(true, q, p);

works and q is multiplied by the transposed matrix, but as if this was a
12X12 problem, with q and the matrix being padded with 0s.

========================

Can anybody figure out what it is that I'm doing wrong?

-Tudor

--
Tudor N. Buican, PhD
Managing Member
SEA LLC
phone: 505-271-9925, 505-818-7303
fax: 505-271-9925
email: tudor at timb.com

```