<html><head></head><body><div style="font-family: Verdana;font-size: 12.0px;"><div>
<div>A11 and A33 are calculated spepartely in my program with LU factorization and MatMatSovle using ELEMENTAL. The size of A11 and A33 may vary but they will always be much smaller than the whole matrix M. I will give MatConvert() a shot. Even if it is not so efficient I guess eventually the time critical step will be processing M. </div>

<div> </div>

<div>thanks.</div>

<div> 
<div name="quote" style="margin:10px 5px 5px 10px; padding: 10px 0 10px 10px; border-left:2px solid #C3D9E5; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">
<div style="margin:0 0 10px 0;"><b>Gesendet:</b> Montag, 28. Mai 2018 um 14:20 Uhr<br/>
<b>Von:</b> "Smith, Barry F." <bsmith@mcs.anl.gov><br/>
<b>An:</b> "Marius Buerkle" <mbuerkle@web.de>, "PETSc users list" <petsc-users@mcs.anl.gov><br/>
<b>Betreff:</b> Re: [petsc-users] MatGetValues / MatGetRow</div>

<div name="quoted-content"><br/>
<br/>
> On May 28, 2018, at 12:15 AM, Marius Buerkle <mbuerkle@web.de> wrote:<br/>
><br/>
> No M is stored as MPIAIJ, as all but the A11 and A33 blocks are very sparse. I want to add A11 and A33 which are calculuted seperatly using MATSOLVERELEMENTAL into the bigger matrix M and then use a sparse solver on M.<br/>
<br/>
Hmm, how big are the A11 and A33? Who calculates them separately?<br/>
<br/>
I would use MatConvert() on these two "separate" matrices as I mentioned before and call MatSetValues() with the resulting dense matrices to put the<br/>
"dense" values into the sparse M matrix.<br/>
<br/>
<br/>
Barry<br/>
<br/>
><br/>
><br/>
><br/>
><br/>
> > On May 27, 2018, at 11:23 PM, Marius Buerkle <mbuerkle@web.de> wrote:<br/>
> ><br/>
> > Thanks for the swift reply. I want to from, eventually invert, a sparse matrix of the form M=[A11 A12 A13 , A21 A22 A23 , A31 A32 A33], where A11 and A33 are dense square matrices which have a (much) smaller dimension than the other (sparse) sub matrices of M. A11 and A33 are obtained from a separate calculation.<br/>
><br/>
> I don't understand how this relates to your elemental question?<br/>
><br/>
> How are you storing the M matrix? As Elemental matrix?<br/>
><br/>
> Barry<br/>
><br/>
> ><br/>
> ><br/>
> ><br/>
> ><br/>
> ><br/>
> >><br/>
> >> Hi !<br/>
> >><br/>
> >> Are MatGetValues / MatGetRow implemented for MATELEMENTAL?<br/>
> ><br/>
> > A quick check seems to say no.<br/>
> ><br/>
> >> Or is there another way to access the elements of an ELEMENTAL matrix?<br/>
> ><br/>
> > There is no obvious way to access the elements of an Elemental matrix except to directly access the elemental data structure (which presumably is hairy) or to MatConvert(A,MATDENSE,MAT_INITIAL_MATRIX,&Adense); and then access in the dense format (note this conversion is expensive and needs to do communication).<br/>
> ><br/>
> ><br/>
> > Why do you wish to access the values directly instead of use them indirectly with the API, such as matrix-vector products, factorizations etc?<br/>
> ><br/>
> ><br/>
> ><br/>
> > Barry<br/>
> ><br/>
> >><br/>
> >> best,<br/>
> >> marius<br/>
> ><br/>
><br/>
 </div>
</div>
</div>
</div></div></body></html>