Installation ============ femorph-solver requires Python 3.10 or newer. .. tab-set:: .. tab-item:: pip .. code-block:: bash pip install femorph-solver .. tab-item:: uv .. code-block:: bash uv pip install femorph-solver Optional extras --------------- The core install ships with NumPy / SciPy / pyvista only — enough for the SuperLU direct-solve fallback and all in-process modal / static / transient analyses. For the fastest SPD paths and for MAPDL deck interop, install one or more extras: .. list-table:: :widths: 25 15 60 :header-rows: 1 * - Extra - Install as - What it adds * - ``mapdl`` - ``pip install "femorph-solver[mapdl]"`` - CDB / RST reader (``mapdl-archive``, ``ansys-mapdl-reader``) * - ``cholmod`` - ``pip install "femorph-solver[cholmod]"`` - SuiteSparse CHOLMOD Cholesky — fastest SPD direct solve for sparse problems. Requires ``libsuitesparse-dev``. * - ``pardiso`` - ``pip install "femorph-solver[pardiso]"`` - Intel MKL PARDISO — multi-threaded SPD direct solve. * - ``umfpack`` - ``pip install "femorph-solver[umfpack]"`` - SuiteSparse UMFPACK — sparse LU for non-symmetric systems. * - ``pyamg`` - ``pip install "femorph-solver[pyamg]"`` - Algebraic multigrid preconditioner. * - ``primme`` - ``pip install "femorph-solver[primme]"`` - PRIMME block-Davidson eigensolver. * - ``solvers`` - ``pip install "femorph-solver[solvers]"`` - Convenience: everything except the per-backend quirks. Every optional backend is *detected at call time* via :func:`femorph_solver.solvers.linear.list_linear_solvers` and :func:`femorph_solver.solvers.eigen.list_eigen_solvers` — if an extra isn't installed, the corresponding name drops out of the registry and ``linear_solver="auto"`` falls through to the next best option.