> On Jan 30, 2018, at 6:53 PM, Marius Buerkle <[email protected]> wrote:
>
> Barry,
>
> Thanks for you reply. The pulled matrix is symmetric but that's it. At the
> moment I am doing a copy of the matrix right after MatCreateSubMatrix to keep
> it's nonzero structure. To insert the matrix which I obtained after the
> multiplications back into the bigger matrix I use the initially copied Matrix
> to get the nonzero elements with MatGetRow and as I know the offset of the
> SubMatrix relative to the elements of the big-one I can use MatSetValues to
> insert the elements row by row. That kinda works but it is rather inefficient.
How do you know it is inefficient?
Are you doing some kind of search on each element of each row to see if it
fits in the original nonzero pattern of the block?
Anything else that is inefficient?
Barry
> Is there anyway to avoid copying the whole submatrix in the beginning, as I
> don't need the actual values but only the positions of the nonzero elements
> in one way or the other.
>
> Marius
>
>
>
>> Marius,
>>
>> We don't provide a way to insert a "generic" sparse matrix into a bigger
>> matrices (dense matrices coming from element stiffness matrices yes) so I
>> don't see any simple solution. >Does the submatrix you pull out have any
>> particular structure, what does it represent?
>>
>> Barry
>
>
>>>
>>> Hi !
>>>
>>> I have the followng problem. I create a Submatrix containing a subset of
>>> row/columns of the original matrix. After some matrix multiplications the
>>> non-zero strucutre of the resulting matrix changed. Now I want to insert
>>> this submatix back into the original one keeping only the non-zero entries
>>> which are present in the original matrix discarding the others which
>>> accumulated due to the matrix multiplications. Is there an easy or also not
>>> so easy way to do this ?
>>>
>>> Best,
>>> Marius
>