I would like to ask a question about different direct solvers.
With umfpack flag, there is traceback call when running the following 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.
#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
#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.
Attachment: SD.ipynb