APBS is a software package for the numerical solution of the Poisson-Boltzmann equation (PBE), one of the most popular continuum models for describing electrostatic interactions between molecular solutes in salty, aqueous media. Continuum electrostatics plays an important role in several areas of biomolecular simulation, including simulation of diffusional processes to determine ligand-protein and protein-protein binding kinetics, implicit solvent molecular dynamics of biomolecules, solvation and binding energy calculations to determine ligand-protein and protein-protein equilibrium binding constants and aid in rational drug design, and biomolecular titration studies.
The ATLAS (Automatically Tuned Linear Algebra Software) project is an ongoing research effort focusing on applying empirical techniques in order to provide portable performance. It provides C and Fortran77 interfaces to a portably efficient BLAS implementation, as well as a few routines from LAPACK.
GetDP is a general finite element solver using mixed elements to discretize de Rham-type complexes in one, two, and three dimensions. The main feature of GetDP is the closeness between the input data defining discrete problems (written by the user in ASCII data files) and the symbolic mathematical expressions of these problems.
MathGL is a library for making high-quality scientific graphics under Linux and Windows, fast data plotting and handling of large data arrays, working in window and console modes, and easily embedding into other programs. It has more than 40 general types of graphics for 1d, 2d, and 3d data arrays. It can export graphics to raster and vector (EPS or SVG) formats. It has an OpenGL interface and can be used from console programs. It has functions for data handling and MGL language scripting for simplification of data plotting. It has several types of transparency and smoothed lightning, vector fonts and TeX-like formula drawing, an arbitrary curvilinear coordinate system, and many other useful things.
librsb is a library for sparse matrix computations featuring the Recursive Sparse Blocks (RSB) matrix format. This format allows cache-efficient and multithreaded (that is, shared memory parallel) operations on large sparse matrices. The most common operations necessary to iterative solvers are available (matrix-vector multiplication, triangular solution, rows/columns scaling, diagonal extraction/setting, blocks extraction, norm computation, formats conversion). The RSB format is especially well-suited for symmetric and transposed multiplication variants. On these variants, librsb has been found to be faster than Intel MKL's implementation for CSR. Most numerical kernels code is auto-generated, and the supported numerical types can be chosen by the user at buildtime. librsb implements the Sparse BLAS standard, as specified in the BLAS Forum documents.
LAPACK is a linear algebra library, based on LINPACK and EISPACK, designed to provide routines for handling simultaneous equations and matrix algebra efficiently, particularly on shared memory vector processors, parallel processors, and clusters. The code is written in Fortran, and requires the BLAS (Basic Linear Algebra Subprograms) library.
The Chombo package provides a set of tools for implementing finite difference methods for the solution of partial differential equations on block-structured adaptively refined rectangular grids. Both elliptic and time-dependent modules are included. Support for parallel platforms and standardized self-describing file formats are included.
SUNDIALS (SUite of Nonlinear and DIfferential/ALgebraic equation Solvers) provides robust time integrators and nonlinear solvers that can easily be incorporated into existing simulation codes. It requires minimal information from the user, allow users to easily supply their own data structures underneath the solvers, and allows for easy incorporation of user-supplied linear solvers and preconditioners.
ESMF is software for building and coupling weather, climate, and related models. The premise is that complicated applications should be broken up into smaller pieces, or components. A component is a unit of software composition that has a coherent function, and a standard calling interface and behavior. Components can be assembled to create multiple applications, and different implementations of a component may be available.