Skip to content

Replace modmetis with Scotch library

Dave Moxey requested to merge dmoxey/nektar:feature/scotch-multilevel into master

This MR reworks SubStructuredGraph in MultiRegions to remove the dependency on modmetis from Nektar++ and replace it with Scotch. Consequently, Nektar++ doesn't rely on any libraries that can't be found in standard distributions (asides from GSLib), which should make packaging easier. Primarily, this change is required because METIS does not expose the separator used to perform nested dissection reordering, whereas in Scotch it is part of the API.

  • NEKTAR_USE_SCOTCH is now enabled by default, asides from on Windows platforms where it won't compile without mingw32, which we don't support.
  • If NEKTAR_USE_SCOTCH is disabled, multi-level static condensation is also disabled (so Windows no longer supports multi-level static condensation). In this case, the default serial GlobalSysSoln is set to DirectStaticCond. Trying to use one of the multi-level static condensation solvers will trip an ASSERT in SubStructuredGraph.
  • METIS can be enabled by selecting the NEKTAR_USE_METIS, in which case it becomes the default partitioner. --use-metis and --use-scotch can be used as before.
  • Scotch version has been bumped to latest upstream stable release (6.0.4)
  • Most regression test changes are to change --use-metis to --use-scotch. Consequently, I've had to adjust a few regression tests. These still converge with increased p, but from previous merges I recall that our implementation of FwdTrans_BndConstrained results in slightly different evaluations of boundary conditions between different choices of partitions for some cases, particularly the prism tests in MultiRegions which are quite coarse.
Edited by Dave Moxey

Merge request reports