Changing the Bilinear Sparse Matrix values

More
5 years 4 months ago #1666 by Elsakori
Hi,

I am trying to change some of the values of the bilinear sparse matrix (a.mat) after the assemble statement (a.Assemble()) by making them equal zeros.
This is what I tried to do:
print('a.mat.nze1=',a.mat.nze)
if fes.ndof > edges_no:
for i in range(edges_no):
for j in range(edges_no,fes.ndof+1):
if a.mat[i,j] != 0:
a.mat[i,j]=0
a.mat.Update()
print('a.mat.nze2=',a.mat.nze)

But the number of non zeros of the matrix, before and after, is the same the change, which should be change.
I appreciate any clarification and help.

Note: Find attached a copy of the code
More
5 years 4 months ago #1669 by mneunteufel
Hi Elsakori,

the a.mat.Update() call does not recompute the sparsity pattern.
The Update() method is used to refactor the inverse or to update a preconditioner .

In your case the method does nothing, as far as I know.

Best
Michael
More
5 years 4 months ago #1671 by Elsakori
Thank you Michael for the explanation. I hope someone give me alternative way to do this.
More
5 years 4 months ago #1672 by joachim
the matrix entries are set to zero, as you wish.

nze gives you the number of potentially non-zero entries of the sparse matrix, but does does not check if they are actually zero numerically
More
5 years 4 months ago #1678 by Elsakori
Thank you joachim
Time to create page: 0.104 seconds