SincLib Introduction
SincLib is a high-level library written to implement various numerical recipes for sinc methods. It aims to be accessible for others to easily modify while still being relatively high-performance. This page is the best place to start learning about SincLib.
SincLib is a library written in python that implements several numerical recipes using sinc methods. Many of the algorithms presented in Lund and Bower's book, "Sinc Methods for Quadrature and Differential Equations" are covered, including:
By using the python programming language with parts implemented in C for speed, SincLib attempts to be reasonably accessible for all, while also being high-performance. Currently, it takes a moderate amount of skill to download and install, but attempts will be made to simplify installation.
Several preconditioners and solution methods (especially iterative methods) are considered, as well as parallel implementations using PETSc.
- Sinc quadratures (definite integrals).
- First order ordinary differential equations (ODE), including mixed boundary conditions.
- Second order ODEs, including mixed boundary conditions.
- System of nonlinear first-order ODE IVPs.
- Sturm-Lioville equations.
- Several PDEs:
- The heat equation with Dirichlet BCs or mixed BCs.
- Laplace's equation with Dirichlet boundary conditions.
- Schrodinger's equation (simple examples working, but will continue to be extended).
- Burger's equation (implementation needs further work).
- Sinc-based method of lines.
By using the python programming language with parts implemented in C for speed, SincLib attempts to be reasonably accessible for all, while also being high-performance. Currently, it takes a moderate amount of skill to download and install, but attempts will be made to simplify installation.
Several preconditioners and solution methods (especially iterative methods) are considered, as well as parallel implementations using PETSc.
SincLib Documentation
As with any open source library, writing decent documentation is as equally hard as implementing the library itself. Here is the current documentation:- Installation.
- Notation, Naming Conventions, and Conformal Mappings. Some of the sinc-related details of the implementations.
- Using SincLib. Covers definite integration and various ODEs.
- Using SincLib, Part 2. Covers systems of ODEs and PDEs.
- Writing code with SincLib.
- Walkthrough of SincLib code.
- SincLib Optimizations.
Downloads
Prerequisite Code
There are several prerequisite to using SincLib:- Python (version 2.4 or better). A general purpose programming language; this is pre-installed on modern Linux and Mac OS X distributions. http://www.python.org/
- Numpy. (version 1.0 or better). A fast implementation of numerical arrays for Python. http://numpy.org.
- When numpy compiles, it will attempt to find system versions of LAPACK, BLAS, ATLAS, and/or other numerical libraries. If it does not find the core BLAS routines, it will compile a library called lapack_lite for itself. The lapack_lite source is taken from the reference BLAS implementations; it will have respectable performance, but nowhere near optimal.
- Scipy. (version 0.5.2 or better). A comprehensive numerical library for Python written on top of Numpy. http://scipy.org.
- Matplotlib. (version 0.87.0 or better). A plotting library for Python written on top of numpy; it is very powerful, and its usage in SincLib barely scratches the surface of what it can do. http://matplotlib.sourceforge.net/.
Prerequisites for Parallel SincLib
- MPI. Any vendor provided or freely available version of the MPI standard will work. MPICH can be installed automatically by PETSc, or OpenMPI may be used. OpenMPI is currently at version 1.2. http://www.open-mpi.org/
- PETSc (version 2.3.3 or higher). A numerical library developed at Argonne National Laboratory. http://www-unix.mcs.anl.gov/petsc/petsc-as/
- petsc4py (version 0.7.5 or higher). Python bindings for PETSc; petsc4py version must be at least 0.7.5 http://www.cimec.org.ar/python/petsc4py.html
- SLEPc (version 2.3.3 or higher). An iterative eigenproblem solver for very large systems, built on top of PETSc. http://www.grycap.upv.es/slepc/
- slepc4py (available only from source code). Python bindings for SLEPc. http://t2.unl.edu/documentation/slepc4py
SincLib Binaries
Linux 32-bit binaries (which should work on 64-bit computers) are available at the following link:- http://t2.unl.edu/store/SincDeps.tar.bz2 - for i686 Red Hat Enterprise Linux 3 (although it should work for most linux distros with 2.4 kernels).
- http://t2.unl.edu/store/SincDeps-fc6.tar.bz2 - for i686 Fedora Core 6 computers.
SincLib Source Code
Currently, there is no released version of SincLib. It is still being heavily developed, and we suggest only using the developer code available in the UNL subversion repository. It is available here:svn://t2.unl.edu/brian/SincMethodsIn order to download it, you need to use the subversion tool, available for download at http://subversion.tigris.org/. Many modern Linux distributions have the tool built-in (with versions available at the above link for Mac OS X and Windows). From a command prompt in the desired installation directory (I personally install it to ~/projects/SincMethods), type this command:
svn co svn://t2.unl.edu/brian/SincMethodsUse the installation guide to continue from here.