I can’t seem to find a way how to efficiently load scipy sparse matrices, e.g.
csr_matrix, into a petsc4py matrix, e.g.
PETSc.Mat().createAIJ. I found this thread, but I’m not able to apply it.
I would also appreciate a pointer where this stuff is actually documented. The examples in the
demo directory only explain a part, and I can’t see any docstrings.
Your link says that to create a sparse matrix in PETSc, you should use a command like this:
According to this, the
aa are, in PETSc-speak:
> i - row indices > j - column indices > a - matrix values
These are equivalent, respectively, to the
.data attributes of a
scypy.sparse.csr_matrix, see the docs for details.
So, if your link is right, the following should work:
>>> from petsc4py import PETSc >>> import scipy.sparse >>> csr_mat = scipy.sparse.rand(1000, 1000, density=0.001, format='csr') >>> petsc_mat = PETSc.Mat().createAIJ(size=csr_mat.shape, ... csr=(csr_mat.indptr, csr_mat.indices, ... csr_mat.data))
Unfortunately, I cannot test it myself.