PERMON core QP solver (PermonQP)
Clone or download

PERMON toolbox

PERMON (Parallel Efficient Robust Modular Object Numerical) is a software toolbox for quadratic programming (QP) based on PETSc. It also includes domain decomposition methods (FETI and Total FETI) as a specific QP implementation.

Project homepage:

PERMON contains following modules:

  • PermonQP - contains QP transformations and solvers
  • PermonFLLOP - (FETI Light Layer On top of PETSc) implements (Total) FETI

Support Vector Machines (SVMs) implementation PermonSVM based on PermonQP can be found at

Please use GitHub for issues and pull requests.

Quick guide to PERMON installation

  1. set environment variables PETSC_DIR and PETSC_ARCH pointing to a PETSc instance

    • PETSC_ARCH is empty in case of "prefix" PETSc installation
    • for more details about PETSc installation and the two environment variables, see PETSc documentation
  2. set PERMON_DIR variable pointing to the PERMON directory (probably this file's parent directory)

  3. build PERMON simply using makefile (makes use of PETSc buildsystem):


  4. if the build is successful, there is a new subdirectory named $PETSC_ARCH, the program library is $PETSC_ARCH/lib/libpermon.{so,a}

    • shared library (.so) is built only if PETSc has been configured with option --with-shared-libraries
    • all compiler settings are inherited from PETSc

Documentation and examples

The documentation of the routines is available at There are several examples in the examples directory illustrating the basic usage of both modules.

Supported PETSc versions

PERMON tries to support newest versions of PETSc as soon as possible. The releases are tagged with major.minor.sub-minor numbers. The major.minor numbers correspond to the major.minor release numbers of the supported PETSc version.