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.

Difference between 'umfpack' and 'pardiso'

More
3 years 11 months ago #2783 by dong
I would like to ask a question about different direct solvers.

With umfpack flag, there is traceback call when running the following code.
Code:
#Solve inv = a.mat.Inverse(freedofs=X.FreeDofs(), inverse="umfpack") res = f.vec.CreateVector() res.data = f.vec - a.mat*gfu.vec gfu.vec.data += inv * res
NgException: UmfpackInverse: Numeric factorization failed.

But when I changed to inverse="pardiso" or without that flag. The code run without any errors.
Code:
#Solve inv = a.mat.Inverse(freedofs=X.FreeDofs(), inverse="pardiso") res = f.vec.CreateVector() res.data = f.vec - a.mat*gfu.vec gfu.vec.data += inv * res
Code:
#Solve inv = a.mat.Inverse(freedofs=X.FreeDofs()) res = f.vec.CreateVector() res.data = f.vec - a.mat*gfu.vec gfu.vec.data += inv * res

Could you please tell me what the difference between 'umfpack' , 'pardiso' and no flag is?
Thank you so much.
Attachments:
More
3 years 11 months ago - 3 years 11 months ago #2797 by christopher
Hi, pardiso and umfpack are 2 different direct sparse solvers, if no argument is provided and both are installed pardiso is used.
Umfpack (most likely correctly) tells you that your system is singular and therefore not solveable. Pardiso can "solve" it by numerical error, so the round off errors make your system regular.
Last edit: 3 years 11 months ago by christopher.
More
3 years 6 months ago #3231 by Libo-Yan
Hello Christopher,

If I test the example Fluid-structure interaction proposed by MICHAEL NEUNTEUFEL:

I received the error:

NgException: SparseMatrix::InverseMatrix: UmfpackInverse not available

Then I tried to fix this error as the followings:

stokes.mat.Inverse(bts, inverse = "pardiso")

Then, I received the error:
The kernel appears to have died. It will restart automatically.

I am using Anaconda in WIN10.

Thanks in advance!

Libo Yan
Time to create page: 0.129 seconds