Matrices dispersas de scipy como entrada para petsc4py

Parece que no puedo encontrar una manera de cargar eficientemente matrices dispersas dispersas, por ejemplo, csr_matrix , en una matriz de petsc4py, por ejemplo, PETSc.Mat().createAIJ . Encontré este hilo , pero no puedo aplicarlo.

También apreciaría un puntero donde este material está realmente documentado. Los ejemplos en el directorio de demo solo explican una parte, y no puedo ver ninguna cadena de documentación.

Su enlace dice que para crear una matriz dispersa en PETSc, debe usar un comando como este:

 PETSc.Mat().createAIJ(size=(nrows,ncols), csr=(ai,aj,aa)) 

De acuerdo con esto , ai , aj y aa son, en lenguaje PETSc:

 > i - row indices > j - column indices > a - matrix values 

Estos son equivalentes, respectivamente, a los .indptr , .indices y .data de scypy.sparse.csr_matrix ; consulte la documentación para obtener más información.

Entonces, si su enlace es correcto, lo siguiente debería funcionar:

 >>> 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)) 

Desafortunadamente, no puedo probarlo yo mismo.