Particular sub-matrix from a global matrix

from fenics import *

import numpy as np

Create mesh and function space

mesh = UnitSquareMesh(96,96)

cell = triangle

U = FiniteElement(“BDM”, cell, 1)

V = VectorElement(‘DG’, cell, 0)

Mixed_element = MixedElement([U,V])

W = FunctionSpace(mesh, Mixed_element)

dim1 = W.sub(0).dim()

nt = mesh.num_cells() # number of elements(triangles)

print(“dimU=”,dim1)

print(“dimV=”,2*nt)

Trial and test functions

(u,v) = TrialFunctions(W)

(u1, v1) = TestFunctions(W)

A = PETScMatrix()

dx = Measure(‘dx’, domain=mesh)

assemble(dot(u,v1)*dx, tensor=A)

A1 = np.array(A.array())

A2 = np.zeros([dim1,2*nt])

for cell in cells(mesh):

t_n = cell.index() # triangle number

element_edges = cell.entities(1)

dof_u = W.sub(0).dofmap().cell_dofs(t_n)

dof_v = W.sub(1).dofmap().cell_dofs(t_n)

for i in range(3):

for j in range(2):

A2[2 * element_edges[i], 2 * t_n + j] = A1[dof_v[j], dof_u[2 * i]]

A2[2 * element_edges[i] + 1, 2 * t_n + j] = A1[dof_v[j], dof_u[2 * i + 1]]

I have provided a snippet of my code. I need the matrix A2 for updating some entries for the next iteration for higher discretization like 96-96,128-128 etc. But i am getting the error
zsh: killed.
This might be due to storing large size matrix A1. Is there any alternative to this ?
It will be really helpful for me.

Please do not start duplicate posts with very similar questions to the one you have just opened. Continue in Accessing entries of Global size matrix, after reading the links I posted there.