Forum Message

 

 

We have moved the forum to https://forum.ngsolve.org . This is an archived version of the topics until 05/05/23. All the topics were moved to the new forum and conversations can be continued there. This forum is just kept as legacy to not invalidate old links. If you want to continue a conversation just look for the topic in the new forum.

Notice

The forum is in read only mode.

Changing the Bilinear Sparse Matrix values

More
4 years 9 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
4 years 9 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
4 years 9 months ago #1671 by Elsakori
Thank you Michael for the explanation. I hope someone give me alternative way to do this.
More
4 years 9 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
4 years 9 months ago #1678 by Elsakori
Thank you joachim
Time to create page: 0.129 seconds