# [petsc-users] Transpose of Block Matrix with aij type

Choi240 choi240 at purdue.edu
Tue Apr 23 18:05:41 CDT 2013

```Hi,

Thank you for your reply. But A1,A2 are not square(3x4). B1~B4 are 3x3 matrices. So A1*B1 is not impossible.

Best regards,
Joon

-------- Original message --------
Subject: Re: [petsc-users] Transpose of Block Matrix with aij type
From: Karl Rupp <rupp at mcs.anl.gov>
To: Choi240 <choi240 at purdue.edu>
CC: petsc-users at mcs.anl.gov

Hi again,

if you have control over the structure of B, what about computing
[A1 A2] * [B1 B3; B2 B4]

Best regards,
Karli

On 04/23/2013 05:17 PM, Choi240 wrote:
> Hi,
>
> I have to compute multiplication between two block matrices. It should
> be as follows:
>
> B1 | B2         A1        B1A1+B2A2
> ----------   *   ---   =   ---------------
> B3 | B4         A2        B3A1+B4A2
>
> However, I just have A =  [A1 A2]. So, I need to get A^T. Is there a way
> I can get the transpose of this block matrix with the MatTranspose()? Or
> do I have to use another function such as MatGetSubMatrices()?
>
> Thank you,
> Joon
>
>
>
> -------- Original message --------
> Subject: Re: [petsc-users] Transpose of Block Matrix with aij type
> From: Karl Rupp <rupp at mcs.anl.gov>
> To: petsc-users at mcs.anl.gov
> CC: choi240 at purdue.edu
>
>
> Hi,
>
> why would you expect that the transpose of a 3x8 matrix is not a 8x3-matrix?
>
> Best regards,
> Karli
>
>
> On 04/23/2013 03:27 PM, Joon hee Choi wrote:
>  > Hello,
>  >
>  > I tried to get transpose of block matrix(just with aij type), but the
> result was not a block matrix. For example,
>  >
>  > A =
>  > 1 2 3 4 | 4 3 2 1
>  > 2 3 4 5 | 5 4 3 2
>  > 3 4 5 6 | 6 5 4 3
>  >
>  >
>  > AT(expected) =
>  > 1 2 3 4
>  > 2 3 4 5
>  > 3 4 5 6
>  > -------
>  > 4 3 2 1
>  > 5 4 3 2
>  > 6 5 4 3
>  >
>  >
>  > AT(result) =
>  > 1 2 3
>  > 2 3 4
>  > 3 4 5
>  > 4 5 6
>  > 4 5 6
>  > 3 4 5
>  > 2 3 4
>  > 1 2 3
>  >