Skip to main content

A supercomputing framework for solving PDEs by hybrid parallelism.

Project description

SOLVCON: a multi-physics, supercomputing software framework for high-fidelity solutions of partial differential equations (PDEs) by hybrid parallelism.

SOLVCON facilitates rapid devlopment of PDE solvers for massively parallel computing. C or CUDA is used for fast number-crunching. SOLVCON is designed for extension to various physical processes. Numerical algorithms and physical models are pluggable. Sub-package solvcon.kerpak contains default implementations. The default numerical algorithm in SOLVCON is the space-time Conservation Element and Solution Element (CESE) method, which was originally developed by Sin-Chung Chang at NASA Glenn Research Center. The CESE method solves generic, first-order, hyperbolic PDEs.

SOLVCON is released under GNU GPLv2, and developed by Yung-Yu Chen and Sheng-Tao John Yu.

Key Features

  • Multi-physics: Pluggable physical models by the built-in CESE solvers
  • Complex geometry: 2/3D unstructured mesh consisting of mixed shapes
  • Massively parallel: Automatic domain decomposition with MPI or socket
  • GPGPU computing: Hybrid parallelism with CUDA
  • Large data set: In situ visualization by VTK and parallel I/O
  • I/O formats: VTK, GAMBIT Neutral, CUBIT Genesis/ExodosII, etc.
  • Productive work flow: Integration to batch systems, e.g., Torque


The C codes in SOLVCON are intentionally made to be standard shared libraries rather than Python extension modules. SOLVCON uses ctypes to load and call these binary codes. In this way, the binary codes can be flexibly built and optimized for performance. Hence, installing SOLVCON requires building these libraries. SOLVCON uses SCons as the binary builder.

For SOLVCON to be built and run, it requires the following packages: (i) Python 2.6, (ii) SCons, (iii) a C compiler, gcc or icc is OK, (iv) Numpy, (v) LAPACK, (vi) NetCDF higher than version 4, and (vii) METIS version 4 for graph partitioning (SOLVCON will download it for you on building). Optional dependencies include: (i) SCOTCH (higher than version 5.1) as an alternative of METIS, (ii) Nose for running unit tests, (iii) Epydoc for generating API documentation, and (iv) VTK for in situ visualization. 64-bits Linux is recommended. For Debian or Ubuntu users, they can use the following command to install the dependencies:

$ sudo apt-get install scons build-essential gcc liblapack-pic
  libnetcdf-dev libnetcdf6 netcdf-bin
  python2.6 python2.6-dev python-profiler python-numpy
  libscotch-5.1 python-nose python-epydoc python-vtk

CUDA needs to be separately installed and configured. For using meshes with more then 35 million cells, SCOTCH-5.1 is recommended. METIS-4 has issues on memory allocation for large graphs.

The three steps to install:

  1. Obtain the latest release from . Unpack the source tarball. Let $SCSRC indicate the root directory of unpacked source tree.

  2. Get into the source tree and run SCons to build the binary codes:

    $ cd $SCSRC
    $ scons --download --extract --apply-patches=metislog2
  3. Install everything:

    $ python install

    Optionally, you can install SOLVCON to your home directory. It is useful when you don’t have the root permission on the system. To do this, add the --user when invoking the script:

    $ python install --user

The option --download used above asks the building script to download necessary external source packages, e.g., METIS, from Internet. Option --extract extracts the downloaded packages. Since METIS is incompatible to the current release of gcc, a patch is supplied with SOLVCON and can be automatically applied to the downloaded METIS source with the --apply-patches option.

Install from Repository

To use the latest source from the code repository, you need to use Mercurial to clone the repository to your local disk:

$ sudo apt-get install mercurial
$ hg clone

and then follow steps 2 and 3.


If you want to rebuild and reinstall, you can run:

$ cd $SCSRC
$ scons
$ python install

without using the options --download, --extract, and --apply-patches. If you want a clean rebuild, run scons -c before scons. Note, scons -c does not remove the unpacked source, so you don’t need to reapply the patches unless you manually deleted it.

Unit Test

If you have Nose installed, you can run:

$ nosetests

inside the source tree for unit tests. To test installed version, use the following command instead:

$ python -c 'import solvcon; solvcon.test()'

When testing installed version, make sure your current directory does not have a sub-directory named as solvcon.

Because SOLVCON uses ssh as its default approach for remote procedure call (RPC), you need to set up the public key authentication for ssh, or some of the unit tests for RPC could fail. Some tests using optional libraries could be skipped (indicated by S), if you do not have the libraries installed. Everything else should pass.

Project details

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page