`OK, here is the thing. I have a 2D cartesian regular grid. I am working`

`on wavelet method collocation method, which creates an irregular`

`adaptive grid by turning grid points on an off on the previously`

`mentioned cartesian grid. I store the grid and the values as sparse Mat`

`objects, where each entry to the matrix denotes the x and y location of`

`the value (x:row, y:column). However, to feed the values into PETSc's`

`solver contexts, I have to turn them into vectors.`

## Advertising

`By the way, I believe I have solved the problem. For future reference`

`who looks for this, the algorithm is as follows;`

For each processor, 1.)Get the local number of nonzero entries on the matrix using MatGetInfo

`2.)Call MPI_Allgather so that every process will know exactly how many`

`nonzero entries each other has`

`3.)Create the Vector and set its size using the data from MPI_Allgather`

`from step 2 (sum of all local nonzero sizes)`

`4.)Call MatMPIAIJGetLocalMat to get the local portion of the matrix,`

`then call MatSeqAIJGetArray on the local portion to extract its nonzero`

`values as an array`

`5.)Using the info from step 2 and 4, set the according values on the`

`vector (e.g. if process 0 has 4 nonzeros, process 1 will set the values`

`on Vector's row 4 onwards)`

I am always open to ideas for improvements. Ali On 13-02-2018 16:46, Jed Brown wrote:

Ali Kahraman <aliberkkahra...@yahoo.com> writes:Dear All,My problem definition is as follows,I have an MPI matrix with a random sparsity pattern i.e. I do not know how many nonzeros there are on any row unless I call MatGetRow to learn it. There are possibly unequal numbers of nonzeros on every row. I want to write all the nonzero values of this matrix onto a parallel vector. An example can be as follows.Imagine I have a 4x4 matrix (; denotes next row, . denotes sparse "zeros") [3 . 2 . ; . 1 . . ; 4 5 3 2; . . . .]. I want to obtain the vector [3 2 1 4 5 3 2]. I could not find any function that does this. Any idea is appreciated.This seems like an odd thing to want. What are you trying to do?