Make MUMPS and others solvers available on NGSolve install with PIP

Dear community.

It seems that the only solver with the default instalation of NGSolve with PIP and linux installers is UMFPACK.
For instance, on one side I have installed NGSolve using the pip install and Pypi. When trying to run the typical

inv = K.mat.Inverse(fes.FreeDofs(), inverse="mumps")

Then the following error comes:

netgen.libngpy._meshing.NgException: SparseMatrix::InverseMatrix: MumpsInverse not available

Similar error happen with the rest of the solvers like pardiso, superlu, sparsecholesky, etc.

When trying to run the same approach, but now on a Ubuntu 22.04 system and the NGSolve PPA repo, I got the same errors.

What is the proper way of making the solvers available?. Can this be done in an Anaconda environment + pip install?.

Thanks in advance.

You can install now PETSc via pip and add configuration flag that makes it download also MUMPS. See NGSolve 24 — NGSolve 24
.
In particular, you want:

export PETSC_CONFIGURE_OPTIONS="--with-fc=0 --with-debugging=0 --download-hypre --download-mumps \
         COPTFLAGS=\"-O2\" CXXOPTFLAGS=\"-O2\" "

After you have PETSc with mumps you can use ngsPETSc with MUMPS in a very easy manner, see: Solving the Poisson problem with different preconditioning strategies — ngsPETSc 0.0.5 documentation
In particular, it is sufficient to set the "pc_factor_mat_solver_type": "mumps"} in the solver parameters dictionary.

1 Like